emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r100815: Fix menu bar activation with


From: Jan D
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r100815: Fix menu bar activation with click for Motif/Lesstif.
Date: Wed, 14 Jul 2010 16:32:25 +0200
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 100815
committer: Jan D <address@hidden>
branch nick: trunk
timestamp: Wed 2010-07-14 16:32:25 +0200
message:
  Fix menu bar activation with click for Motif/Lesstif.
  
  * src/xdisp.c (pending_menu_activation): Remove extern declaration.
  (prepare_menu_bars): Remove setting of pending_menu_activation.
  
  * src/xmenu.c (pending_menu_activation): Remove.
  (x_activate_menubar): Set popup_activated_flag for Xt also. Remove
  setting of pending_menu_activation.
  (set_frame_menubar): Remove check of pending_menu_activation.
  Declare menubar_size before code.  Correct spelling in comment.
  
  * src/xterm.c (xm_scroll_callback, x_process_timeouts): K&R => prototype.
  (SET_SAVED_KEY_EVENT): Remove (not used).
  (SET_SAVED_MENU_EVENT): Rename to SET_SAVED_BUTTON_EVENT and
  remove size parameter.
  (handle_one_xevent): Check popup_activated () for menu for Xt also.
  Remove #ifdef USE_GTK around finish = X_EVENT_DROP.
  Remove #ifdef USE_MOTIF code that did SET_SAVED_BUTTON_EVENT for
  ButtonRelease.
modified:
  src/ChangeLog
  src/xdisp.c
  src/xmenu.c
  src/xterm.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-07-14 03:53:53 +0000
+++ b/src/ChangeLog     2010-07-14 14:32:25 +0000
@@ -1,3 +1,23 @@
+2010-07-14  Jan Djärv  <address@hidden>
+
+       * xterm.c (xm_scroll_callback, x_process_timeouts): K&R => prototype.
+       (SET_SAVED_KEY_EVENT): Remove (not used).
+       (SET_SAVED_MENU_EVENT): Rename to SET_SAVED_BUTTON_EVENT and
+       remove size parameter.
+       (handle_one_xevent): Check popup_activated () for menu for Xt also.
+       Remove #ifdef USE_GTK around finish = X_EVENT_DROP.
+       Remove #ifdef USE_MOTIF code that did SET_SAVED_BUTTON_EVENT for
+       ButtonRelease.
+
+       * xdisp.c (pending_menu_activation): Remove extern declaration.
+       (prepare_menu_bars): Remove setting of pending_menu_activation.
+
+       * xmenu.c (pending_menu_activation): Remove.
+       (x_activate_menubar): Set popup_activated_flag for Xt also. Remove
+       setting of pending_menu_activation.
+       (set_frame_menubar): Remove check of pending_menu_activation.
+       Declare menubar_size before code.  Correct spelling in comment.
+
 2010-07-14  Kenichi Handa  <address@hidden>
 
        * font.c (font_open_entity): Cancel previous change.

=== modified file 'src/xdisp.c'
--- a/src/xdisp.c       2010-07-13 10:57:00 +0000
+++ b/src/xdisp.c       2010-07-14 14:32:25 +0000
@@ -271,7 +271,6 @@
 #if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \
     || defined(HAVE_NS) || defined (USE_GTK)
 extern void set_frame_menubar (struct frame *f, int, int);
-extern int pending_menu_activation;
 #endif
 
 extern int interrupt_input;
@@ -9866,12 +9865,6 @@
       update_tool_bar (sf, 1);
 #endif
     }
-
-  /* Motif needs this.  See comment in xmenu.c.  Turn it off when
-     pending_menu_activation is not defined.  */
-#ifdef USE_X_TOOLKIT
-  pending_menu_activation = 0;
-#endif
 }
 
 

=== modified file 'src/xmenu.c'
--- a/src/xmenu.c       2010-07-12 19:56:46 +0000
+++ b/src/xmenu.c       2010-07-14 14:32:25 +0000
@@ -151,14 +151,6 @@
 extern widget_value *digest_single_submenu (int, int, int);
 #endif
 
-/* This is set nonzero after the user activates the menu bar, and set
-   to zero again after the menu bars are redisplayed by prepare_menu_bar.
-   While it is nonzero, all calls to set_frame_menubar go deep.
-
-   I don't understand why this is needed, but it does seem to be
-   needed on Motif, according to Marcus Daniels <address@hidden>.  */
-
-int pending_menu_activation;
 
 #ifdef USE_X_TOOLKIT
 
@@ -670,6 +662,7 @@
 
   set_frame_menubar (f, 0, 1);
   BLOCK_INPUT;
+  popup_activated_flag = 1;
 #ifdef USE_GTK
   /* If we click outside any menu item, the menu bar still grabs.
      So we send Press and the Release.  If outside, grab is released.
@@ -681,15 +674,10 @@
   f->output_data.x->saved_menu_event->type = ButtonPress;
   XPutBackEvent (f->output_data.x->display_info->display,
                  f->output_data.x->saved_menu_event);
-  popup_activated_flag = 1;
 #else
   XtDispatchEvent (f->output_data.x->saved_menu_event);
 #endif
   UNBLOCK_INPUT;
-#ifdef USE_MOTIF
-  if (f->output_data.x->saved_menu_event->type == ButtonRelease)
-    pending_menu_activation = 1;
-#endif
 
   /* Ignore this if we get it a second time.  */
   f->output_data.x->saved_menu_event->type = 0;
