aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Djärv2014-10-04 14:28:41 +0200
committerJan Djärv2014-10-04 14:28:41 +0200
commit07e80dac81fb1f2ea263f7d272f80109d8f588b8 (patch)
treed51fc8a2dd027a3c022420628fe622b16a685e07
parent3c6ba8b49bb87ada8a8cca6566ad0b6e3fc4e57d (diff)
downloademacs-07e80dac81fb1f2ea263f7d272f80109d8f588b8.tar.gz
emacs-07e80dac81fb1f2ea263f7d272f80109d8f588b8.zip
Fix Gtk+ tearoff not present on Customize Emacs and not at menu top.
* gtkutil.c (create_menus): Only add tearoffs to empty menus. (xg_update_submenu): Remove has_tearoff_p, pass 1 to create_menus for add_tearoff_p.
-rw-r--r--src/ChangeLog6
-rw-r--r--src/gtkutil.c19
2 files changed, 18 insertions, 7 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 4885778b920..8005b738d6d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12014-10-04 Jan Djärv <jan.h.d@swipnet.se>
2
3 * gtkutil.c (create_menus): Only add tearoffs to empty menus.
4 (xg_update_submenu): Remove has_tearoff_p, pass 1 to create_menus
5 for add_tearoff_p.
6
12014-10-04 Martin Rudalics <rudalics@gmx.at> 72014-10-04 Martin Rudalics <rudalics@gmx.at>
2 8
3 * buffer.c (scroll_bar_width, scroll_bar_height): Fix 9 * buffer.c (scroll_bar_width, scroll_bar_height): Fix
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 595e6e0bb6a..445e59c335d 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2554,11 +2554,18 @@ create_menus (widget_value *data,
2554#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW 2554#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW
2555 if (! menu_bar_p && add_tearoff_p) 2555 if (! menu_bar_p && add_tearoff_p)
2556 { 2556 {
2557 GtkWidget *tearoff = gtk_tearoff_menu_item_new (); 2557 // Only add tearoff if menu is empty.
2558 gtk_menu_shell_append (GTK_MENU_SHELL (wmenu), tearoff); 2558 GList *list = gtk_container_get_children (GTK_CONTAINER (wmenu));
2559 if (! list)
2560 {
2561 GtkWidget *tearoff = gtk_tearoff_menu_item_new ();
2562 gtk_menu_shell_append (GTK_MENU_SHELL (wmenu), tearoff);
2559 2563
2560 g_signal_connect (G_OBJECT (tearoff), "activate", 2564 g_signal_connect (G_OBJECT (tearoff), "activate",
2561 G_CALLBACK (tearoff_activate), 0); 2565 G_CALLBACK (tearoff_activate), 0);
2566 }
2567 else
2568 g_list_free (list);
2562 } 2569 }
2563#endif 2570#endif
2564 2571
@@ -3088,7 +3095,6 @@ xg_update_submenu (GtkWidget *submenu,
3088 GList *list = 0; 3095 GList *list = 0;
3089 GList *iter; 3096 GList *iter;
3090 widget_value *cur; 3097 widget_value *cur;
3091 bool has_tearoff_p = 0;
3092 GList *first_radio = 0; 3098 GList *first_radio = 0;
3093 3099
3094 if (submenu) 3100 if (submenu)
@@ -3104,7 +3110,6 @@ xg_update_submenu (GtkWidget *submenu,
3104 /* Skip tearoff items, they have no counterpart in val. */ 3110 /* Skip tearoff items, they have no counterpart in val. */
3105 if (GTK_IS_TEAROFF_MENU_ITEM (w)) 3111 if (GTK_IS_TEAROFF_MENU_ITEM (w))
3106 { 3112 {
3107 has_tearoff_p = 1;
3108 iter = g_list_next (iter); 3113 iter = g_list_next (iter);
3109 if (iter) w = GTK_WIDGET (iter->data); 3114 if (iter) w = GTK_WIDGET (iter->data);
3110 else break; 3115 else break;
@@ -3198,7 +3203,7 @@ xg_update_submenu (GtkWidget *submenu,
3198 highlight_cb, 3203 highlight_cb,
3199 0, 3204 0,
3200 0, 3205 0,
3201 ! has_tearoff_p, 3206 1,
3202 submenu, 3207 submenu,
3203 cl_data, 3208 cl_data,
3204 0); 3209 0);