# HG changeset patch # User YAMAMOTO Mitsuharu # Date 1129622826 0 # Node ID dc3ff6945eb2133687054bcabadcbb0f838a0fc0 # Parent c80a3a047c836b90801e8675e141bff853dcc237 (note_mouse_movement): Use PtInRect. (XTread_socket): Also ignore mouse motion just before a button release event. Don't process button release event when mouse is not grabbed. diff -r c80a3a047c83 -r dc3ff6945eb2 src/macterm.c --- a/src/macterm.c Tue Oct 18 08:04:11 2005 +0000 +++ b/src/macterm.c Tue Oct 18 08:07:06 2005 +0000 @@ -3910,10 +3910,7 @@ return 1; } /* Has the mouse moved off the glyph it was on at the last sighting? */ - if (pos->h < last_mouse_glyph.left - || pos->h >= last_mouse_glyph.right - || pos->v < last_mouse_glyph.top - || pos->v >= last_mouse_glyph.bottom) + if (!PtInRect (*pos, &last_mouse_glyph)) { frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; @@ -9521,7 +9518,8 @@ } } - if (er.what != mouseDown && part_code != inContent) + if (er.what != mouseDown && + (part_code != inContent || dpyinfo->grabbed == 0)) break; switch (part_code) @@ -9644,12 +9642,6 @@ { dpyinfo->grabbed |= (1 << inev.code); last_mouse_frame = f; - /* Ignore any mouse motion that happened - before this event; any subsequent - mouse-movement Emacs events should reflect - only motion after the ButtonPress. */ - if (f != 0) - f->mouse_moved = 0; if (!tool_bar_p) last_tool_bar_item = -1; @@ -9665,6 +9657,13 @@ dpyinfo->grabbed &= ~(1 << inev.code); } + /* Ignore any mouse motion that happened before + this event; any subsequent mouse-movement Emacs + events should reflect only motion after the + ButtonPress. */ + if (f != 0) + f->mouse_moved = 0; + #ifdef USE_TOOLKIT_SCROLL_BARS if (inev.kind == MOUSE_CLICK_EVENT) #endif