@@ -991,8 +979,6 @@
 
   if (! menubar_widget)
     deep_p = 1;
-  else if (pending_menu_activation && !deep_p)
-    deep_p = 1;
   /* Make the first call for any given frame always go deep.  */
   else if (!f->output_data.x->saved_menu_event && !deep_p)
     {
@@ -1274,10 +1260,11 @@
     }
 
   {
+    int menubar_size;
     if (f->output_data.x->menubar_widget)
       XtRealizeWidget (f->output_data.x->menubar_widget);
 
-    int menubar_size
+    menubar_size
       = (f->output_data.x->menubar_widget
         ? (f->output_data.x->menubar_widget->core.height
            + f->output_data.x->menubar_widget->core.border_width)
@@ -1286,7 +1273,7 @@
 #if 1 /* Experimentally, we now get the right results
         for -geometry -0-0 without this.  24 Aug 96, rms.
          Maybe so, but the menu bar size is missing the pixels so the
-         WM size hints are off by theses pixel.  Jan D, oct 2009.  */
+         WM size hints are off by these pixels.  Jan D, oct 2009.  */
 #ifdef USE_LUCID
     if (FRAME_EXTERNAL_MENU_BAR (f))
       {

=== modified file 'src/xterm.c'
--- a/src/xterm.c       2010-07-13 04:47:45 +0000
+++ b/src/xterm.c       2010-07-14 14:32:25 +0000
@@ -4159,9 +4159,7 @@
    CALL_DATA is a pointer to a XmScrollBarCallbackStruct.  */
 
 static void
-xm_scroll_callback (widget, client_data, call_data)
-     Widget widget;
-     XtPointer client_data, call_data;
+xm_scroll_callback (Widget widget, XtPointer client_data, XtPointer call_data)
 {
   struct scroll_bar *bar = (struct scroll_bar *) client_data;
   XmScrollBarCallbackStruct *cs = (XmScrollBarCallbackStruct *) call_data;
@@ -5546,22 +5544,18 @@
 
 static struct x_display_info *next_noop_dpyinfo;
 
-#define SET_SAVED_MENU_EVENT(size)                                     \
+#define SET_SAVED_BUTTON_EVENT                                          \
      do                                                                        
\
        {                                                               \
         if (f->output_data.x->saved_menu_event == 0)                   \
            f->output_data.x->saved_menu_event                          \
             = (XEvent *) xmalloc (sizeof (XEvent));                    \
-         memcpy (f->output_data.x->saved_menu_event, &event, size);    \
+         *f->output_data.x->saved_menu_event = event;                   \
         inev.ie.kind = MENU_BAR_ACTIVATE_EVENT;                        \
         XSETFRAME (inev.ie.frame_or_window, f);                        \
        }                                                               \
      while (0)
 
-#define SET_SAVED_BUTTON_EVENT SET_SAVED_MENU_EVENT (sizeof (XButtonEvent))
-#define SET_SAVED_KEY_EVENT    SET_SAVED_MENU_EVENT (sizeof (XKeyEvent))
-
-
 enum
 {
   X_EVENT_NORMAL,
@@ -6755,14 +6749,12 @@
            Instead, save it away
            and we will pass it to Xt from kbd_buffer_get_event.
            That way, we can run some Lisp code first.  */
-        if (
+        if (! popup_activated ()
 #ifdef USE_GTK
-            ! popup_activated ()
             /* Gtk+ menus only react to the first three buttons. */
             && event.xbutton.button < 3
-            &&
 #endif
-            f && event.type == ButtonPress
+            && f && event.type == ButtonPress
             /* Verify the event is really within the menu bar
                and not just sent to it due to grabbing.  */
             && event.xbutton.x >= 0
@@ -6773,30 +6765,13 @@
           {
             SET_SAVED_BUTTON_EVENT;
             XSETFRAME (last_mouse_press_frame, f);
-#ifdef USE_GTK
             *finish = X_EVENT_DROP;
-#endif
           }
         else if (event.type == ButtonPress)
           {
             last_mouse_press_frame = Qnil;
             goto OTHER;
           }
-
-#ifdef USE_MOTIF /* This should do not harm for Lucid,
-                   but I am trying to be cautious.  */
-        else if (event.type == ButtonRelease)
-          {
-            if (!NILP (last_mouse_press_frame))
-              {
-                f = XFRAME (last_mouse_press_frame);
-                if (f->output_data.x)
-                  SET_SAVED_BUTTON_EVENT;
-              }
-            else
-              goto OTHER;
-          }
-#endif /* USE_MOTIF */
         else
           goto OTHER;
 #endif /* USE_X_TOOLKIT || USE_GTK */
@@ -10336,8 +10311,7 @@
    that slows us down.  */
 
 static void
-x_process_timeouts (timer)
-     struct atimer *timer;
+x_process_timeouts (struct atimer *timer)
 {
   BLOCK_INPUT;
   x_timeout_atimer_activated_flag = 0;


reply via email to

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