Commit 2237cac9 authored by Richard M. Stallman's avatar Richard M. Stallman

(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.
parent 95c0d3a7
...@@ -195,9 +195,10 @@ static int curs_y; ...@@ -195,9 +195,10 @@ static int curs_y;
/* Where the mouse was last time we reported a mouse event. */ /* Where the mouse was last time we reported a mouse event. */
static FRAME_PTR last_mouse_frame; static FRAME_PTR last_mouse_frame;
static FRAME_PTR last_mouse_press_frame;
static XRectangle last_mouse_glyph; static XRectangle last_mouse_glyph;
static Lisp_Object last_mouse_press_frame;
/* The scroll bar in which the last X motion event occurred. /* 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 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) ...@@ -3633,7 +3634,7 @@ XTread_socket (sd, bufp, numchars, waitp, expected)
unsigned char copy_buffer[81]; unsigned char copy_buffer[81];
int modifiers; int modifiers;
#ifdef USE_X_TOOLKIT #ifdef USE_MOTIF
if (lw_window_is_in_menubar (event.xkey.window, if (lw_window_is_in_menubar (event.xkey.window,
f->output_data.x->menubar_widget f->output_data.x->menubar_widget
)) ))
...@@ -3641,7 +3642,7 @@ XTread_socket (sd, bufp, numchars, waitp, expected) ...@@ -3641,7 +3642,7 @@ XTread_socket (sd, bufp, numchars, waitp, expected)
SET_SAVED_KEY_EVENT; SET_SAVED_KEY_EVENT;
break; break;
} }
#endif /* USE_X_TOOLKIT */ #endif /* USE_MOTIF */
event.xkey.state event.xkey.state
|= x_emacs_to_x_modifiers (FRAME_X_DISPLAY_INFO (f), |= x_emacs_to_x_modifiers (FRAME_X_DISPLAY_INFO (f),
...@@ -4048,17 +4049,26 @@ XTread_socket (sd, bufp, numchars, waitp, expected) ...@@ -4048,17 +4049,26 @@ XTread_socket (sd, bufp, numchars, waitp, expected)
&& event.xbutton.same_screen) && event.xbutton.same_screen)
{ {
SET_SAVED_BUTTON_EVENT; 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) else if (event.type == ButtonRelease)
{ {
if (!f) if (!NILP (last_mouse_press_frame))
f = last_mouse_press_frame;
if (f)
{ {
SET_SAVED_BUTTON_EVENT; f = XFRAME (last_mouse_press_frame);
if (f->output_data.x)
{
SET_SAVED_BUTTON_EVENT;
}
} }
} }
#endif /* USE_MOTIF */
else else
goto OTHER; goto OTHER;
#endif /* USE_X_TOOLKIT */ #endif /* USE_X_TOOLKIT */
...@@ -6223,6 +6233,9 @@ syms_of_xterm () ...@@ -6223,6 +6233,9 @@ syms_of_xterm ()
staticpro (&Qvendor_specific_keysyms); staticpro (&Qvendor_specific_keysyms);
Qvendor_specific_keysyms = intern ("vendor-specific-keysyms"); Qvendor_specific_keysyms = intern ("vendor-specific-keysyms");
staticpro (&last_mouse_press_frame);
last_mouse_press_frame = Qnil;
} }
#endif /* not HAVE_X_WINDOWS */ #endif /* not HAVE_X_WINDOWS */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment