]> git.eshelyaron.com Git - emacs.git/commitdiff
Enable shallow menu bar updates on PGTK
authorPo Lu <luangruo@yahoo.com>
Tue, 30 Nov 2021 05:55:16 +0000 (13:55 +0800)
committerPo Lu <luangruo@yahoo.com>
Tue, 30 Nov 2021 05:55:16 +0000 (13:55 +0800)
* src/gtkutil.c (menu_bar_button_pressed_cb): New function.
(create_menus): Connect button press event signal.

* src/pgtkmenu.c (set_frame_menubar): Allow shallow updates.

src/gtkutil.c
src/pgtkmenu.c

index c2b33912efb66635d9fcd61965a2fee66104ed47..d872d393caf5a2adef6663b7ba5a265b5c9544cc 100644 (file)
@@ -3141,6 +3141,20 @@ xg_create_one_menuitem (widget_value *item,
   return w;
 }
 
+#ifdef HAVE_PGTK
+static gboolean
+menu_bar_button_pressed_cb (GtkWidget *widget, GdkEvent *event,
+                           gpointer user_data)
+{
+  struct frame *f = user_data;
+
+  if (event->button.button < 4)
+    set_frame_menubar (f, true);
+
+  return false;
+}
+#endif
+
 /* Create a full menu tree specified by DATA.
    F is the frame the created menu belongs to.
    SELECT_CB is the callback to use when a menu item is selected.
@@ -3198,6 +3212,10 @@ create_menus (widget_value *data,
       else
         {
           wmenu = gtk_menu_bar_new ();
+#ifdef HAVE_PGTK
+         g_signal_connect (G_OBJECT (wmenu), "button-press-event",
+                           G_CALLBACK (menu_bar_button_pressed_cb), f);
+#endif
           /* Set width of menu bar to a small value so it doesn't enlarge
              a small initial frame size.  The width will be set to the
              width of the frame later on when it is added to a container.
index 88020c3044b245ee35dcdaf55dd2222bb5080ac6..6f8f8720ded1c38e57a943a82d65db6d6798bc3a 100644 (file)
@@ -297,10 +297,6 @@ set_frame_menubar (struct frame *f, bool deep_p)
   if (!menubar_widget)
     deep_p = true;
 
-  /* Since button_event handler in pgtk emacs doesn't handle mouse
-   * events in menubars, the menu needs to be built now.  */
-  deep_p = true;
-
   if (deep_p)
     {
       struct buffer *prev = current_buffer;