changeset 66181:dc3ff6945eb2

(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.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Tue, 18 Oct 2005 08:07:06 +0000
parents c80a3a047c83
children 5c64978b4698
files src/macterm.c
diffstat 1 files changed, 10 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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