[maemo-commits] [maemo-commits] r9285 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Jan 24 13:43:03 EET 2007
- Previous message: [maemo-commits] r9284 - projects/haf/tags/libsdl1.2
- Next message: [maemo-commits] r9286 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: mitch Date: 2007-01-24 13:43:02 +0200 (Wed, 24 Jan 2007) New Revision: 9285 Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkwidget.c Log: 2007-01-24 Michael Natterer <mitch at imendio.com> * gtk/gtkwidget.c: port over set_extension_events_internal() which allows setting extension events on already realized widgets (applied updated and cleaned up patch from upstream bug #79550). Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog =================================================================== --- projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog 2007-01-24 10:30:16 UTC (rev 9284) +++ projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog 2007-01-24 11:43:02 UTC (rev 9285) @@ -1,5 +1,11 @@ 2007-01-24 Michael Natterer <mitch at imendio.com> + * gtk/gtkwidget.c: port over set_extension_events_internal() which + allows setting extension events on already realized widgets (applied + updated and cleaned up patch from upstream bug #79550). + +2007-01-24 Michael Natterer <mitch at imendio.com> + * gdk/gdkwindow.h (enum GdkWindowTypeHint): do not use maemo enum values outside the #ifdef MAEMO_CHANGES blocks. Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkwidget.c =================================================================== --- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkwidget.c 2007-01-24 10:30:16 UTC (rev 9284) +++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkwidget.c 2007-01-24 11:43:02 UTC (rev 9285) @@ -2631,6 +2631,51 @@ } } +static void +gtk_widget_set_extension_events_internal (GtkWidget *widget, + GdkExtensionMode mode, + GList *window_list) +{ + GList *free_list = NULL; + GList *l; + + if (window_list == NULL) + { + if (!GTK_WIDGET_NO_WINDOW (widget)) + window_list = g_list_prepend (NULL, widget->window); + else + window_list = gdk_window_get_children (widget->window); + + free_list = window_list; + } + + for (l = window_list; l != NULL; l = l->next) + { + GdkWindow *window = l->data; + gpointer user_data; + + gdk_window_get_user_data (window, &user_data); + if (user_data == widget) + { + GList *children; + + gdk_input_set_extension_events (window, + gdk_window_get_events (window), + mode); + + children = gdk_window_get_children (window); + if (children) + { + gtk_widget_set_extension_events_internal (widget, mode, children); + g_list_free (children); + } + } + } + + if (free_list) + g_list_free (free_list); +} + /** * gtk_widget_realize: * @widget: a #GtkWidget @@ -2658,8 +2703,6 @@ void gtk_widget_realize (GtkWidget *widget) { - gint events; - GdkExtensionMode mode; GtkWidgetShapeInfo *shape_info; g_return_if_fail (GTK_IS_WIDGET (widget)); @@ -2703,15 +2746,14 @@ shape_info->offset_y); if (!GTK_WIDGET_NO_WINDOW (widget)) - { - mode = gtk_widget_get_extension_events (widget); - if (mode != GDK_EXTENSION_EVENTS_NONE) - { - events = gtk_widget_get_events (widget); - gdk_input_set_extension_events (widget->window, events, mode); - } - } - + { + GdkExtensionMode mode; + + mode = gtk_widget_get_extension_events (widget); + + if (mode != GDK_EXTENSION_EVENTS_NONE) + gtk_widget_set_extension_events_internal (widget, mode, NULL); + } } } @@ -6559,21 +6601,23 @@ * * Sets the extension events mask to @mode. See #GdkExtensionMode * and gdk_input_set_extension_events(). - * **/ void gtk_widget_set_extension_events (GtkWidget *widget, GdkExtensionMode mode) { GdkExtensionMode *modep; - + g_return_if_fail (GTK_IS_WIDGET (widget)); - + modep = g_object_get_qdata (G_OBJECT (widget), quark_extension_event_mode); - + if (!modep) modep = g_slice_new (GdkExtensionMode); - + + if (GTK_WIDGET_REALIZED (widget)) + gtk_widget_set_extension_events_internal (widget, mode, NULL); + *modep = mode; g_object_set_qdata (G_OBJECT (widget), quark_extension_event_mode, modep); g_object_notify (G_OBJECT (widget), "extension-events");
- Previous message: [maemo-commits] r9284 - projects/haf/tags/libsdl1.2
- Next message: [maemo-commits] r9286 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]