diff options
| author | Karoly Lorentey | 2005-10-19 14:03:44 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2005-10-19 14:03:44 +0000 |
| commit | 6d8cf83040cdb54a0b1d72bd6a021f9815bd4af2 (patch) | |
| tree | f22e60624e5ffd52bbe19fea7809c2f5cb54704d /src | |
| parent | 734b679135207a8623dc460eb8d108befe080d46 (diff) | |
| parent | 6507c4c73dad972eb4f6bc224c8c22de6cbeec97 (diff) | |
| download | emacs-6d8cf83040cdb54a0b1d72bd6a021f9815bd4af2.tar.gz emacs-6d8cf83040cdb54a0b1d72bd6a021f9815bd4af2.zip | |
Merged from miles@gnu.org--gnu-2005 (patch 593-595)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-593
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-594
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-595
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-425
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 38 | ||||
| -rw-r--r-- | src/buffer.c | 12 | ||||
| -rw-r--r-- | src/keyboard.c | 26 | ||||
| -rw-r--r-- | src/sysdep.c | 25 | ||||
| -rw-r--r-- | src/xdisp.c | 31 | ||||
| -rw-r--r-- | src/xterm.c | 15 |
6 files changed, 116 insertions, 31 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index d8c93e96754..30db0548172 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,41 @@ | |||
| 1 | 2005-10-14 Kim F. Storm <storm@cua.dk> | ||
| 2 | |||
| 3 | * xterm.c (note_mouse_movement): Return 1 if mouse moved; 0 otherwise. | ||
| 4 | (handle_one_xevent): Only clear help_echo_string; restore it if | ||
| 5 | note_mouse_movement didn't record any mouse movement. | ||
| 6 | |||
| 7 | * xdisp.c (pos_visible_p): Convert w->hscroll to pixels before use. | ||
| 8 | (remember_mouse_glyph): Clear RECT if mouse is over an image glyph. | ||
| 9 | |||
| 10 | * keyboard.c (make_lispy_position): Adjust wx for left margin if ON_TEXT. | ||
| 11 | (Fposn_at_x_y): Fix calculation of x coordinate. | ||
| 12 | (Fposn_at_point): Return nil if point is hscrolled out of view. | ||
| 13 | |||
| 14 | 2005-10-13 Andreas Schwab <schwab@suse.de> | ||
| 15 | |||
| 16 | * sysdep.c (request_sigio, unrequest_sigio): Do nothing in | ||
| 17 | non-interactive mode. | ||
| 18 | |||
| 19 | 2005-10-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 20 | |||
| 21 | * xterm.c, w32term.c, macterm.c (note_mouse_movement): Undo last change. | ||
| 22 | |||
| 23 | 2005-10-12 Kim F. Storm <storm@cua.dk> | ||
| 24 | |||
| 25 | * xterm.c (handle_one_xevent): Clear last_mouse_glyph on mouse up/down. | ||
| 26 | |||
| 27 | 2005-10-12 Romain Francoise <romain@orebokech.com> | ||
| 28 | |||
| 29 | * buffer.c (init_buffer): Rename `rc' to `len' for clarity. | ||
| 30 | |||
| 31 | 2005-10-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 32 | |||
| 33 | * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to | ||
| 34 | get end of text rows. Obtain header-line/mode-line rows directly. | ||
| 35 | |||
| 36 | * xterm.c, w32term.c, macterm.c (note_mouse_movement): Restore | ||
| 37 | help_echo_string if mouse is moved inside last_mouse_glyph. | ||
| 38 | |||
| 1 | 2005-10-12 Kim F. Storm <storm@cua.dk> | 39 | 2005-10-12 Kim F. Storm <storm@cua.dk> |
| 2 | 40 | ||
| 3 | * xdisp.c (remember_mouse_glyph): New generic version based on | 41 | * xdisp.c (remember_mouse_glyph): New generic version based on |
diff --git a/src/buffer.c b/src/buffer.c index fb1ff1c22e9..c173136961e 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -5114,7 +5114,7 @@ init_buffer () | |||
| 5114 | char *pwd; | 5114 | char *pwd; |
| 5115 | struct stat dotstat, pwdstat; | 5115 | struct stat dotstat, pwdstat; |
| 5116 | Lisp_Object temp; | 5116 | Lisp_Object temp; |
| 5117 | int rc; | 5117 | int len; |
| 5118 | 5118 | ||
| 5119 | #ifdef USE_MMAP_FOR_BUFFERS | 5119 | #ifdef USE_MMAP_FOR_BUFFERS |
| 5120 | { | 5120 | { |
| @@ -5141,13 +5141,13 @@ init_buffer () | |||
| 5141 | #ifndef VMS | 5141 | #ifndef VMS |
| 5142 | /* Maybe this should really use some standard subroutine | 5142 | /* Maybe this should really use some standard subroutine |
| 5143 | whose definition is filename syntax dependent. */ | 5143 | whose definition is filename syntax dependent. */ |
| 5144 | rc = strlen (pwd); | 5144 | len = strlen (pwd); |
| 5145 | if (!(IS_DIRECTORY_SEP (pwd[rc - 1]))) | 5145 | if (!(IS_DIRECTORY_SEP (pwd[len - 1]))) |
| 5146 | { | 5146 | { |
| 5147 | /* Grow buffer to add directory separator and '\0'. */ | 5147 | /* Grow buffer to add directory separator and '\0'. */ |
| 5148 | pwd = (char *) xrealloc (pwd, rc + 2); | 5148 | pwd = (char *) xrealloc (pwd, len + 2); |
| 5149 | pwd[rc] = DIRECTORY_SEP; | 5149 | pwd[len] = DIRECTORY_SEP; |
| 5150 | pwd[rc + 1] = '\0'; | 5150 | pwd[len + 1] = '\0'; |
| 5151 | } | 5151 | } |
| 5152 | #endif /* not VMS */ | 5152 | #endif /* not VMS */ |
| 5153 | 5153 | ||
diff --git a/src/keyboard.c b/src/keyboard.c index 4937cc445bd..814ef5dc6c9 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -5108,7 +5108,11 @@ make_lispy_position (f, x, y, time) | |||
| 5108 | XSETINT (*x, wx); | 5108 | XSETINT (*x, wx); |
| 5109 | XSETINT (*y, wy); | 5109 | XSETINT (*y, wy); |
| 5110 | 5110 | ||
| 5111 | if (part == ON_MODE_LINE || part == ON_HEADER_LINE) | 5111 | if (part == ON_TEXT) |
| 5112 | { | ||
| 5113 | wx += WINDOW_LEFT_MARGIN_WIDTH (w); | ||
| 5114 | } | ||
| 5115 | else if (part == ON_MODE_LINE || part == ON_HEADER_LINE) | ||
| 5112 | { | 5116 | { |
| 5113 | /* Mode line or header line. Look for a string under | 5117 | /* Mode line or header line. Look for a string under |
| 5114 | the mouse that may have a `local-map' property. */ | 5118 | the mouse that may have a `local-map' property. */ |
| @@ -10779,11 +10783,11 @@ The `posn-' functions access elements of such lists. */) | |||
| 10779 | CHECK_LIVE_WINDOW (frame_or_window); | 10783 | CHECK_LIVE_WINDOW (frame_or_window); |
| 10780 | 10784 | ||
| 10781 | w = XWINDOW (frame_or_window); | 10785 | w = XWINDOW (frame_or_window); |
| 10782 | XSETINT (x, (WINDOW_TO_FRAME_PIXEL_X (w, XINT (x)) | 10786 | XSETINT (x, (XINT (x) |
| 10787 | + WINDOW_LEFT_EDGE_X (w) | ||
| 10783 | + (NILP (whole) | 10788 | + (NILP (whole) |
| 10784 | ? window_box_left_offset (w, TEXT_AREA) | 10789 | ? window_box_left_offset (w, TEXT_AREA) |
| 10785 | : - (WINDOW_LEFT_SCROLL_BAR_COLS (w) | 10790 | : 0))); |
| 10786 | * WINDOW_FRAME_COLUMN_WIDTH (w))))); | ||
| 10787 | XSETINT (y, WINDOW_TO_FRAME_PIXEL_Y (w, XINT (y))); | 10791 | XSETINT (y, WINDOW_TO_FRAME_PIXEL_Y (w, XINT (y))); |
| 10788 | frame_or_window = w->frame; | 10792 | frame_or_window = w->frame; |
| 10789 | } | 10793 | } |
| @@ -10809,9 +10813,21 @@ The `posn-' functions access elements of such lists. */) | |||
| 10809 | { | 10813 | { |
| 10810 | Lisp_Object tem; | 10814 | Lisp_Object tem; |
| 10811 | 10815 | ||
| 10816 | if (NILP (window)) | ||
| 10817 | window = selected_window; | ||
| 10818 | |||
| 10812 | tem = Fpos_visible_in_window_p (pos, window, Qt); | 10819 | tem = Fpos_visible_in_window_p (pos, window, Qt); |
| 10813 | if (!NILP (tem)) | 10820 | if (!NILP (tem)) |
| 10814 | tem = Fposn_at_x_y (XCAR (tem), XCAR (XCDR (tem)), window, Qnil); | 10821 | { |
| 10822 | Lisp_Object x = XCAR (tem); | ||
| 10823 | Lisp_Object y = XCAR (XCDR (tem)); | ||
| 10824 | |||
| 10825 | /* Point invisible due to hscrolling? */ | ||
| 10826 | if (XINT (x) < 0) | ||
| 10827 | return Qnil; | ||
| 10828 | tem = Fposn_at_x_y (x, y, window, Qnil); | ||
| 10829 | } | ||
| 10830 | |||
| 10815 | return tem; | 10831 | return tem; |
| 10816 | } | 10832 | } |
| 10817 | 10833 | ||
diff --git a/src/sysdep.c b/src/sysdep.c index c9464cd111f..0cf6ecb1f36 100644 --- a/src/sysdep.c +++ b/src/sysdep.c | |||
| @@ -1032,6 +1032,7 @@ reset_sigio (fd) | |||
| 1032 | 1032 | ||
| 1033 | #ifdef FASYNC /* F_SETFL does not imply existence of FASYNC */ | 1033 | #ifdef FASYNC /* F_SETFL does not imply existence of FASYNC */ |
| 1034 | /* XXX Uhm, FASYNC is not used anymore here. */ | 1034 | /* XXX Uhm, FASYNC is not used anymore here. */ |
| 1035 | /* XXX Yeah, but you need it for SIGIO, don't you? */ | ||
| 1035 | 1036 | ||
| 1036 | void | 1037 | void |
| 1037 | request_sigio () | 1038 | request_sigio () |
| @@ -1039,7 +1040,7 @@ request_sigio () | |||
| 1039 | /* XXX read_socket_hook is not global anymore. Is blocking SIGIO | 1040 | /* XXX read_socket_hook is not global anymore. Is blocking SIGIO |
| 1040 | bad under X? */ | 1041 | bad under X? */ |
| 1041 | #if 0 | 1042 | #if 0 |
| 1042 | if (read_socket_hook) | 1043 | if (noninteractive || read_socket_hook) |
| 1043 | return; | 1044 | return; |
| 1044 | #endif | 1045 | #endif |
| 1045 | 1046 | ||
| @@ -1057,7 +1058,7 @@ unrequest_sigio (void) | |||
| 1057 | /* XXX read_socket_hook is not global anymore. Is blocking SIGIO | 1058 | /* XXX read_socket_hook is not global anymore. Is blocking SIGIO |
| 1058 | bad under X? */ | 1059 | bad under X? */ |
| 1059 | #if 0 | 1060 | #if 0 |
| 1060 | if (read_socket_hook) | 1061 | if (noninteractive || read_socket_hook) |
| 1061 | return; | 1062 | return; |
| 1062 | #endif | 1063 | #endif |
| 1063 | 1064 | ||
| @@ -1076,7 +1077,7 @@ request_sigio () | |||
| 1076 | { | 1077 | { |
| 1077 | int on = 1; | 1078 | int on = 1; |
| 1078 | 1079 | ||
| 1079 | if (read_socket_hook) | 1080 | if (noninteractive || read_socket_hook) |
| 1080 | return; | 1081 | return; |
| 1081 | 1082 | ||
| 1082 | /* XXX CURTTY() is bogus here. */ | 1083 | /* XXX CURTTY() is bogus here. */ |
| @@ -1089,7 +1090,7 @@ unrequest_sigio () | |||
| 1089 | { | 1090 | { |
| 1090 | int off = 0; | 1091 | int off = 0; |
| 1091 | 1092 | ||
| 1092 | if (read_socket_hook) | 1093 | if (noninteractive || read_socket_hook) |
| 1093 | return; | 1094 | return; |
| 1094 | 1095 | ||
| 1095 | /* XXX CURTTY() is bogus here. */ | 1096 | /* XXX CURTTY() is bogus here. */ |
| @@ -1109,7 +1110,7 @@ request_sigio () | |||
| 1109 | int on = 1; | 1110 | int on = 1; |
| 1110 | sigset_t st; | 1111 | sigset_t st; |
| 1111 | 1112 | ||
| 1112 | if (read_socket_hook) | 1113 | if (noninteractive || read_socket_hook) |
| 1113 | return; | 1114 | return; |
| 1114 | 1115 | ||
| 1115 | sigemptyset (&st); | 1116 | sigemptyset (&st); |
| @@ -1124,7 +1125,7 @@ unrequest_sigio () | |||
| 1124 | { | 1125 | { |
| 1125 | int off = 0; | 1126 | int off = 0; |
| 1126 | 1127 | ||
| 1127 | if (read_socket_hook) | 1128 | if (noninteractive || read_socket_hook) |
| 1128 | return; | 1129 | return; |
| 1129 | 1130 | ||
| 1130 | ioctl (0, FIOASYNC, &off); /* XXX This fails for multiple ttys. */ | 1131 | ioctl (0, FIOASYNC, &off); /* XXX This fails for multiple ttys. */ |
| @@ -1137,7 +1138,7 @@ unrequest_sigio () | |||
| 1137 | void | 1138 | void |
| 1138 | request_sigio () | 1139 | request_sigio () |
| 1139 | { | 1140 | { |
| 1140 | if (read_socket_hook) | 1141 | if (noninteractive || read_socket_hook) |
| 1141 | return; | 1142 | return; |
| 1142 | 1143 | ||
| 1143 | croak ("request_sigio"); | 1144 | croak ("request_sigio"); |
| @@ -1146,7 +1147,7 @@ request_sigio () | |||
| 1146 | void | 1147 | void |
| 1147 | unrequest_sigio () | 1148 | unrequest_sigio () |
| 1148 | { | 1149 | { |
| 1149 | if (read_socket_hook) | 1150 | if (noninteractive || read_socket_hook) |
| 1150 | return; | 1151 | return; |
| 1151 | 1152 | ||
| 1152 | croak ("unrequest_sigio"); | 1153 | croak ("unrequest_sigio"); |
| @@ -2335,12 +2336,16 @@ reset_sigio (fd) | |||
| 2335 | void | 2336 | void |
| 2336 | request_sigio () | 2337 | request_sigio () |
| 2337 | { | 2338 | { |
| 2339 | if (noninteractive) | ||
| 2340 | return; | ||
| 2338 | croak ("request sigio"); | 2341 | croak ("request sigio"); |
| 2339 | } | 2342 | } |
| 2340 | 2343 | ||
| 2341 | void | 2344 | void |
| 2342 | unrequest_sigio () | 2345 | unrequest_sigio () |
| 2343 | { | 2346 | { |
| 2347 | if (noninteractive) | ||
| 2348 | return; | ||
| 2344 | croak ("unrequest sigio"); | 2349 | croak ("unrequest sigio"); |
| 2345 | } | 2350 | } |
| 2346 | 2351 | ||
| @@ -2884,6 +2889,8 @@ reset_sigio (fd) | |||
| 2884 | void | 2889 | void |
| 2885 | request_sigio () | 2890 | request_sigio () |
| 2886 | { | 2891 | { |
| 2892 | if (noninteractive) | ||
| 2893 | return; | ||
| 2887 | sigrelse (SIGTINT); | 2894 | sigrelse (SIGTINT); |
| 2888 | 2895 | ||
| 2889 | interrupts_deferred = 0; | 2896 | interrupts_deferred = 0; |
| @@ -2892,6 +2899,8 @@ request_sigio () | |||
| 2892 | void | 2899 | void |
| 2893 | unrequest_sigio () | 2900 | unrequest_sigio () |
| 2894 | { | 2901 | { |
| 2902 | if (noninteractive) | ||
| 2903 | return; | ||
| 2895 | sighold (SIGTINT); | 2904 | sighold (SIGTINT); |
| 2896 | 2905 | ||
| 2897 | interrupts_deferred = 1; | 2906 | interrupts_deferred = 1; |
diff --git a/src/xdisp.c b/src/xdisp.c index 013d3955c6f..ff3d9f2ca0c 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -1335,7 +1335,7 @@ pos_visible_p (w, charpos, x, y, rtop, rbot, exact_mode_line_heights_p) | |||
| 1335 | current_header_line_height = current_mode_line_height = -1; | 1335 | current_header_line_height = current_mode_line_height = -1; |
| 1336 | 1336 | ||
| 1337 | if (visible_p && XFASTINT (w->hscroll) > 0) | 1337 | if (visible_p && XFASTINT (w->hscroll) > 0) |
| 1338 | *x -= XFASTINT (w->hscroll); | 1338 | *x -= XFASTINT (w->hscroll) * WINDOW_FRAME_COLUMN_WIDTH (w); |
| 1339 | 1339 | ||
| 1340 | return visible_p; | 1340 | return visible_p; |
| 1341 | } | 1341 | } |
| @@ -2047,7 +2047,7 @@ remember_mouse_glyph (f, gx, gy, rect) | |||
| 2047 | height = WINDOW_FRAME_LINE_HEIGHT (w); | 2047 | height = WINDOW_FRAME_LINE_HEIGHT (w); |
| 2048 | 2048 | ||
| 2049 | r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); | 2049 | r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); |
| 2050 | end_row = r + w->current_matrix->nrows - 1; | 2050 | end_row = MATRIX_BOTTOM_TEXT_ROW (w->current_matrix, w); |
| 2051 | 2051 | ||
| 2052 | if (w->pseudo_window_p) | 2052 | if (w->pseudo_window_p) |
| 2053 | { | 2053 | { |
| @@ -2066,20 +2066,28 @@ remember_mouse_glyph (f, gx, gy, rect) | |||
| 2066 | area = RIGHT_MARGIN_AREA; | 2066 | area = RIGHT_MARGIN_AREA; |
| 2067 | goto text_glyph; | 2067 | goto text_glyph; |
| 2068 | 2068 | ||
| 2069 | case ON_TEXT: | ||
| 2070 | case ON_MODE_LINE: | ||
| 2071 | case ON_HEADER_LINE: | 2069 | case ON_HEADER_LINE: |
| 2070 | case ON_MODE_LINE: | ||
| 2071 | gr = (part == ON_HEADER_LINE | ||
| 2072 | ? MATRIX_HEADER_LINE_ROW (w->current_matrix) | ||
| 2073 | : MATRIX_MODE_LINE_ROW (w->current_matrix)); | ||
| 2074 | gy = gr->y; | ||
| 2075 | area = TEXT_AREA; | ||
| 2076 | goto text_glyph_row_found; | ||
| 2077 | |||
| 2078 | case ON_TEXT: | ||
| 2072 | area = TEXT_AREA; | 2079 | area = TEXT_AREA; |
| 2073 | 2080 | ||
| 2074 | text_glyph: | 2081 | text_glyph: |
| 2075 | gr = 0; gy = 0; | 2082 | gr = 0; gy = 0; |
| 2076 | for (; r < end_row && r->enabled_p; ++r) | 2083 | for (; r <= end_row && r->enabled_p; ++r) |
| 2077 | if (r->y + r->height > y) | 2084 | if (r->y + r->height > y) |
| 2078 | { | 2085 | { |
| 2079 | gr = r; gy = r->y; | 2086 | gr = r; gy = r->y; |
| 2080 | break; | 2087 | break; |
| 2081 | } | 2088 | } |
| 2082 | 2089 | ||
| 2090 | text_glyph_row_found: | ||
| 2083 | if (gr && gy <= y) | 2091 | if (gr && gy <= y) |
| 2084 | { | 2092 | { |
| 2085 | struct glyph *g = gr->glyphs[area]; | 2093 | struct glyph *g = gr->glyphs[area]; |
| @@ -2091,7 +2099,16 @@ remember_mouse_glyph (f, gx, gy, rect) | |||
| 2091 | break; | 2099 | break; |
| 2092 | 2100 | ||
| 2093 | if (g < end) | 2101 | if (g < end) |
| 2094 | width = g->pixel_width; | 2102 | { |
| 2103 | if (g->type == IMAGE_GLYPH) | ||
| 2104 | { | ||
| 2105 | /* Don't remember when mouse is over image, as | ||
| 2106 | image may have hot-spots. */ | ||
| 2107 | STORE_NATIVE_RECT (*rect, 0, 0, 0, 0); | ||
| 2108 | return; | ||
| 2109 | } | ||
| 2110 | width = g->pixel_width; | ||
| 2111 | } | ||
| 2095 | else | 2112 | else |
| 2096 | { | 2113 | { |
| 2097 | /* Use nominal char spacing at end of line. */ | 2114 | /* Use nominal char spacing at end of line. */ |
| @@ -2136,7 +2153,7 @@ remember_mouse_glyph (f, gx, gy, rect) | |||
| 2136 | 2153 | ||
| 2137 | row_glyph: | 2154 | row_glyph: |
| 2138 | gr = 0, gy = 0; | 2155 | gr = 0, gy = 0; |
| 2139 | for (; r < end_row && r->enabled_p; ++r) | 2156 | for (; r <= end_row && r->enabled_p; ++r) |
| 2140 | if (r->y + r->height > y) | 2157 | if (r->y + r->height > y) |
| 2141 | { | 2158 | { |
| 2142 | gr = r; gy = r->y; | 2159 | gr = r; gy = r->y; |
diff --git a/src/xterm.c b/src/xterm.c index 30a43995a57..ef40c8b790d 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -3588,7 +3588,7 @@ construct_mouse_click (result, event, f) | |||
| 3588 | static XMotionEvent last_mouse_motion_event; | 3588 | static XMotionEvent last_mouse_motion_event; |
| 3589 | static Lisp_Object last_mouse_motion_frame; | 3589 | static Lisp_Object last_mouse_motion_frame; |
| 3590 | 3590 | ||
| 3591 | static void | 3591 | static int |
| 3592 | note_mouse_movement (frame, event) | 3592 | note_mouse_movement (frame, event) |
| 3593 | FRAME_PTR frame; | 3593 | FRAME_PTR frame; |
| 3594 | XMotionEvent *event; | 3594 | XMotionEvent *event; |
| @@ -3602,10 +3602,11 @@ note_mouse_movement (frame, event) | |||
| 3602 | frame->mouse_moved = 1; | 3602 | frame->mouse_moved = 1; |
| 3603 | last_mouse_scroll_bar = Qnil; | 3603 | last_mouse_scroll_bar = Qnil; |
| 3604 | note_mouse_highlight (frame, -1, -1); | 3604 | note_mouse_highlight (frame, -1, -1); |
| 3605 | return 1; | ||
| 3605 | } | 3606 | } |
| 3606 | 3607 | ||
| 3607 | /* Has the mouse moved off the glyph it was on at the last sighting? */ | 3608 | /* Has the mouse moved off the glyph it was on at the last sighting? */ |
| 3608 | else if (event->x < last_mouse_glyph.x | 3609 | if (event->x < last_mouse_glyph.x |
| 3609 | || event->x >= last_mouse_glyph.x + last_mouse_glyph.width | 3610 | || event->x >= last_mouse_glyph.x + last_mouse_glyph.width |
| 3610 | || event->y < last_mouse_glyph.y | 3611 | || event->y < last_mouse_glyph.y |
| 3611 | || event->y >= last_mouse_glyph.y + last_mouse_glyph.height) | 3612 | || event->y >= last_mouse_glyph.y + last_mouse_glyph.height) |
| @@ -3615,7 +3616,10 @@ note_mouse_movement (frame, event) | |||
| 3615 | note_mouse_highlight (frame, event->x, event->y); | 3616 | note_mouse_highlight (frame, event->x, event->y); |
| 3616 | /* Remember which glyph we're now on. */ | 3617 | /* Remember which glyph we're now on. */ |
| 3617 | remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph); | 3618 | remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph); |
| 3619 | return 1; | ||
| 3618 | } | 3620 | } |
| 3621 | |||
| 3622 | return 0; | ||
| 3619 | } | 3623 | } |
| 3620 | 3624 | ||
| 3621 | 3625 | ||
| @@ -6496,8 +6500,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) | |||
| 6496 | case MotionNotify: | 6500 | case MotionNotify: |
| 6497 | { | 6501 | { |
| 6498 | previous_help_echo_string = help_echo_string; | 6502 | previous_help_echo_string = help_echo_string; |
| 6499 | help_echo_string = help_echo_object = help_echo_window = Qnil; | 6503 | help_echo_string = Qnil; |
| 6500 | help_echo_pos = -1; | ||
| 6501 | 6504 | ||
| 6502 | if (dpyinfo->grabbed && last_mouse_frame | 6505 | if (dpyinfo->grabbed && last_mouse_frame |
| 6503 | && FRAME_LIVE_P (last_mouse_frame)) | 6506 | && FRAME_LIVE_P (last_mouse_frame)) |
| @@ -6536,7 +6539,8 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) | |||
| 6536 | 6539 | ||
| 6537 | last_window=window; | 6540 | last_window=window; |
| 6538 | } | 6541 | } |
| 6539 | note_mouse_movement (f, &event.xmotion); | 6542 | if (!note_mouse_movement (f, &event.xmotion)) |
| 6543 | help_echo_string = previous_help_echo_string; | ||
| 6540 | } | 6544 | } |
| 6541 | else | 6545 | else |
| 6542 | { | 6546 | { |
| @@ -6645,6 +6649,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) | |||
| 6645 | int tool_bar_p = 0; | 6649 | int tool_bar_p = 0; |
| 6646 | 6650 | ||
| 6647 | bzero (&compose_status, sizeof (compose_status)); | 6651 | bzero (&compose_status, sizeof (compose_status)); |
| 6652 | bzero (&last_mouse_glyph, sizeof (last_mouse_glyph)); | ||
| 6648 | 6653 | ||
| 6649 | if (dpyinfo->grabbed | 6654 | if (dpyinfo->grabbed |
| 6650 | && last_mouse_frame | 6655 | && last_mouse_frame |