diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 25 | ||||
-rw-r--r-- | src/idocalendarmenuitem.c | 181 | ||||
-rw-r--r-- | src/idocalendarmenuitem.h | 18 | ||||
-rw-r--r-- | src/idoentrymenuitem.c | 61 | ||||
-rw-r--r-- | src/idogesturemanager.c | 688 | ||||
-rw-r--r-- | src/idogesturemanager.h | 162 | ||||
-rw-r--r-- | src/idomessagedialog.c | 20 | ||||
-rw-r--r-- | src/idomessagedialog.h | 2 | ||||
-rw-r--r-- | src/idorange.c | 2 | ||||
-rw-r--r-- | src/idorange.h | 2 | ||||
-rw-r--r-- | src/idoscalemenuitem.c | 49 | ||||
-rw-r--r-- | src/idoscalemenuitem.h | 6 | ||||
-rw-r--r-- | src/idotimeline.c | 4 | ||||
-rw-r--r-- | src/idotimeline.h | 2 | ||||
-rw-r--r-- | src/libido.h | 1 |
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> |