diff options
author | Tim Janik <timj@gtk.org> | 1999-05-11 02:19:37 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1999-05-11 02:19:37 +0000 |
commit | 519fed9991acb04a7d3491d379d5b47bacab8624 (patch) | |
tree | 0e8c43e3939a5f5a19c3c3ae69169a1953de6341 | |
parent | 5e52b31fd7d23b2b8e327e2fcfb47a3c87b7740c (diff) | |
download | gdk-pixbuf-519fed9991acb04a7d3491d379d5b47bacab8624.tar.gz |
propagate ::selection-done emissions up to the topmost menu shell.
Mon May 10 04:20:41 1999 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_menu_shell_activate_item): propagate
::selection-done emissions up to the topmost menu shell.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 5 | ||||
-rw-r--r-- | gtk/gtkmenushell.c | 28 |
8 files changed, 57 insertions, 6 deletions
@@ -1,3 +1,8 @@ +Mon May 10 04:20:41 1999 Tim Janik <timj@gtk.org> + + * gtk/gtkmenushell.c (gtk_menu_shell_activate_item): propagate + ::selection-done emissions up to the topmost menu shell. + Fri May 7 10:15:14 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtknotebook.c (gtk_notebook_set_scrollable): Unset diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 4b94d678f..98223c144 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,8 @@ +Mon May 10 04:20:41 1999 Tim Janik <timj@gtk.org> + + * gtk/gtkmenushell.c (gtk_menu_shell_activate_item): propagate + ::selection-done emissions up to the topmost menu shell. + Fri May 7 10:15:14 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtknotebook.c (gtk_notebook_set_scrollable): Unset diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 4b94d678f..98223c144 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Mon May 10 04:20:41 1999 Tim Janik <timj@gtk.org> + + * gtk/gtkmenushell.c (gtk_menu_shell_activate_item): propagate + ::selection-done emissions up to the topmost menu shell. + Fri May 7 10:15:14 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtknotebook.c (gtk_notebook_set_scrollable): Unset diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 4b94d678f..98223c144 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +Mon May 10 04:20:41 1999 Tim Janik <timj@gtk.org> + + * gtk/gtkmenushell.c (gtk_menu_shell_activate_item): propagate + ::selection-done emissions up to the topmost menu shell. + Fri May 7 10:15:14 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtknotebook.c (gtk_notebook_set_scrollable): Unset diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 4b94d678f..98223c144 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Mon May 10 04:20:41 1999 Tim Janik <timj@gtk.org> + + * gtk/gtkmenushell.c (gtk_menu_shell_activate_item): propagate + ::selection-done emissions up to the topmost menu shell. + Fri May 7 10:15:14 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtknotebook.c (gtk_notebook_set_scrollable): Unset diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 4b94d678f..98223c144 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Mon May 10 04:20:41 1999 Tim Janik <timj@gtk.org> + + * gtk/gtkmenushell.c (gtk_menu_shell_activate_item): propagate + ::selection-done emissions up to the topmost menu shell. + Fri May 7 10:15:14 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtknotebook.c (gtk_notebook_set_scrollable): Unset diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 4b94d678f..98223c144 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Mon May 10 04:20:41 1999 Tim Janik <timj@gtk.org> + + * gtk/gtkmenushell.c (gtk_menu_shell_activate_item): propagate + ::selection-done emissions up to the topmost menu shell. + Fri May 7 10:15:14 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtknotebook.c (gtk_notebook_set_scrollable): Unset diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c index bc49e5dfe..0fe6c6b12 100644 --- a/gtk/gtkmenushell.c +++ b/gtk/gtkmenushell.c @@ -802,6 +802,7 @@ gtk_menu_shell_activate_item (GtkMenuShell *menu_shell, GtkWidget *menu_item, gboolean force_deactivate) { + GSList *slist, *shells = NULL; gboolean deactivate = force_deactivate; g_return_if_fail (menu_shell != NULL); @@ -810,12 +811,23 @@ gtk_menu_shell_activate_item (GtkMenuShell *menu_shell, g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); if (!deactivate) - { - deactivate = GTK_MENU_ITEM_CLASS (GTK_OBJECT (menu_item)->klass)->hide_on_activate; - } + deactivate = GTK_MENU_ITEM_CLASS (GTK_OBJECT (menu_item)->klass)->hide_on_activate; + + gtk_widget_ref (GTK_WIDGET (menu_shell)); if (deactivate) { + GtkMenuShell *parent_menu_shell = menu_shell; + + do + { + gtk_widget_ref (GTK_WIDGET (parent_menu_shell)); + shells = g_slist_prepend (shells, parent_menu_shell); + parent_menu_shell = (GtkMenuShell*) parent_menu_shell->parent_menu_shell; + } + while (parent_menu_shell); + shells = g_slist_reverse (shells); + gtk_menu_shell_deactivate (menu_shell); /* flush the x-queue, so any grabs are removed and @@ -824,11 +836,15 @@ gtk_menu_shell_activate_item (GtkMenuShell *menu_shell, gdk_flush (); } - gtk_widget_ref (GTK_WIDGET (menu_shell)); gtk_widget_activate (menu_item); - if (deactivate) - gtk_signal_emit (GTK_OBJECT (menu_shell), menu_shell_signals[SELECTION_DONE]); + for (slist = shells; slist; slist = slist->next) + { + gtk_signal_emit (slist->data, menu_shell_signals[SELECTION_DONE]); + gtk_widget_unref (slist->data); + } + g_slist_free (shells); + gtk_widget_unref (GTK_WIDGET (menu_shell)); } |