diff options
| author | Jan Djärv | 2014-10-04 14:28:41 +0200 |
|---|---|---|
| committer | Jan Djärv | 2014-10-04 14:28:41 +0200 |
| commit | 07e80dac81fb1f2ea263f7d272f80109d8f588b8 (patch) | |
| tree | d51fc8a2dd027a3c022420628fe622b16a685e07 | |
| parent | 3c6ba8b49bb87ada8a8cca6566ad0b6e3fc4e57d (diff) | |
| download | emacs-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/ChangeLog | 6 | ||||
| -rw-r--r-- | src/gtkutil.c | 19 |
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 @@ | |||
| 1 | 2014-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 | |||
| 1 | 2014-10-04 Martin Rudalics <rudalics@gmx.at> | 7 | 2014-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); |