aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am25
-rw-r--r--src/idocalendarmenuitem.c181
-rw-r--r--src/idocalendarmenuitem.h18
-rw-r--r--src/idoentrymenuitem.c61
-rw-r--r--src/idogesturemanager.c688
-rw-r--r--src/idogesturemanager.h162
-rw-r--r--src/idomessagedialog.c20
-rw-r--r--src/idomessagedialog.h2
-rw-r--r--src/idorange.c2
-rw-r--r--src/idorange.h2
-rw-r--r--src/idoscalemenuitem.c49
-rw-r--r--src/idoscalemenuitem.h6
-rw-r--r--src/idotimeline.c4
-rw-r--r--src/idotimeline.h2
-rw-r--r--src/libido.h1
15 files changed, 268 insertions, 955 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index d17482d..5ac5a01 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,3 +1,11 @@
+if USE_GTK3
+VER=3
+lib_LTLIBRARIES = libido3-0.1.la
+else
+VER=
+lib_LTLIBRARIES = libido-0.1.la
+endif
+
ido_built_public_sources = \
idotypebuiltins.h
@@ -8,7 +16,6 @@ stamp_files = \
sources_h = \
idocalendarmenuitem.h \
idoentrymenuitem.h \
- idogesturemanager.h \
idomessagedialog.h \
idorange.h \
idoscalemenuitem.h \
@@ -41,28 +48,24 @@ INCLUDES = \
-DLIBDIR=\"$(libdir)"\" \
-DG_DISABLE_DEPRECATED \
-DGDK_PIXBUF_DISABLE_DEPRECATED \
- -DGDK_DISABLE_DEPRECATED \
- -DGTK_DISABLE_DEPRECATED
+ -DGDK_DISABLE_DEPRECATED
AM_CPPFLAGS = \
$(GCC_FLAGS) \
$(GTK_CFLAGS) \
- $(GEIS_CFLAGS) \
$(MAINTAINER_CFLAGS)
-lib_LTLIBRARIES = libido-0.1.la
-
libido_0_1_la_SOURCES = \
idotypebuiltins.c \
idocalendarmenuitem.c \
idoentrymenuitem.c \
- idogesturemanager.c \
idomessagedialog.c \
idorange.c \
idoscalemenuitem.c \
idotimeline.c
+libido3_0_1_la_SOURCES = $(libido_0_1_la_SOURCES)
-libidoincludedir=$(includedir)/libido-0.1/libido
+libidoincludedir=$(includedir)/libido$(VER)-0.1/libido
libidoinclude_HEADERS = \
idocalendarmenuitem.h \
@@ -73,10 +76,10 @@ libidoinclude_HEADERS = \
idotimeline.h \
libido.h
-libido_0_1_la_LIBADD = $(GTK_LIBS) $(GEIS_LIBS)
+libido_0_1_la_LIBADD = $(GTK_LIBS)
libido_0_1_la_LDFLAGS = $(GTK_LT_LDFLAGS)
-
-idoheadersdir = $(includedir)/ido-0.1/ido
+libido3_0_1_la_LIBADD = $(libido_0_1_la_LIBADD)
+libido3_0_1_la_LDFLAGS = $(libido_0_1_la_LDFLAGS)
DISTCLEANFILES = \
stamp-idotypebuiltins.h \
diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c
index fca4bb6..806c863 100644
--- a/src/idocalendarmenuitem.c
+++ b/src/idocalendarmenuitem.c
@@ -26,8 +26,13 @@
#include <gdk/gdkkeysyms.h>
#include "idocalendarmenuitem.h"
+#if GTK_CHECK_VERSION (3, 0, 0)
+static void ido_calendar_menu_item_select (GtkMenuItem *item);
+static void ido_calendar_menu_item_deselect (GtkMenuItem *item);
+#else
static void ido_calendar_menu_item_select (GtkItem *item);
static void ido_calendar_menu_item_deselect (GtkItem *item);
+#endif
static gboolean ido_calendar_menu_item_button_release (GtkWidget *widget,
GdkEventButton *event);
static gboolean ido_calendar_menu_item_button_press (GtkWidget *widget,
@@ -42,7 +47,12 @@ static void calendar_realized_cb (GtkWidget *widg
static void calendar_move_focus_cb (GtkWidget *widget,
GtkDirectionType direction,
IdoCalendarMenuItem *item);
-
+static void calendar_month_changed_cb (GtkWidget *widget,
+ gpointer user_data);
+static void calendar_day_selected_double_click_cb (GtkWidget *widget,
+ gpointer user_data);
+static void calendar_day_selected_cb (GtkWidget *widget,
+ gpointer user_data);
struct _IdoCalendarMenuItemPrivate
{
GtkWidget *box;
@@ -60,34 +70,51 @@ ido_calendar_menu_item_class_init (IdoCalendarMenuItemClass *klass)
GObjectClass *gobject_class;
GtkWidgetClass *widget_class;
GtkMenuItemClass *menu_item_class;
+#if ! GTK_CHECK_VERSION (3, 0, 0)
GtkItemClass *item_class;
+#endif
gobject_class = G_OBJECT_CLASS (klass);
widget_class = GTK_WIDGET_CLASS (klass);
menu_item_class = GTK_MENU_ITEM_CLASS (klass);
+#if ! GTK_CHECK_VERSION (3, 0, 0)
item_class = GTK_ITEM_CLASS (klass);
+#endif
widget_class->button_release_event = ido_calendar_menu_item_button_release;
widget_class->button_press_event = ido_calendar_menu_item_button_press;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ menu_item_class->select = ido_calendar_menu_item_select;
+ menu_item_class->deselect = ido_calendar_menu_item_deselect;
+#else
item_class->select = ido_calendar_menu_item_select;
item_class->deselect = ido_calendar_menu_item_deselect;
+#endif
menu_item_class->hide_on_activate = TRUE;
g_type_class_add_private (gobject_class, sizeof (IdoCalendarMenuItemPrivate));
+
+ g_signal_new("month-changed", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ g_signal_new("day-selected", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ g_signal_new("day-selected-double-click", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
}
static void
ido_calendar_menu_item_init (IdoCalendarMenuItem *item)
{
IdoCalendarMenuItemPrivate *priv;
- GtkBorder border;
-
- border.left = 4;
- border.right = 4;
- border.top = 2;
- border.bottom = 2;
priv = item->priv = IDO_CALENDAR_MENU_ITEM_GET_PRIVATE (item);
@@ -124,7 +151,7 @@ ido_calendar_menu_item_send_focus_change (GtkWidget *widget,
gtk_widget_grab_focus (widget);
event->focus_change.type = GDK_FOCUS_CHANGE;
- event->focus_change.window = g_object_ref (widget->window);
+ event->focus_change.window = g_object_ref (gtk_widget_get_window (widget));
event->focus_change.in = in;
gtk_widget_event (widget, event);
@@ -149,9 +176,9 @@ ido_calendar_menu_item_key_press (GtkWidget *widget,
gtk_widget_event (calendar,
((GdkEvent *)(void*)(event)));
- if (calendar->window != NULL)
+ if (gtk_widget_get_window (calendar) != NULL)
{
- gdk_window_raise (calendar->window);
+ gdk_window_raise (gtk_widget_get_window (calendar));
}
if (!gtk_widget_has_focus (calendar))
@@ -159,7 +186,7 @@ ido_calendar_menu_item_key_press (GtkWidget *widget,
gtk_widget_grab_focus (calendar);
}
- return event->keyval != GDK_Return;
+ return event->keyval != GDK_KEY_Return;
}
return FALSE;
@@ -173,9 +200,9 @@ ido_calendar_menu_item_button_press (GtkWidget *widget,
if (event->button == 1)
{
- if (calendar->window != NULL)
+ if (gtk_widget_get_window (calendar) != NULL)
{
- gdk_window_raise (calendar->window);
+ gdk_window_raise (gtk_widget_get_window (calendar));
}
if (!gtk_widget_has_focus (calendar))
@@ -183,9 +210,6 @@ ido_calendar_menu_item_button_press (GtkWidget *widget,
gtk_widget_grab_focus (calendar);
}
- gtk_widget_event (calendar,
- ((GdkEvent *)(void*)(event)));
-
return TRUE;
}
@@ -198,14 +222,15 @@ ido_calendar_menu_item_button_release (GtkWidget *widget,
{
GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar;
- gtk_widget_event (calendar,
- ((GdkEvent *)(void*)(event)));
-
return TRUE;
}
static void
+#if GTK_CHECK_VERSION (3, 0, 0)
+ido_calendar_menu_item_select (GtkMenuItem *item)
+#else
ido_calendar_menu_item_select (GtkItem *item)
+#endif
{
IDO_CALENDAR_MENU_ITEM (item)->priv->selected = TRUE;
@@ -213,7 +238,11 @@ ido_calendar_menu_item_select (GtkItem *item)
}
static void
+#if GTK_CHECK_VERSION (3, 0, 0)
+ido_calendar_menu_item_deselect (GtkMenuItem *item)
+#else
ido_calendar_menu_item_deselect (GtkItem *item)
+#endif
{
IDO_CALENDAR_MENU_ITEM (item)->priv->selected = FALSE;
@@ -225,16 +254,29 @@ static void
calendar_realized_cb (GtkWidget *widget,
IdoCalendarMenuItem *item)
{
- if (widget->window != NULL)
+ if (gtk_widget_get_window (widget) != NULL)
{
- gdk_window_raise (widget->window);
+ gdk_window_raise (gtk_widget_get_window (widget));
}
- g_signal_connect (GTK_WIDGET (item)->parent,
+ g_signal_connect (gtk_widget_get_parent (GTK_WIDGET (item)),
"key-press-event",
G_CALLBACK (ido_calendar_menu_item_key_press),
item);
-
+
+ g_signal_connect (item->priv->calendar,
+ "month-changed",
+ G_CALLBACK (calendar_month_changed_cb),
+ item);
+ g_signal_connect (item->priv->calendar,
+ "day-selected",
+ G_CALLBACK (calendar_day_selected_cb),
+ item);
+ g_signal_connect (item->priv->calendar,
+ "day-selected-double-click",
+ G_CALLBACK (calendar_day_selected_double_click_cb),
+ item);
+
ido_calendar_menu_item_send_focus_change (widget, TRUE);
}
@@ -250,6 +292,32 @@ calendar_move_focus_cb (GtkWidget *widget,
GTK_DIR_TAB_FORWARD);
}
+static void
+calendar_month_changed_cb (GtkWidget *widget,
+ gpointer user_data)
+{
+ IdoCalendarMenuItem *item = (IdoCalendarMenuItem *)user_data;
+ g_signal_emit_by_name (item, "month-changed", NULL);
+}
+
+static void
+calendar_day_selected_cb (GtkWidget *widget,
+ gpointer user_data)
+{
+ IdoCalendarMenuItem *item = (IdoCalendarMenuItem *)user_data;
+ g_signal_emit_by_name (item, "day-selected", NULL);
+}
+
+static void
+calendar_day_selected_double_click_cb (GtkWidget *widget,
+ gpointer user_data)
+{
+ IdoCalendarMenuItem *item = (IdoCalendarMenuItem *)user_data;
+ guint day, month, year;
+ gtk_calendar_get_date (GTK_CALENDAR (widget), &year, &month, &day);
+ g_signal_emit_by_name (item, "day-selected-double-click", NULL);
+}
+
/* Public API */
GtkWidget *
ido_calendar_menu_item_new (void)
@@ -264,3 +332,70 @@ ido_calendar_menu_item_get_calendar (IdoCalendarMenuItem *item)
return item->priv->calendar;
}
+
+gboolean
+ido_calendar_menu_item_mark_day (IdoCalendarMenuItem *menuitem, guint day)
+{
+ g_return_val_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem), FALSE);
+
+ gtk_calendar_mark_day(GTK_CALENDAR (menuitem->priv->calendar), day);
+ return TRUE;
+}
+
+gboolean
+ido_calendar_menu_item_unmark_day (IdoCalendarMenuItem *menuitem, guint day)
+{
+ g_return_val_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem), FALSE);
+
+ gtk_calendar_unmark_day(GTK_CALENDAR (menuitem->priv->calendar), day);
+ return TRUE;
+}
+
+void
+ido_calendar_menu_item_clear_marks (IdoCalendarMenuItem *menuitem)
+{
+ g_return_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem));
+
+ gtk_calendar_clear_marks(GTK_CALENDAR (menuitem->priv->calendar));
+}
+
+void
+ido_calendar_menu_item_set_display_options (IdoCalendarMenuItem *menuitem, GtkCalendarDisplayOptions flags)
+{
+ g_return_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem));
+
+ gtk_calendar_set_display_options (GTK_CALENDAR (menuitem->priv->calendar), flags);
+}
+
+GtkCalendarDisplayOptions
+ido_calendar_menu_item_get_display_options (IdoCalendarMenuItem *menuitem)
+{
+ g_return_val_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem), 0);
+
+ return gtk_calendar_get_display_options (GTK_CALENDAR (menuitem->priv->calendar));
+}
+
+void
+ido_calendar_menu_item_get_date (IdoCalendarMenuItem *menuitem,
+ guint *year,
+ guint *month,
+ guint *day) {
+
+ g_return_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem));
+ gtk_calendar_get_date (GTK_CALENDAR (menuitem->priv->calendar), year, month, day);
+}
+
+gboolean
+ido_calendar_menu_item_set_date (IdoCalendarMenuItem *menuitem,
+ guint year,
+ guint month,
+ guint day)
+{
+ g_return_val_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem), FALSE);
+ gtk_calendar_select_month (GTK_CALENDAR (menuitem->priv->calendar), month, year);
+ gtk_calendar_select_day (GTK_CALENDAR (menuitem->priv->calendar), day);
+ return TRUE;
+}
+
+
+
diff --git a/src/idocalendarmenuitem.h b/src/idocalendarmenuitem.h
index 3f9bf96..c4833fb 100644
--- a/src/idocalendarmenuitem.h
+++ b/src/idocalendarmenuitem.h
@@ -53,11 +53,23 @@ struct _IdoCalendarMenuItemClass
GtkMenuItemClass parent_class;
};
-GType ido_calendar_menu_item_get_type (void) G_GNUC_CONST;
+GType ido_calendar_menu_item_get_type (void) G_GNUC_CONST;
-GtkWidget *ido_calendar_menu_item_new (void);
+GtkWidget *ido_calendar_menu_item_new (void);
GtkWidget *ido_calendar_menu_item_get_calendar (IdoCalendarMenuItem *menuitem);
-
+gboolean ido_calendar_menu_item_mark_day (IdoCalendarMenuItem *menuitem, guint day);
+gboolean ido_calendar_menu_item_unmark_day (IdoCalendarMenuItem *menuitem, guint day);
+void ido_calendar_menu_item_clear_marks (IdoCalendarMenuItem *menuitem);
+void ido_calendar_menu_item_set_display_options (IdoCalendarMenuItem *menuitem, GtkCalendarDisplayOptions flags);
+GtkCalendarDisplayOptions ido_calendar_menu_item_get_display_options (IdoCalendarMenuItem *menuitem);
+void ido_calendar_menu_item_get_date (IdoCalendarMenuItem *menuitem,
+ guint *year,
+ guint *month,
+ guint *day);
+gboolean ido_calendar_menu_item_set_date (IdoCalendarMenuItem *menuitem,
+ guint year,
+ guint month,
+ guint day);
G_END_DECLS
#endif /* __IDO_CALENDAR_MENU_ITEM_H__ */
diff --git a/src/idoentrymenuitem.c b/src/idoentrymenuitem.c
index 251d108..1636da9 100644
--- a/src/idoentrymenuitem.c
+++ b/src/idoentrymenuitem.c
@@ -26,8 +26,13 @@
#include <gdk/gdkkeysyms.h>
#include "idoentrymenuitem.h"
+#if GTK_CHECK_VERSION (3, 0, 0)
+static void ido_entry_menu_item_select (GtkMenuItem *item);
+static void ido_entry_menu_item_deselect (GtkMenuItem *item);
+#else
static void ido_entry_menu_item_select (GtkItem *item);
static void ido_entry_menu_item_deselect (GtkItem *item);
+#endif
static gboolean ido_entry_menu_item_button_release (GtkWidget *widget,
GdkEventButton *event);
static gboolean ido_entry_menu_item_key_press (GtkWidget *widget,
@@ -60,18 +65,27 @@ ido_entry_menu_item_class_init (IdoEntryMenuItemClass *klass)
GObjectClass *gobject_class;
GtkWidgetClass *widget_class;
GtkMenuItemClass *menu_item_class;
+#if ! GTK_CHECK_VERSION (3, 0, 0)
GtkItemClass *item_class;
+#endif
gobject_class = G_OBJECT_CLASS (klass);
widget_class = GTK_WIDGET_CLASS (klass);
menu_item_class = GTK_MENU_ITEM_CLASS (klass);
+#if ! GTK_CHECK_VERSION (3, 0, 0)
item_class = GTK_ITEM_CLASS (klass);
+#endif
widget_class->button_release_event = ido_entry_menu_item_button_release;
widget_class->button_press_event = ido_entry_menu_item_button_press;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ menu_item_class->select = ido_entry_menu_item_select;
+ menu_item_class->deselect = ido_entry_menu_item_deselect;
+#else
item_class->select = ido_entry_menu_item_select;
item_class->deselect = ido_entry_menu_item_deselect;
+#endif
menu_item_class->hide_on_activate = TRUE;
@@ -118,11 +132,11 @@ is_key_press_valid (IdoEntryMenuItem *item,
{
switch (key)
{
- case GDK_Escape:
- case GDK_Up:
- case GDK_Down:
- case GDK_KP_Up:
- case GDK_KP_Down:
+ case GDK_KEY_Escape:
+ case GDK_KEY_Up:
+ case GDK_KEY_Down:
+ case GDK_KEY_KP_Up:
+ case GDK_KEY_KP_Down:
return FALSE;
default:
@@ -145,21 +159,11 @@ ido_entry_menu_item_key_press (GtkWidget *widget,
gtk_widget_event (entry,
((GdkEvent *)(void*)(event)));
- if (entry->window != NULL)
- {
- gdk_window_raise (entry->window);
- }
-
- if (!gtk_widget_has_focus (entry))
- {
- gtk_widget_grab_focus (entry);
- }
-
- /* We've handled the event, but if the key was GDK_Return
+ /* We've handled the event, but if the key was GDK_KEY_Return
* we still want to forward the event up to the menu shell
* to ensure that the menuitem receives the activate signal.
*/
- return event->keyval != GDK_Return;
+ return event->keyval != GDK_KEY_Return;
}
return FALSE;
@@ -173,11 +177,8 @@ ido_entry_menu_item_send_focus_change (GtkWidget *widget,
g_object_ref (widget);
- if (in)
- gtk_widget_grab_focus (widget);
-
event->focus_change.type = GDK_FOCUS_CHANGE;
- event->focus_change.window = g_object_ref (widget->window);
+ event->focus_change.window = g_object_ref (gtk_widget_get_window (widget));
event->focus_change.in = in;
gtk_widget_event (widget, event);
@@ -196,9 +197,9 @@ ido_entry_menu_item_button_press (GtkWidget *widget,
if (event->button == 1)
{
- if (entry->window != NULL)
+ if (gtk_widget_get_window (entry) != NULL)
{
- gdk_window_raise (entry->window);
+ gdk_window_raise (gtk_widget_get_window (entry));
}
if (!gtk_widget_has_focus (entry))
@@ -228,7 +229,11 @@ ido_entry_menu_item_button_release (GtkWidget *widget,
}
static void
+#if GTK_CHECK_VERSION (3, 0, 0)
+ido_entry_menu_item_select (GtkMenuItem *item)
+#else
ido_entry_menu_item_select (GtkItem *item)
+#endif
{
IDO_ENTRY_MENU_ITEM (item)->priv->selected = TRUE;
@@ -236,7 +241,11 @@ ido_entry_menu_item_select (GtkItem *item)
}
static void
+#if GTK_CHECK_VERSION (3, 0, 0)
+ido_entry_menu_item_deselect (GtkMenuItem *item)
+#else
ido_entry_menu_item_deselect (GtkItem *item)
+#endif
{
IDO_ENTRY_MENU_ITEM (item)->priv->selected = FALSE;
@@ -248,12 +257,12 @@ static void
entry_realized_cb (GtkWidget *widget,
IdoEntryMenuItem *item)
{
- if (widget->window != NULL)
+ if (gtk_widget_get_window (widget) != NULL)
{
- gdk_window_raise (widget->window);
+ gdk_window_raise (gtk_widget_get_window (widget));
}
- g_signal_connect (GTK_WIDGET (item)->parent,
+ g_signal_connect (gtk_widget_get_parent (GTK_WIDGET (item)),
"key-press-event",
G_CALLBACK (ido_entry_menu_item_key_press),
item);
diff --git a/src/idogesturemanager.c b/src/idogesturemanager.c
deleted file mode 100644
index f603816..0000000
--- a/src/idogesturemanager.c
+++ /dev/null
@@ -1,688 +0,0 @@
-/*
- * Copyright 2010 Canonical, Ltd.
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of either or both of the following licenses:
- *
- * 1) the GNU Lesser General Public License version 3, as published by the
- * Free Software Foundation; and/or
- * 2) the GNU Lesser General Public License version 2.1, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranties of
- * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the applicable version of the GNU Lesser General Public
- * License for more details.
- *
- * You should have received a copy of both the GNU Lesser General Public
- * License version 3 and version 2.1 along with this program. If not, see
- * <http://www.gnu.org/licenses/>
- *
- * Authors:
- * Cody Russell <crussell@canonical.com>
- */
-
-#include "idogesturemanager.h"
-
-#include <gdk/gdkx.h>
-#include <geis/geis.h>
-
-typedef struct _IdoGestureRegistration IdoGestureRegistration;
-typedef struct _IdoGestureBinding IdoGestureBinding;
-
-struct _IdoGestureManagerPrivate
-{
- GHashTable *hash;
-};
-
-struct _IdoGestureBinding
-{
- IdoGestureType type;
- IdoGestureCallback start;
- IdoGestureCallback update;
- IdoGestureCallback end;
-};
-
-struct _IdoGestureRegistration
-{
- GtkWindow *window;
- GList *bindings;
- GeisInstance instance;
-};
-
-static void gesture_added (void *cookie,
- GeisGestureType gesture_type,
- GeisGestureId gesture_id,
- GeisSize attr_count,
- GeisGestureAttr *attrs);
-
-static void gesture_removed (void *cookie,
- GeisGestureType gesture_type,
- GeisGestureId gesture_id,
- GeisSize attr_count,
- GeisGestureAttr *attrs);
-
-static void gesture_start (void *cookie,
- GeisGestureType gesture_type,
- GeisGestureId gesture_id,
- GeisSize attr_count,
- GeisGestureAttr *attrs);
-
-static void gesture_update (void *cookie,
- GeisGestureType gesture_type,
- GeisGestureId gesture_id,
- GeisSize attr_count,
- GeisGestureAttr *attrs);
-
-static void gesture_finish (void *cookie,
- GeisGestureType gesture_type,
- GeisGestureId gesture_id,
- GeisSize attr_count,
- GeisGestureAttr *attrs);
-
-static IdoGestureManager *manager_singleton = NULL;
-static GeisGestureFuncs gesture_funcs = {
- gesture_added,
- gesture_removed,
- gesture_start,
- gesture_update,
- gesture_finish
-};
-
-G_DEFINE_TYPE (IdoGestureManager, ido_gesture_manager, G_TYPE_OBJECT)
-
-#define IDO_GESTURE_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IDO_TYPE_GESTURE_MANAGER, IdoGestureManagerPrivate))
-
-static void
-ido_gesture_manager_dispose (GObject *object)
-{
- IdoGestureManagerPrivate *priv = IDO_GESTURE_MANAGER (object)->priv;
-
- if (priv->hash != NULL)
- {
- g_hash_table_unref (priv->hash);
- }
-}
-
-static GObject *
-ido_gesture_manager_constructor (GType type,
- guint n_params,
- GObjectConstructParam *params)
-{
- GObject *object;
-
- if (manager_singleton != NULL)
- {
- object = g_object_ref (manager_singleton);
- }
- else
- {
- object = G_OBJECT_CLASS (ido_gesture_manager_parent_class)->constructor (type,
- n_params,
- params);
-
- manager_singleton = IDO_GESTURE_MANAGER (object);
- g_object_add_weak_pointer (object, (gpointer) &manager_singleton);
- }
-
- return object;
-}
-
-static void
-ido_gesture_manager_class_init (IdoGestureManagerClass *class)
-{
- GObjectClass *gobject_class;
-
- gobject_class = G_OBJECT_CLASS (class);
-
- ido_gesture_manager_parent_class = g_type_class_peek_parent (class);
-
- g_type_class_add_private (gobject_class, sizeof (IdoGestureManagerPrivate));
-
- gobject_class->constructor = ido_gesture_manager_constructor;
- gobject_class->dispose = ido_gesture_manager_dispose;
-}
-
-/*
-static void
-print_attr (GeisGestureAttr *attr)
-{
- return;
-
- g_print ("\tattr '%s'=", attr->name);
- switch (attr->type)
- {
- case GEIS_ATTR_TYPE_BOOLEAN:
- g_print ("%s\n", attr->boolean_val ? "true" : "false");
- break;
- case GEIS_ATTR_TYPE_FLOAT:
- g_print ("%f\n", attr->float_val);
- break;
- case GEIS_ATTR_TYPE_INTEGER:
- g_print ("%d\n", (gint)attr->integer_val);
- break;
- case GEIS_ATTR_TYPE_STRING:
- g_print ("\"%s\"\n", attr->string_val);
- break;
- default:
- g_print ("<unknown>\n");
- break;
- }
-}
-*/
-
-static void
-pinch_gesture_handle_properties (IdoEventGesturePinch *event,
- GeisSize attr_count,
- GeisGestureAttr *attrs)
-{
- gint i = 0;
-
- for (i = 0; i < attr_count; ++i)
- {
- if (g_strcmp0 (attrs[i].name, "timestamp") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_INTEGER)
- {
- event->timestamp = attrs[i].integer_val;
- }
- else if (g_strcmp0 (attrs[i].name, "focus X") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->focus_x = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "focus Y") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->focus_y = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "radius delta") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->radius_delta = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "radial velocity") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->radial_velocity = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "radius") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->radius = attrs[i].float_val;
- }
- }
-}
-
-static void
-drag_gesture_handle_properties (IdoEventGestureDrag *event,
- GeisSize attr_count,
- GeisGestureAttr *attrs)
-{
- gint i;
-
- for (i = 0; i < attr_count; ++i)
- {
- if (g_strcmp0 (attrs[i].name, "timestamp") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_INTEGER)
- {
- event->timestamp = attrs[i].integer_val;
- }
- else if (g_strcmp0 (attrs[i].name, "focus X") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->focus_x = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "focus Y") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->focus_y = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "delta X") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->delta_x = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "delta Y") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->delta_y = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "velocity X") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->velocity_x = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "velocity Y") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->velocity_y = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "position X") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->position_x = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "position Y") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->position_y = attrs[i].float_val;
- }
- }
-}
-
-static void
-rotate_gesture_handle_properties (IdoEventGestureRotate *event,
- GeisSize attr_count,
- GeisGestureAttr *attrs)
-{
- gint i;
-
- for (i = 0; i < attr_count; ++i)
- {
- if (g_strcmp0 (attrs[i].name, "timestamp") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_INTEGER)
- {
- event->timestamp = attrs[i].integer_val;
- }
- else if (g_strcmp0 (attrs[i].name, "focus X") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->focus_x = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "focus Y") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->focus_y = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "angle delta") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->angle_delta = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "angular velocity") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->angular_velocity = attrs[i].float_val;
- }
- else if (g_strcmp0 (attrs[i].name, "angle") == 0 &&
- attrs[i].type == GEIS_ATTR_TYPE_FLOAT)
- {
- event->angle = attrs[i].float_val;
- }
- }
-}
-
-
-static void
-gesture_added (void *cookie,
- GeisGestureType gesture_type,
- GeisGestureId gesture_id,
- GeisSize attr_count,
- GeisGestureAttr *attrs)
-{
-}
-
-static void
-gesture_removed (void *cookie,
- GeisGestureType gesture_type,
- GeisGestureId gesture_id,
- GeisSize attr_count,
- GeisGestureAttr *attrs)
-{
-}
-
-static void
-gesture_start (void *cookie,
- GeisGestureType type,
- GeisGestureId id,
- GeisSize attr_count,
- GeisGestureAttr *attrs)
-{
- IdoGestureRegistration *reg = (IdoGestureRegistration *)cookie;
- GList *l = NULL;
-
- for (l = reg->bindings; l != NULL; l = l->next)
- {
- IdoGestureBinding *binding = (IdoGestureBinding *)l->data;
-
- if (binding->type == type)
- {
- if (type == IDO_GESTURE_DRAG1 ||
- type == IDO_GESTURE_DRAG2 ||
- type == IDO_GESTURE_DRAG3 ||
- type == IDO_GESTURE_DRAG4 ||
- type == IDO_GESTURE_DRAG5)
- {
- IdoEventGestureDrag drag;
-
- drag.type = type;
- drag.id = id;
-
- drag_gesture_handle_properties (&drag,
- attr_count,
- attrs);
-
- binding->start (reg->window,
- ((IdoGestureEvent*)&drag));
- }
- else if (type == IDO_GESTURE_PINCH1 ||
- type == IDO_GESTURE_PINCH2 ||
- type == IDO_GESTURE_PINCH3 ||
- type == IDO_GESTURE_PINCH4 ||
- type == IDO_GESTURE_PINCH5)
- {
- IdoEventGesturePinch pinch;
-
- pinch.type = type;
- pinch.id = id;
-
- pinch_gesture_handle_properties (&pinch,
- attr_count,
- attrs);
-
- binding->start (reg->window,
- ((IdoGestureEvent*)&pinch));
- }
- else if (type == IDO_GESTURE_ROTATE1 ||
- type == IDO_GESTURE_ROTATE2 ||
- type == IDO_GESTURE_ROTATE3 ||
- type == IDO_GESTURE_ROTATE4 ||
- type == IDO_GESTURE_ROTATE5)
- {
- IdoEventGestureRotate rotate;
-
- rotate.type = type;
- rotate.id = id;
-
- rotate_gesture_handle_properties (&rotate,
- attr_count,
- attrs);
-
- binding->start (reg->window,
- ((IdoGestureEvent*)&rotate));
- }
-
- return;
- }
- }
-}
-
-static void
-gesture_update (void *cookie,
- GeisGestureType type,
- GeisGestureId id,
- GeisSize attr_count,
- GeisGestureAttr *attrs)
-{
- IdoGestureRegistration *reg = (IdoGestureRegistration *)cookie;
- GList *l = NULL;
-
- for (l = reg->bindings; l != NULL; l = l->next)
- {
- IdoGestureBinding *binding = (IdoGestureBinding *)l->data;
-
- if (binding->type == type)
- {
- if (type == IDO_GESTURE_DRAG1 ||
- type == IDO_GESTURE_DRAG2 ||
- type == IDO_GESTURE_DRAG3 ||
- type == IDO_GESTURE_DRAG4 ||
- type == IDO_GESTURE_DRAG5)
- {
- IdoEventGestureDrag drag;
-
- drag.type = type;
- drag.id = id;
-
- drag_gesture_handle_properties (&drag,
- attr_count,
- attrs);
-
- binding->update (reg->window,
- ((IdoGestureEvent*)&drag));
- }
- else if (type == IDO_GESTURE_PINCH1 ||
- type == IDO_GESTURE_PINCH2 ||
- type == IDO_GESTURE_PINCH3 ||
- type == IDO_GESTURE_PINCH4 ||
- type == IDO_GESTURE_PINCH5)
- {
- IdoEventGesturePinch pinch;
-
- pinch.type = type;
- pinch.id = id;
-
- pinch_gesture_handle_properties (&pinch,
- attr_count,
- attrs);
-
- binding->update (reg->window,
- ((IdoGestureEvent*)&pinch));
- }
- else if (type == IDO_GESTURE_ROTATE1 ||
- type == IDO_GESTURE_ROTATE2 ||
- type == IDO_GESTURE_ROTATE3 ||
- type == IDO_GESTURE_ROTATE4 ||
- type == IDO_GESTURE_ROTATE5)
- {
- IdoEventGestureRotate rotate;
-
- rotate.type = type;
- rotate.id = id;
-
- rotate_gesture_handle_properties (&rotate,
- attr_count,
- attrs);
-
- binding->update (reg->window,
- ((IdoGestureEvent*)&rotate));
- }
- }
- }
-}
-
-static void
-gesture_finish (void *cookie,
- GeisGestureType type,
- GeisGestureId id,
- GeisSize attr_count,
- GeisGestureAttr *attrs)
-{
- IdoGestureRegistration *reg = (IdoGestureRegistration *)cookie;
- GList *l = NULL;
-
- for (l = reg->bindings; l != NULL; l = l->next)
- {
- IdoGestureBinding *binding = (IdoGestureBinding *)l->data;
-
- if (binding->type == type)
- {
- if (type == IDO_GESTURE_DRAG1 ||
- type == IDO_GESTURE_DRAG2 ||
- type == IDO_GESTURE_DRAG3 ||
- type == IDO_GESTURE_DRAG4 ||
- type == IDO_GESTURE_DRAG5)
- {
- IdoEventGestureDrag drag;
-
- drag.type = type;
- drag.id = id;
-
- drag_gesture_handle_properties (&drag,
- attr_count,
- attrs);
-
- binding->end (reg->window,
- ((IdoGestureEvent*)&drag));
- }
- else if (type == IDO_GESTURE_PINCH1 ||
- type == IDO_GESTURE_PINCH2 ||
- type == IDO_GESTURE_PINCH3 ||
- type == IDO_GESTURE_PINCH4 ||
- type == IDO_GESTURE_PINCH5)
- {
- IdoEventGesturePinch pinch;
-
- pinch.type = type;
- pinch.id = id;
-
- pinch_gesture_handle_properties (&pinch,
- attr_count,
- attrs);
-
- binding->end (reg->window,
- ((IdoGestureEvent*)&pinch));
- }
- else if (type == IDO_GESTURE_ROTATE1 ||
- type == IDO_GESTURE_ROTATE2 ||
- type == IDO_GESTURE_ROTATE3 ||
- type == IDO_GESTURE_ROTATE4 ||
- type == IDO_GESTURE_ROTATE5)
- {
- IdoEventGestureRotate rotate;
-
- rotate.type = type;
- rotate.id = id;
-
- rotate_gesture_handle_properties (&rotate,
- attr_count,
- attrs);
-
- binding->end (reg->window,
- ((IdoGestureEvent*)&rotate));
- }
- }
- }
-}
-
-static void
-ido_gesture_manager_init (IdoGestureManager *item)
-{
- IdoGestureManagerPrivate *priv;
-
- priv = item->priv = IDO_GESTURE_MANAGER_GET_PRIVATE (item);
-
- priv->hash = g_hash_table_new (g_direct_hash, g_direct_equal);
-}
-
-static gboolean
-io_callback (GIOChannel *source,
- GIOCondition condition,
- gpointer data)
-{
- IdoGestureRegistration *reg = (IdoGestureRegistration *)data;
-
- geis_event_dispatch (reg->instance);
-
- return TRUE;
-}
-
-/* Public API */
-IdoGestureManager *
-ido_gesture_manager_get (void)
-{
- return g_object_new (IDO_TYPE_GESTURE_MANAGER, NULL);
-}
-
-/**
- * ido_gesture_manager_register_window:
- * @window: A #GtkWindow to register the gesture event for.
- * @gesture_type: The type of gesture event to register.
- * @start: Called when a user initiates a gesture.
- * @update: Called each time the user updates the gesture.
- * @end: Called when the user ends the gesture.
- *
- * Registers a toplevel window to receive gesture events.
- * The callback parameters provided will be called by the
- * #IdoGestureManager whenever the user initiates a gesture
- * on the specified window.
- */
-void
-ido_gesture_manager_register_window (IdoGestureManager *manager,
- GtkWindow *window,
- IdoGestureType gesture_type,
- IdoGestureCallback start,
- IdoGestureCallback update,
- IdoGestureCallback end)
-{
- IdoGestureManagerPrivate *priv;
- IdoGestureRegistration *reg;
- IdoGestureBinding *binding;
-
- g_return_if_fail (IDO_IS_GESTURE_MANAGER (manager));
- g_return_if_fail (GTK_IS_WINDOW (window));
- g_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (window)));
-
- priv = manager->priv;
-
- if (!(reg = g_hash_table_lookup (priv->hash, window)))
- {
- GeisInstance instance;
- GIOChannel *iochannel;
- gint fd = -1;
- GeisXcbWinInfo xcb_win_info = {
- .display_name = NULL,
- .screenp = NULL,
- .window_id = GDK_DRAWABLE_XID (GTK_WIDGET (window)->window)
- };
- GeisWinInfo win_info = {
- GEIS_XCB_FULL_WINDOW,
- &xcb_win_info
- };
-
- if (geis_init (&win_info, &instance) != GEIS_STATUS_SUCCESS)
- {
- g_warning ("Failed to initialize gesture manager.");
- return;
- }
-
- if (geis_configuration_supported (instance,
- GEIS_CONFIG_UNIX_FD) != GEIS_STATUS_SUCCESS)
- {
- g_warning ("Gesture manager does not support UNIX fd.");
- return;
- }
-
- if (geis_configuration_get_value (instance,
- GEIS_CONFIG_UNIX_FD,
- &fd) != GEIS_STATUS_SUCCESS)
- {
- g_error ("Gesture manager failed to obtain UNIX fd.");
- return;
- }
-
- reg = g_new0 (IdoGestureRegistration, 1);
-
- reg->window = window;
- reg->instance = instance;
-
- geis_subscribe (reg->instance,
- GEIS_ALL_INPUT_DEVICES,
- GEIS_ALL_GESTURES,
- &gesture_funcs,
- reg);
-
- iochannel = g_io_channel_unix_new (fd);
- g_io_add_watch (iochannel,
- G_IO_IN,
- io_callback,
- reg);
- }
-
- /* XXX - check for duplicates in reg->bindings first */
- binding = g_new0 (IdoGestureBinding, 1);
-
- g_print (" *** Adding binding type %d\n", (gint)gesture_type);
-
- binding->type = gesture_type;
- binding->start = start;
- binding->update = update;
- binding->end = end;
-
- reg->bindings = g_list_append (reg->bindings, binding);
-
- g_hash_table_insert (priv->hash,
- window,
- reg);
-}
diff --git a/src/idogesturemanager.h b/src/idogesturemanager.h
deleted file mode 100644
index bc3ad33..0000000
--- a/src/idogesturemanager.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright 2010 Canonical, Ltd.
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of either or both of the following licenses:
- *
- * 1) the GNU Lesser General Public License version 3, as published by the
- * Free Software Foundation; and/or
- * 2) the GNU Lesser General Public License version 2.1, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranties of
- * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the applicable version of the GNU Lesser General Public
- * License for more details.
- *
- * You should have received a copy of both the GNU Lesser General Public
- * License version 3 and version 2.1 along with this program. If not, see
- * <http://www.gnu.org/licenses/>
- *
- * Authors:
- * Cody Russell <crussell@canonical.com>
- */
-
-#ifndef __IDO_GESTURE_MANAGER_H__
-#define __IDO_GESTURE_MANAGER_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define IDO_TYPE_GESTURE_MANAGER (ido_gesture_manager_get_type ())
-#define IDO_GESTURE_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IDO_TYPE_GESTURE_MANAGER, IdoGestureManager))
-#define IDO_GESTURE_MANAGER_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), IDO_TYPE_GESTURE_MANAGER, IdoGestureManagerClass))
-#define IDO_IS_GESTURE_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IDO_TYPE_GESTURE_MANAGER))
-#define IDO_IS_GESTURE_MANAGER_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), IDO_TYPE_GESTURE_MANAGER))
-#define IDO_GESTURE_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), IDO_TYPE_GESTURE_MANAGER, IdoGestureManagerClass))
-
-typedef struct _IdoGestureManager IdoGestureManager;
-typedef struct _IdoGestureManagerClass IdoGestureManagerClass;
-typedef struct _IdoGestureManagerPrivate IdoGestureManagerPrivate;
-
-typedef union _IdoGestureEvent IdoGestureEvent;
-typedef struct _IdoEventGestureDrag IdoEventGestureDrag;
-typedef struct _IdoEventGesturePinch IdoEventGesturePinch;
-typedef struct _IdoEventGestureRotate IdoEventGestureRotate;
-
-typedef enum {
- IDO_GESTURE_DRAG1,
- IDO_GESTURE_PINCH1,
- IDO_GESTURE_ROTATE1,
-
- IDO_GESTURE_DRAG2,
- IDO_GESTURE_PINCH2,
- IDO_GESTURE_ROTATE2,
-
- IDO_GESTURE_DRAG3,
- IDO_GESTURE_PINCH3,
- IDO_GESTURE_ROTATE3,
-
- IDO_GESTURE_DRAG4,
- IDO_GESTURE_PINCH4,
- IDO_GESTURE_ROTATE4,
-
- IDO_GESTURE_DRAG5,
- IDO_GESTURE_PINCH5,
- IDO_GESTURE_ROTATE5,
-
- IDO_GESTURE_TAP1,
- IDO_GESTURE_TAP2,
- IDO_GESTURE_TAP3,
- IDO_GESTURE_TAP4,
- IDO_GESTURE_TAP5
-} IdoGestureType;
-
-struct _IdoEventGestureDrag
-{
- IdoGestureType type;
- guint id;
- GdkWindow *window;
- GdkWindow *root;
- GdkWindow *child;
- guint32 timestamp;
- gint fingers;
- gdouble focus_x;
- gdouble focus_y;
- gint delta_x;
- gint delta_y;
- gdouble velocity_x;
- gdouble velocity_y;
- gdouble position_x;
- gdouble position_y;
-};
-
-struct _IdoEventGesturePinch
-{
- IdoGestureType type;
- guint id;
- GdkWindow *window;
- GdkWindow *root;
- GdkWindow *child;
- guint32 timestamp;
- guint fingers;
- gdouble focus_x;
- gdouble focus_y;
- gdouble radius_delta;
- gdouble radial_velocity;
- gdouble radius;
-};
-
-struct _IdoEventGestureRotate
-{
- IdoGestureType type;
- guint id;
- GdkWindow *window;
- GdkWindow *root;
- GdkWindow *child;
- guint32 timestamp;
- guint fingers;
- gdouble focus_x;
- gdouble focus_y;
- gdouble angle_delta;
- gdouble angular_velocity;
- gdouble angle;
-};
-
-union _IdoGestureEvent
-{
- IdoGestureType type;
- IdoEventGestureDrag drag;
- IdoEventGesturePinch pinch;
- IdoEventGestureRotate rotate;
-};
-
-struct _IdoGestureManager
-{
- GObject parent_instance;
-
- IdoGestureManagerPrivate *priv;
-};
-
-struct _IdoGestureManagerClass
-{
- GObjectClass parent_class;
-};
-
-typedef void (* IdoGestureCallback) (GtkWindow *window,
- IdoGestureEvent *gesture);
-
-GType ido_gesture_manager_get_type (void) G_GNUC_CONST;
-IdoGestureManager *ido_gesture_manager_get (void);
-void ido_gesture_manager_register_window (IdoGestureManager *manager,
- GtkWindow *window,
- IdoGestureType gesture_type,
- IdoGestureCallback start,
- IdoGestureCallback update,
- IdoGestureCallback end);
-
-G_END_DECLS
-
-#endif /* __IDO_GESTURE_MANAGER_H__ */
diff --git a/src/idomessagedialog.c b/src/idomessagedialog.c
index ba73233..9b5fe2c 100644
--- a/src/idomessagedialog.c
+++ b/src/idomessagedialog.c
@@ -82,7 +82,7 @@ ido_message_dialog_map (GtkWidget *widget)
*
* See: https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/240794
*/
- gdk_window_set_functions (widget->window,
+ gdk_window_set_functions (gtk_widget_get_window (widget),
GDK_FUNC_RESIZE | GDK_FUNC_MOVE);
ido_message_dialog_get_secondary_label (IDO_MESSAGE_DIALOG (widget));
@@ -166,14 +166,14 @@ ido_message_dialog_focus_in_event (GtkWidget *widget,
IdoTimeline *timeline;
IdoMessageDialogMorphContext *context;
- start = GTK_WIDGET (dialog)->requisition;
+ gtk_widget_get_requisition (GTK_WIDGET (dialog), &start);
priv->expanded = TRUE;
gtk_widget_show (priv->action_area);
gtk_widget_show (priv->secondary_label);
- gtk_widget_size_request (GTK_WIDGET (dialog), &end);
+ gtk_widget_get_requisition (GTK_WIDGET (dialog), &end);
gtk_widget_hide (priv->action_area);
gtk_widget_hide (priv->secondary_label);
@@ -209,7 +209,7 @@ ido_message_dialog_constructed (GObject *object)
event_box = gtk_event_box_new ();
gtk_widget_show (event_box);
- vbox = GTK_DIALOG (object)->vbox;
+ vbox = gtk_dialog_get_content_area (GTK_DIALOG (object));
priv->action_area = gtk_dialog_get_action_area (GTK_DIALOG (object));
g_object_ref (G_OBJECT (vbox));
@@ -237,11 +237,7 @@ ido_message_dialog_class_init (IdoMessageDialogClass *class)
static void
ido_message_dialog_init (IdoMessageDialog *dialog)
{
- IdoMessageDialogPrivate *priv;
-
gtk_window_set_focus_on_map (GTK_WINDOW (dialog), FALSE);
-
- priv = IDO_MESSAGE_DIALOG_GET_PRIVATE (dialog);
}
/**
@@ -284,11 +280,13 @@ ido_message_dialog_new (GtkWindow *parent,
NULL);
dialog = GTK_DIALOG (widget);
+#if ! GTK_CHECK_VERSION(3, 0, 0)
if (flags & GTK_DIALOG_NO_SEPARATOR)
{
g_warning ("The GTK_DIALOG_NO_SEPARATOR flag cannot be used for IdoMessageDialog");
flags &= ~GTK_DIALOG_NO_SEPARATOR;
}
+#endif
if (message_format)
{
@@ -296,8 +294,7 @@ ido_message_dialog_new (GtkWindow *parent,
msg = g_strdup_vprintf (message_format, args);
va_end (args);
- gtk_label_set_text (GTK_LABEL (GTK_MESSAGE_DIALOG (widget)->label),
- msg);
+ g_object_set (G_OBJECT (widget), "text", msg, NULL);
g_free (msg);
}
@@ -397,7 +394,8 @@ ido_message_dialog_get_label (IdoMessageDialog *dialog, gboolean primary)
label = GTK_LABEL (vlist->data);
- if (strcmp ((primary ? text : secondary_text), label->label) == 0)
+ if (strcmp ((primary ? text : secondary_text),
+ gtk_label_get_label (label)) == 0)
{
return GTK_WIDGET (label);
}
diff --git a/src/idomessagedialog.h b/src/idomessagedialog.h
index 4a44957..4313fb3 100644
--- a/src/idomessagedialog.h
+++ b/src/idomessagedialog.h
@@ -29,7 +29,7 @@
#ifndef __IDO_MESSAGE_DIALOG_H__
#define __IDO_MESSAGE_DIALOG_H__
-#include <gtk/gtkmessagedialog.h>
+#include <gtk/gtk.h>
#define IDO_TYPE_MESSAGE_DIALOG (ido_message_dialog_get_type ())
#define IDO_MESSAGE_DIALOG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IDO_TYPE_MESSAGE_DIALOG, IdoMessageDialog))
diff --git a/src/idorange.c b/src/idorange.c
index c38ac88..ba5c2c8 100644
--- a/src/idorange.c
+++ b/src/idorange.c
@@ -179,7 +179,7 @@ ido_range_init (IdoRange *range)
* Creates a new #IdoRange widget.
**/
GtkWidget *
-ido_range_new (GtkObject *adj,
+ido_range_new (GtkAdjustment *adj,
IdoRangeStyle style)
{
g_return_val_if_fail (GTK_IS_ADJUSTMENT (adj), NULL);
diff --git a/src/idorange.h b/src/idorange.h
index a88a900..f502520 100644
--- a/src/idorange.h
+++ b/src/idorange.h
@@ -64,7 +64,7 @@ struct _IdoRangeClass
GType ido_range_get_type (void) G_GNUC_CONST;
-GtkWidget* ido_range_new (GtkObject *adj,
+GtkWidget* ido_range_new (GtkAdjustment *adj,
IdoRangeStyle style);
G_END_DECLS
diff --git a/src/idoscalemenuitem.c b/src/idoscalemenuitem.c
index f29c2dc..8b9e1ac 100644
--- a/src/idoscalemenuitem.c
+++ b/src/idoscalemenuitem.c
@@ -70,6 +70,7 @@ struct _IdoScaleMenuItemPrivate {
gboolean grabbed;
IdoScaleMenuItemStyle style;
IdoRangeStyle range_style;
+ gint toggle_size;
};
enum {
@@ -184,11 +185,11 @@ ido_scale_menu_item_size_allocate (GtkWidget *widget,
priv->right_padding = primary_padding;
}
- priv->child_allocation.x = GTK_CONTAINER (widget)->border_width + widget->style->xthickness;
- priv->child_allocation.y = GTK_CONTAINER (widget)->border_width + widget->style->ythickness;
+ priv->child_allocation.x = gtk_container_get_border_width (GTK_CONTAINER (widget)) + gtk_widget_get_style (widget)->xthickness;
+ priv->child_allocation.y = gtk_container_get_border_width (GTK_CONTAINER (widget)) + gtk_widget_get_style (widget)->ythickness;
priv->child_allocation.x += horizontal_padding;
- priv->child_allocation.x += GTK_MENU_ITEM (widget)->toggle_size;
+ priv->child_allocation.x += priv->toggle_size;
priv->child_allocation.width = MAX (1, (gint)allocation->width - priv->child_allocation.x * 2);
priv->child_allocation.width -= (primary_padding + secondary_padding);
@@ -198,11 +199,21 @@ ido_scale_menu_item_size_allocate (GtkWidget *widget,
}
static void
+ido_scale_menu_item_toggle_size_allocate (IdoScaleMenuItem *item,
+ gint toggle_size,
+ gpointer user_data)
+{
+ IdoScaleMenuItemPrivate *priv = GET_PRIVATE (item);
+
+ priv->toggle_size = toggle_size;
+}
+
+static void
ido_scale_menu_item_constructed (GObject *object)
{
IdoScaleMenuItem *self = IDO_SCALE_MENU_ITEM (object);
IdoScaleMenuItemPrivate *priv = GET_PRIVATE (self);
- GtkObject *adj = gtk_adjustment_new (0.0, 0.0, 100.0, 1.0, 10.0, 0.0);
+ GtkAdjustment *adj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 100.0, 1.0, 10.0, 0.0));
IdoRangeStyle range_style;
GtkWidget *hbox;
@@ -235,6 +246,10 @@ ido_scale_menu_item_constructed (GObject *object)
update_packing (self, priv->style, priv->style);
+ g_signal_connect (self, "toggle-size-allocate",
+ G_CALLBACK (ido_scale_menu_item_toggle_size_allocate),
+ NULL);
+
g_signal_connect (self, "notify",
G_CALLBACK (ido_scale_menu_item_notify),
NULL);
@@ -246,7 +261,6 @@ static void
ido_scale_menu_item_class_init (IdoScaleMenuItemClass *item_class)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (item_class);
- GtkObjectClass *object_class = GTK_OBJECT_CLASS (item_class);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (item_class);
widget_class->button_press_event = ido_scale_menu_item_button_press_event;
@@ -310,7 +324,7 @@ ido_scale_menu_item_class_init (IdoScaleMenuItemClass *item_class)
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
- g_type_class_add_private (object_class, sizeof (IdoScaleMenuItemPrivate));
+ g_type_class_add_private (item_class, sizeof (IdoScaleMenuItemPrivate));
}
static void
@@ -456,11 +470,9 @@ ido_scale_menu_item_button_press_event (GtkWidget *menuitem,
{
IdoScaleMenuItemPrivate *priv = GET_PRIVATE (menuitem);
GtkWidget *scale = priv->scale;
- GtkWidget *parent;
gdouble x;
// can we block emissions of "grab-notify" on parent??
- parent = gtk_widget_get_parent (GTK_WIDGET (menuitem));
translate_event_coordinates (menuitem, event->x, &x);
event->x = x;
@@ -490,7 +502,6 @@ ido_scale_menu_item_button_release_event (GtkWidget *menuitem,
{
IdoScaleMenuItemPrivate *priv = GET_PRIVATE (menuitem);
GtkWidget *scale = priv->scale;
- GdkWindow *tmp = event->window;
gdouble x;
if (event->x > priv->child_allocation.x &&
@@ -539,8 +550,6 @@ ido_scale_menu_item_button_release_event (GtkWidget *menuitem,
return TRUE;
}
- event->window = GTK_RANGE (scale)->event_window;
-
translate_event_coordinates (menuitem, event->x, &x);
event->x = x;
@@ -550,8 +559,6 @@ ido_scale_menu_item_button_release_event (GtkWidget *menuitem,
gtk_widget_event (scale,
((GdkEvent *)(void*)(event)));
- event->window = tmp;
-
if (priv->grabbed)
{
priv->grabbed = FALSE;
@@ -673,13 +680,13 @@ ido_scale_menu_item_new_with_range (const gchar *label,
gdouble max,
gdouble step)
{
- GtkObject *adjustment = gtk_adjustment_new (value, min, max, step, 10 * step, 0);
+ GtkAdjustment *adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (value, min, max, step, 10 * step, 0));
- return g_object_new (IDO_TYPE_SCALE_MENU_ITEM,
- "label", label,
- "range-style", range_style,
- "adjustment", adjustment,
- NULL);
+ return GTK_WIDGET (g_object_new (IDO_TYPE_SCALE_MENU_ITEM,
+ "label", label,
+ "range-style", range_style,
+ "adjustment", adjustment,
+ NULL));
}
/**
@@ -789,7 +796,7 @@ ido_scale_menu_item_get_secondary_image (IdoScaleMenuItem *menuitem)
* Whether this is visible depends upon the return value from
* ido_scale_menu_item_get_style().
**/
-G_CONST_RETURN gchar*
+const gchar*
ido_scale_menu_item_get_primary_label (IdoScaleMenuItem *menuitem)
{
IdoScaleMenuItemPrivate *priv;
@@ -810,7 +817,7 @@ ido_scale_menu_item_get_primary_label (IdoScaleMenuItem *menuitem)
* Whether this is visible depends upon the return value from
* ido_scale_menu_item_get_style().
**/
-G_CONST_RETURN gchar*
+const gchar*
ido_scale_menu_item_get_secondary_label (IdoScaleMenuItem *menuitem)
{
IdoScaleMenuItemPrivate *priv;
diff --git a/src/idoscalemenuitem.h b/src/idoscalemenuitem.h
index 44a9033..5afafd3 100644
--- a/src/idoscalemenuitem.h
+++ b/src/idoscalemenuitem.h
@@ -26,7 +26,7 @@
#ifndef __IDO_SCALE_MENU_ITEM_H__
#define __IDO_SCALE_MENU_ITEM_H__
-#include <gtk/gtkmenuitem.h>
+#include <gtk/gtk.h>
#include "idorange.h"
G_BEGIN_DECLS
@@ -79,8 +79,8 @@ void ido_scale_menu_item_set_style (IdoScaleMenuItem
IdoScaleMenuItemStyle style);
GtkWidget *ido_scale_menu_item_get_primary_image (IdoScaleMenuItem *menuitem);
GtkWidget *ido_scale_menu_item_get_secondary_image (IdoScaleMenuItem *menuitem);
-G_CONST_RETURN gchar *ido_scale_menu_item_get_primary_label (IdoScaleMenuItem *menuitem);
-G_CONST_RETURN gchar *ido_scale_menu_item_get_secondary_label (IdoScaleMenuItem *menuitem);
+const gchar *ido_scale_menu_item_get_primary_label (IdoScaleMenuItem *menuitem);
+const gchar *ido_scale_menu_item_get_secondary_label (IdoScaleMenuItem *menuitem);
void ido_scale_menu_item_set_primary_label (IdoScaleMenuItem *menuitem,
const gchar *label);
void ido_scale_menu_item_set_secondary_label (IdoScaleMenuItem *menuitem,
diff --git a/src/idotimeline.c b/src/idotimeline.c
index a9ca0c6..c6275ae 100644
--- a/src/idotimeline.c
+++ b/src/idotimeline.c
@@ -22,7 +22,7 @@
#include "idotimeline.h"
#include "idotypebuiltins.h"
-#include <gtk/gtksettings.h>
+#include <gtk/gtk.h>
#include <math.h>
#define IDO_TIMELINE_GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), IDO_TYPE_TIMELINE, IdoTimelinePriv))
@@ -194,10 +194,8 @@ ido_timeline_set_property (GObject *object,
GParamSpec *pspec)
{
IdoTimeline *timeline;
- IdoTimelinePriv *priv;
timeline = IDO_TIMELINE (object);
- priv = IDO_TIMELINE_GET_PRIV (timeline);
switch (prop_id)
{
diff --git a/src/idotimeline.h b/src/idotimeline.h
index 5df6b97..e26f9d3 100644
--- a/src/idotimeline.h
+++ b/src/idotimeline.h
@@ -21,7 +21,7 @@
#define __IDO_TIMELINE_H__
#include <glib-object.h>
-#include <gtk/gtkenums.h>
+#include <gtk/gtk.h>
#include <gdk/gdk.h>
G_BEGIN_DECLS
diff --git a/src/libido.h b/src/libido.h
index ef0b8b3..4c4f68b 100644
--- a/src/libido.h
+++ b/src/libido.h
@@ -26,6 +26,7 @@
#ifndef __IDO__
#define __IDO__
+#include <libido/idocalendarmenuitem.h>
#include <libido/idoscalemenuitem.h>
#include <libido/idoentrymenuitem.h>
#include <libido/idomessagedialog.h>