summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>1999-05-11 02:19:37 +0000
committerTim Janik <timj@src.gnome.org>1999-05-11 02:19:37 +0000
commit519fed9991acb04a7d3491d379d5b47bacab8624 (patch)
tree0e8c43e3939a5f5a19c3c3ae69169a1953de6341
parent5e52b31fd7d23b2b8e327e2fcfb47a3c87b7740c (diff)
downloadgdk-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--ChangeLog5
-rw-r--r--ChangeLog.pre-2-05
-rw-r--r--ChangeLog.pre-2-105
-rw-r--r--ChangeLog.pre-2-25
-rw-r--r--ChangeLog.pre-2-45
-rw-r--r--ChangeLog.pre-2-65
-rw-r--r--ChangeLog.pre-2-85
-rw-r--r--gtk/gtkmenushell.c28
8 files changed, 57 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 4b94d678f..98223c144 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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));
}