From 69b166106d00cb312a0013c7a026fd60c228f6e4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Wed, 1 Jul 2009 15:52:58 +0000 Subject: [PATCH] * gtkutil.c (xg_tool_bar_proxy_help_callback): New function. (xg_tool_bar_menu_proxy): Attach enter/leave events to xg_tool_bar_proxy_help_callback. --- src/ChangeLog | 4 ++++ src/gtkutil.c | 43 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 9108cd39cc6..481b6e8c88d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2009-07-01 Jan Djärv + * gtkutil.c (xg_tool_bar_proxy_help_callback): New function. + (xg_tool_bar_menu_proxy): Attach enter/leave events to + xg_tool_bar_proxy_help_callback. + * emacs.c (USAGE3, standard_args): Add -mm and --maximized. * frame.c: Qmaximized is new. diff --git a/src/gtkutil.c b/src/gtkutil.c index 1872aa74d39..9a11605a417 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -3459,10 +3459,30 @@ xg_tool_bar_proxy_callback (w, client_data) GtkWidget *wbutton = GTK_WIDGET (g_object_get_data (G_OBJECT (w), XG_TOOL_BAR_PROXY_BUTTON)); xg_tool_bar_callback (wbutton, client_data); - FRAME_PTR f = (FRAME_PTR) g_object_get_data (G_OBJECT (wbutton), - XG_FRAME_DATA); } + +static gboolean +xg_tool_bar_help_callback P_ ((GtkWidget *w, + GdkEventCrossing *event, + gpointer client_data)); + +/* This callback is called when a help is to be shown for an item in + the detached tool bar when the detached tool bar it is not expanded. */ + +static gboolean +xg_tool_bar_proxy_help_callback (w, event, client_data) + GtkWidget *w; + GdkEventCrossing *event; + gpointer client_data; +{ + GtkWidget *wbutton = GTK_WIDGET (g_object_get_data (G_OBJECT (w), + XG_TOOL_BAR_PROXY_BUTTON)); + + xg_tool_bar_help_callback (wbutton, event, client_data); +} + + /* This callback is called when a tool item should create a proxy item, such as for the overflow menu. Also called when the tool bar is detached. If we don't create a proxy menu item, the detached tool bar will be @@ -3475,7 +3495,7 @@ xg_tool_bar_menu_proxy (toolitem, user_data) { GtkWidget *weventbox = gtk_bin_get_child (GTK_BIN (toolitem)); GtkButton *wbutton = GTK_BUTTON (gtk_bin_get_child (GTK_BIN (weventbox))); - GtkWidget *wmenuitem = gtk_image_menu_item_new (); + GtkWidget *wmenuitem = gtk_image_menu_item_new_with_label (""); GtkWidget *wmenuimage; if (gtk_button_get_use_stock (wbutton)) @@ -3545,9 +3565,24 @@ xg_tool_bar_menu_proxy (toolitem, user_data) G_CALLBACK (xg_tool_bar_proxy_callback), user_data); + g_object_set_data (G_OBJECT (wmenuitem), XG_TOOL_BAR_PROXY_BUTTON, (gpointer) wbutton); gtk_tool_item_set_proxy_menu_item (toolitem, "Emacs toolbar item", wmenuitem); + gtk_widget_set_sensitive (wmenuitem, GTK_WIDGET_SENSITIVE (wbutton)); + + /* Use enter/leave notify to show help. We use the events + rather than the GtkButton specific signals "enter" and + "leave", so we can have only one callback. The event + will tell us what kind of event it is. */ + g_signal_connect (G_OBJECT (wmenuitem), + "enter-notify-event", + G_CALLBACK (xg_tool_bar_proxy_help_callback), + user_data); + g_signal_connect (G_OBJECT (wmenuitem), + "leave-notify-event", + G_CALLBACK (xg_tool_bar_proxy_help_callback), + user_data); return TRUE; } @@ -4016,7 +4051,7 @@ update_frame_tool_bar (f) NULL); g_object_set_data (G_OBJECT (wbutton), XG_FRAME_DATA, (gpointer)f); - + /* Use enter/leave notify to show help. We use the events rather than the GtkButton specific signals "enter" and "leave", so we can have only one callback. The event -- 2.11.4.GIT