emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r118037: Fix Gtk+ tearoff not present on Customize E


From: Jan D.
Subject: [Emacs-diffs] trunk r118037: Fix Gtk+ tearoff not present on Customize Emacs and not at menu top.
Date: Sat, 04 Oct 2014 12:28:47 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 118037
revision-id: address@hidden
parent: address@hidden
committer: Jan D. <address@hidden>
branch nick: trunk
timestamp: Sat 2014-10-04 14:28:41 +0200
message:
  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.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/gtkutil.c                  gtkutil.c-20091113204419-o5vbwnq5f7feedwu-2527
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-10-04 08:20:24 +0000
+++ b/src/ChangeLog     2014-10-04 12:28:41 +0000
@@ -1,3 +1,9 @@
+2014-10-04  Jan Djärv  <address@hidden>
+
+       * 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.
+
 2014-10-04  Martin Rudalics  <address@hidden>
 
        * buffer.c (scroll_bar_width, scroll_bar_height): Fix

=== modified file 'src/gtkutil.c'
--- a/src/gtkutil.c     2014-10-01 13:21:08 +0000
+++ b/src/gtkutil.c     2014-10-04 12:28:41 +0000
@@ -2554,11 +2554,18 @@
 #ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW
   if (! menu_bar_p && add_tearoff_p)
     {
-      GtkWidget *tearoff = gtk_tearoff_menu_item_new ();
-      gtk_menu_shell_append (GTK_MENU_SHELL (wmenu), tearoff);
+      // Only add tearoff if menu is empty.
+      GList *list = gtk_container_get_children (GTK_CONTAINER (wmenu));
+      if (! list)
+        {
+          GtkWidget *tearoff = gtk_tearoff_menu_item_new ();
+          gtk_menu_shell_append (GTK_MENU_SHELL (wmenu), tearoff);
 
-      g_signal_connect (G_OBJECT (tearoff), "activate",
-                        G_CALLBACK (tearoff_activate), 0);
+          g_signal_connect (G_OBJECT (tearoff), "activate",
+                            G_CALLBACK (tearoff_activate), 0);
+        }
+      else
+        g_list_free (list);
     }
 #endif
 
@@ -3088,7 +3095,6 @@
   GList *list = 0;
   GList *iter;
   widget_value *cur;
-  bool has_tearoff_p = 0;
   GList *first_radio = 0;
 
   if (submenu)
@@ -3104,7 +3110,6 @@
   /* Skip tearoff items, they have no counterpart in val.  */
     if (GTK_IS_TEAROFF_MENU_ITEM (w))
       {
-        has_tearoff_p = 1;
         iter = g_list_next (iter);
         if (iter) w = GTK_WIDGET (iter->data);
         else break;
@@ -3198,7 +3203,7 @@
                              highlight_cb,
                              0,
                              0,
-                             ! has_tearoff_p,
+                             1,
                              submenu,
                              cl_data,
                              0);


reply via email to

[Prev in Thread] Current Thread [Next in Thread]