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;
}
}
- if (er.what != mouseDown && part_code != inContent)
+ if (er.what != mouseDown &&
+ (part_code != inContent || dpyinfo->grabbed == 0))
break;
switch (part_code)
{
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;
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