Don't show accelerators in popup menus. (#127227)

Tue Nov 25 00:10:05 2003  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkuimanager.c (update_node): Don't show accelerators in
	popup menus.  (#127227)
This commit is contained in:
Matthias Clasen 2003-11-24 23:24:40 +00:00 committed by Matthias Clasen
parent af05c04e31
commit ab0d40b3f5
6 changed files with 48 additions and 8 deletions

View File

@ -1,3 +1,8 @@
Tue Nov 25 00:10:05 2003 Matthias Clasen <maclas@gmx.de>
* gtk/gtkuimanager.c (update_node): Don't show accelerators in
popup menus. (#127227)
Mon Nov 24 13:47:39 GMT 2003 Tony Gale <gale@gtk.org> Mon Nov 24 13:47:39 GMT 2003 Tony Gale <gale@gtk.org>
* docs/faq/gtk-faq.sgml: start 2.x Section 4 updates * docs/faq/gtk-faq.sgml: start 2.x Section 4 updates

View File

@ -1,3 +1,8 @@
Tue Nov 25 00:10:05 2003 Matthias Clasen <maclas@gmx.de>
* gtk/gtkuimanager.c (update_node): Don't show accelerators in
popup menus. (#127227)
Mon Nov 24 13:47:39 GMT 2003 Tony Gale <gale@gtk.org> Mon Nov 24 13:47:39 GMT 2003 Tony Gale <gale@gtk.org>
* docs/faq/gtk-faq.sgml: start 2.x Section 4 updates * docs/faq/gtk-faq.sgml: start 2.x Section 4 updates

View File

@ -1,3 +1,8 @@
Tue Nov 25 00:10:05 2003 Matthias Clasen <maclas@gmx.de>
* gtk/gtkuimanager.c (update_node): Don't show accelerators in
popup menus. (#127227)
Mon Nov 24 13:47:39 GMT 2003 Tony Gale <gale@gtk.org> Mon Nov 24 13:47:39 GMT 2003 Tony Gale <gale@gtk.org>
* docs/faq/gtk-faq.sgml: start 2.x Section 4 updates * docs/faq/gtk-faq.sgml: start 2.x Section 4 updates

View File

@ -1,3 +1,8 @@
Tue Nov 25 00:10:05 2003 Matthias Clasen <maclas@gmx.de>
* gtk/gtkuimanager.c (update_node): Don't show accelerators in
popup menus. (#127227)
Mon Nov 24 13:47:39 GMT 2003 Tony Gale <gale@gtk.org> Mon Nov 24 13:47:39 GMT 2003 Tony Gale <gale@gtk.org>
* docs/faq/gtk-faq.sgml: start 2.x Section 4 updates * docs/faq/gtk-faq.sgml: start 2.x Section 4 updates

View File

@ -1,3 +1,8 @@
Tue Nov 25 00:10:05 2003 Matthias Clasen <maclas@gmx.de>
* gtk/gtkuimanager.c (update_node): Don't show accelerators in
popup menus. (#127227)
Mon Nov 24 13:47:39 GMT 2003 Tony Gale <gale@gtk.org> Mon Nov 24 13:47:39 GMT 2003 Tony Gale <gale@gtk.org>
* docs/faq/gtk-faq.sgml: start 2.x Section 4 updates * docs/faq/gtk-faq.sgml: start 2.x Section 4 updates

View File

@ -42,7 +42,7 @@
#include "gtktoolbar.h" #include "gtktoolbar.h"
#include "gtkuimanager.h" #include "gtkuimanager.h"
#undef DEBUG_UI_MANAGER #define DEBUG_UI_MANAGER
typedef enum typedef enum
{ {
@ -1783,7 +1783,7 @@ update_smart_separators (GtkWidget *proxy)
static void static void
update_node (GtkUIManager *self, update_node (GtkUIManager *self,
GNode *node, GNode *node,
gboolean add_tearoffs) gboolean in_popup)
{ {
Node *info; Node *info;
GNode *child; GNode *child;
@ -1798,8 +1798,11 @@ update_node (GtkUIManager *self,
info = NODE_INFO (node); info = NODE_INFO (node);
in_popup = in_popup || (info->type == NODE_TYPE_POPUP);
#ifdef DEBUG_UI_MANAGER #ifdef DEBUG_UI_MANAGER
g_print ("update_node name=%s dirty=%d (", info->name, info->dirty); g_print ("update_node name=%s dirty=%d popup %d (",
info->name, info->dirty, in_popup);
for (tmp = info->uifiles; tmp != NULL; tmp = tmp->next) for (tmp = info->uifiles; tmp != NULL; tmp = tmp->next)
{ {
NodeUIReference *ref = tmp->data; NodeUIReference *ref = tmp->data;
@ -1859,7 +1862,9 @@ update_node (GtkUIManager *self,
menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (info->proxy)); menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (info->proxy));
siblings = gtk_container_get_children (GTK_CONTAINER (menu)); siblings = gtk_container_get_children (GTK_CONTAINER (menu));
if (siblings != NULL && GTK_IS_TEAROFF_MENU_ITEM (siblings->data)) if (siblings != NULL && GTK_IS_TEAROFF_MENU_ITEM (siblings->data))
g_object_set (G_OBJECT (siblings->data), "visible", add_tearoffs, 0); g_object_set (G_OBJECT (siblings->data),
"visible", self->private_data->add_tearoffs && !in_popup,
NULL);
} }
goto recurse_children; goto recurse_children;
@ -1938,7 +1943,9 @@ update_node (GtkUIManager *self,
menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (info->proxy)); menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (info->proxy));
siblings = gtk_container_get_children (GTK_CONTAINER (menu)); siblings = gtk_container_get_children (GTK_CONTAINER (menu));
if (siblings != NULL && GTK_IS_TEAROFF_MENU_ITEM (siblings->data)) if (siblings != NULL && GTK_IS_TEAROFF_MENU_ITEM (siblings->data))
g_object_set (G_OBJECT (siblings->data), "visible", add_tearoffs, 0); g_object_set (G_OBJECT (siblings->data),
"visible", self->private_data->add_tearoffs && !in_popup,
NULL);
} }
break; break;
case NODE_TYPE_UNDECIDED: case NODE_TYPE_UNDECIDED:
@ -2075,6 +2082,15 @@ update_node (GtkUIManager *self,
} }
g_signal_connect (info->proxy, "notify::visible", g_signal_connect (info->proxy, "notify::visible",
G_CALLBACK (update_smart_separators), 0); G_CALLBACK (update_smart_separators), 0);
if (in_popup)
{
/* don't show accels in popups */
GtkWidget *label = GTK_BIN (info->proxy)->child;
g_object_set (G_OBJECT (label),
"accel_closure", NULL,
NULL);
}
break; break;
case NODE_TYPE_TOOLITEM: case NODE_TYPE_TOOLITEM:
/* remove the proxy if it is of the wrong type ... */ /* remove the proxy if it is of the wrong type ... */
@ -2193,7 +2209,7 @@ update_node (GtkUIManager *self,
current = child; current = child;
child = current->next; child = current->next;
update_node (self, current, add_tearoffs && (info->type != NODE_TYPE_POPUP)); update_node (self, current, in_popup);
} }
if (info->proxy) if (info->proxy)
@ -2233,8 +2249,7 @@ do_updates (GtkUIManager *self)
* the proxy is reconnected to the new action (or a new proxy widget * the proxy is reconnected to the new action (or a new proxy widget
* is created and added to the parent container). * is created and added to the parent container).
*/ */
update_node (self, self->private_data->root_node, update_node (self, self->private_data->root_node, FALSE);
self->private_data->add_tearoffs);
self->private_data->update_tag = 0; self->private_data->update_tag = 0;