# HG changeset patch # User Richard M. Stallman # Date 775899350 0 # Node ID 356e5509efda3d00b4784294812a50280f745c49 # Parent f4138f5dc0d3731cd7d72c2c2af4b9415a1678d8 (construct_mouse_click, construct_menu_click): Don't update x_mouse_grabbed, Vmouse_depressed, last_mouse_frame here. (XTread_socket): Update them here, so we do it without fail. (XTmouse_position, XTread_socket case MotionNotify): Check last_mouse_frame is nonzero before using it. diff -r f4138f5dc0d3 -r 356e5509efda src/xterm.c --- a/src/xterm.c Wed Aug 03 04:39:08 1994 +0000 +++ b/src/xterm.c Wed Aug 03 07:35:50 1994 +0000 @@ -2011,21 +2011,6 @@ ? up_modifier : down_modifier)); - /* Notice if the mouse is still grabbed. */ - if (event->type == ButtonPress) - { - if (! x_mouse_grabbed) - Vmouse_depressed = Qt; - x_mouse_grabbed |= (1 << event->button); - last_mouse_frame = f; - } - else if (event->type == ButtonRelease) - { - x_mouse_grabbed &= ~(1 << event->button); - if (!x_mouse_grabbed) - Vmouse_depressed = Qnil; - } - { int row, column; @@ -2061,15 +2046,6 @@ XSET (result->x, Lisp_Int, event->x); XSET (result->y, Lisp_Int, -1); XSET (result->frame_or_window, Lisp_Frame, f); - - /* Notice if the mouse is still grabbed. */ - if (event->type == ButtonPress) - { - if (! x_mouse_grabbed) - Vmouse_depressed = Qt; - x_mouse_grabbed |= (1 << event->button); - last_mouse_frame = f; - } } /* Function to report a mouse movement to the mainstream Emacs code. @@ -2538,7 +2514,8 @@ win = root; - if (x_mouse_grabbed && FRAME_LIVE_P (last_mouse_frame)) + if (x_mouse_grabbed && last_mouse_frame + && FRAME_LIVE_P (last_mouse_frame)) { /* If mouse was grabbed on a frame, give coords for that frame even if the mouse is now outside it. */ @@ -4128,7 +4105,8 @@ #ifdef HAVE_X11 case MotionNotify: { - if (x_mouse_grabbed && FRAME_LIVE_P (last_mouse_frame)) + if (x_mouse_grabbed && last_mouse_frame + && FRAME_LIVE_P (last_mouse_frame)) f = last_mouse_frame; else f = x_window_to_frame (event.xmotion.window); @@ -4304,16 +4282,23 @@ if (f && event.type == ButtonPress) construct_menu_click (&emacs_event, &event, f); - else if (f) - { - x_mouse_grabbed &= ~(1 << event.xbutton.button); - if (!x_mouse_grabbed) - Vmouse_depressed = Qnil; - } } #endif /* USE_X_TOOLKIT */ } + if (event.type == ButtonPress) + { + x_mouse_grabbed |= (1 << event.xbutton.button); + Vmouse_depressed = Qt; + last_mouse_frame = f; + } + else + { + x_mouse_grabbed &= ~(1 << event.xbutton.button); + if (!x_mouse_grabbed) + Vmouse_depressed = Qnil; + } + if (numchars >= 1 && emacs_event.kind != no_event) { bcopy (&emacs_event, bufp, sizeof (struct input_event));