emacs-diffs
[Top][All Lists]
Advanced

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

feature/pgtk 72d223a: Enable shallow menu bar updates on PGTK


From: Po Lu
Subject: feature/pgtk 72d223a: Enable shallow menu bar updates on PGTK
Date: Tue, 30 Nov 2021 00:55:52 -0500 (EST)

branch: feature/pgtk
commit 72d223a5445831d681a1fbc6f23370cef5252cd3
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Enable shallow menu bar updates on PGTK
    
    * 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  | 18 ++++++++++++++++++
 src/pgtkmenu.c |  4 ----
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/gtkutil.c b/src/gtkutil.c
index c2b3391..d872d39 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -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.
diff --git a/src/pgtkmenu.c b/src/pgtkmenu.c
index 88020c3..6f8f872 100644
--- a/src/pgtkmenu.c
+++ b/src/pgtkmenu.c
@@ -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;



reply via email to

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