diff options
author | Richard M. Stallman <rms@gnu.org> | 1996-07-30 21:10:40 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1996-07-30 21:10:40 +0000 |
commit | 2237cac94952a62eeae0438c23ea1986fb4a7663 (patch) | |
tree | 2da42eb57f7e5453981c649e142e3f0eb14d2081 | |
parent | 95c0d3a7dd4238b8bb68fade83006eda950b8da3 (diff) | |
download | emacs-2237cac94952a62eeae0438c23ea1986fb4a7663.tar.gz |
(XTread_socket): Pass keys in menu bar to toolkit alone
only for Motif.
(XTread_socket): Fixing previous change:
Clear last_mouse_press_frame on non-menu-bar ButtonPress.
Always use last_mouse_press_frame as frame for ButtonRelease.
But ignore the event if frame's output_data.x is null.
Save the ButtonRelease only if USE_MOTIF.
(last_mouse_press_frame): This is now a Lisp object.
(syms_of_xterm): Initialize and staticpro it.
-rw-r--r-- | src/xterm.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/xterm.c b/src/xterm.c index 16711587b5c..ea3c8899d59 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -195,9 +195,10 @@ static int curs_y; /* Where the mouse was last time we reported a mouse event. */ static FRAME_PTR last_mouse_frame; -static FRAME_PTR last_mouse_press_frame; static XRectangle last_mouse_glyph; +static Lisp_Object last_mouse_press_frame; + /* The scroll bar in which the last X motion event occurred. If the last X motion event occurred in a scroll bar, we set this @@ -3633,7 +3634,7 @@ XTread_socket (sd, bufp, numchars, waitp, expected) unsigned char copy_buffer[81]; int modifiers; -#ifdef USE_X_TOOLKIT +#ifdef USE_MOTIF if (lw_window_is_in_menubar (event.xkey.window, f->output_data.x->menubar_widget )) @@ -3641,7 +3642,7 @@ XTread_socket (sd, bufp, numchars, waitp, expected) SET_SAVED_KEY_EVENT; break; } -#endif /* USE_X_TOOLKIT */ +#endif /* USE_MOTIF */ event.xkey.state |= x_emacs_to_x_modifiers (FRAME_X_DISPLAY_INFO (f), @@ -4048,17 +4049,26 @@ XTread_socket (sd, bufp, numchars, waitp, expected) && event.xbutton.same_screen) { SET_SAVED_BUTTON_EVENT; - last_mouse_press_frame = f; + XSETFRAME (last_mouse_press_frame, f); + } + else if (event.type == ButtonPress) + { + last_mouse_press_frame = Qnil; } +#ifdef USE_MOTIF /* This should do not harm for Lucid, + but I am trying to be cautious. */ else if (event.type == ButtonRelease) { - if (!f) - f = last_mouse_press_frame; - if (f) + if (!NILP (last_mouse_press_frame)) { - SET_SAVED_BUTTON_EVENT; + f = XFRAME (last_mouse_press_frame); + if (f->output_data.x) + { + SET_SAVED_BUTTON_EVENT; + } } } +#endif /* USE_MOTIF */ else goto OTHER; #endif /* USE_X_TOOLKIT */ @@ -6223,6 +6233,9 @@ syms_of_xterm () staticpro (&Qvendor_specific_keysyms); Qvendor_specific_keysyms = intern ("vendor-specific-keysyms"); + + staticpro (&last_mouse_press_frame); + last_mouse_press_frame = Qnil; } #endif /* not HAVE_X_WINDOWS */ |