aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog22
-rw-r--r--src/ccl.c2
-rw-r--r--src/data.c2
-rw-r--r--src/fns.c2
-rw-r--r--src/frame.c7
-rw-r--r--src/image.c2
-rw-r--r--src/macterm.c4
-rw-r--r--src/msdos.c4
-rw-r--r--src/sysdep.c2
-rw-r--r--src/term.c65
-rw-r--r--src/termhooks.h1
-rw-r--r--src/window.c2
-rw-r--r--src/xdisp.c10
-rw-r--r--src/xfaces.c2
14 files changed, 86 insertions, 41 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index f83f6bafd03..1ffb57b761a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,8 +1,30 @@
12007-05-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2
3 * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t
4 around current_column call.
5
62007-05-26 Dan Nicolaescu <dann@ics.uci.edu>
7
8 * xfaces.c (syms_of_xfaces): Delete stray semicolon.
9 * xdisp.c (next_element_from_buffer):
10 * window.c (delete_window):
11 * term.c (term_mouse_highlight):
12 * msdos.c (getdefdir):
13 * macterm.c (mac_create_bitmap_from_bitmap_data)
14 (init_font_name_table):
15 * fns.c (Fsxhash):
16 * data.c (Fmake_local_variable):
17 * ccl.c (ccl_driver): Likewise.
18
12007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 192007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2 20
3 * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event): 21 * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event):
4 Call mac_wakeup_from_rne on window size change. 22 Call mac_wakeup_from_rne on window size change.
5 23
242007-05-25 Chong Yidong <cyd@stupidchicken.com>
25
26 * image.c (uncache_image): Fix typo.
27
62007-05-23 Johannes Weiner <hannes@saeurebad.de> (tiny change) 282007-05-23 Johannes Weiner <hannes@saeurebad.de> (tiny change)
7 29
8 * keyboard.c (make_lispy_movement): Condition on HAVE_GPM too. 30 * keyboard.c (make_lispy_movement): Condition on HAVE_GPM too.
diff --git a/src/ccl.c b/src/ccl.c
index ded74fb6296..ee0250f6c2c 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -1261,7 +1261,7 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed)
1261 case CCL_MOD: reg[rrr] = i % j; break; 1261 case CCL_MOD: reg[rrr] = i % j; break;
1262 case CCL_AND: reg[rrr] = i & j; break; 1262 case CCL_AND: reg[rrr] = i & j; break;
1263 case CCL_OR: reg[rrr] = i | j; break; 1263 case CCL_OR: reg[rrr] = i | j; break;
1264 case CCL_XOR: reg[rrr] = i ^ j;; break; 1264 case CCL_XOR: reg[rrr] = i ^ j; break;
1265 case CCL_LSH: reg[rrr] = i << j; break; 1265 case CCL_LSH: reg[rrr] = i << j; break;
1266 case CCL_RSH: reg[rrr] = i >> j; break; 1266 case CCL_RSH: reg[rrr] = i >> j; break;
1267 case CCL_LSH8: reg[rrr] = (i << 8) | j; break; 1267 case CCL_LSH8: reg[rrr] = (i << 8) | j; break;
diff --git a/src/data.c b/src/data.c
index 2f682450a16..b31900f9c0c 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1587,7 +1587,7 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
1587 XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0; 1587 XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0;
1588 XBUFFER_LOCAL_VALUE (newval)->check_frame = 0; 1588 XBUFFER_LOCAL_VALUE (newval)->check_frame = 0;
1589 XBUFFER_LOCAL_VALUE (newval)->cdr = tem; 1589 XBUFFER_LOCAL_VALUE (newval)->cdr = tem;
1590 SET_SYMBOL_VALUE (variable, newval);; 1590 SET_SYMBOL_VALUE (variable, newval);
1591 } 1591 }
1592 /* Make sure this buffer has its own value of symbol. */ 1592 /* Make sure this buffer has its own value of symbol. */
1593 tem = Fassq (variable, current_buffer->local_var_alist); 1593 tem = Fassq (variable, current_buffer->local_var_alist);
diff --git a/src/fns.c b/src/fns.c
index c75c4d68cf3..8adaa0d3ea6 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -5215,7 +5215,7 @@ DEFUN ("sxhash", Fsxhash, Ssxhash, 1, 1, 0,
5215 (obj) 5215 (obj)
5216 Lisp_Object obj; 5216 Lisp_Object obj;
5217{ 5217{
5218 unsigned hash = sxhash (obj, 0);; 5218 unsigned hash = sxhash (obj, 0);
5219 return make_number (hash); 5219 return make_number (hash);
5220} 5220}
5221 5221
diff --git a/src/frame.c b/src/frame.c
index 5b8f9acaf0c..08379c7623c 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1795,6 +1795,13 @@ before calling this function on it, like this.
1795 Fselect_frame (frame); 1795 Fselect_frame (frame);
1796 mouse_moveto (XINT (x), XINT (y)); 1796 mouse_moveto (XINT (x), XINT (y));
1797 } 1797 }
1798#else
1799#ifdef HAVE_GPM
1800 {
1801 Fselect_frame (frame);
1802 term_mouse_moveto (XINT (x), XINT (y));
1803 }
1804#endif
1798#endif 1805#endif
1799#endif 1806#endif
1800 1807
diff --git a/src/image.c b/src/image.c
index dbe200195d0..fbd2f4e6a51 100644
--- a/src/image.c
+++ b/src/image.c
@@ -1639,7 +1639,7 @@ uncache_image (f, spec)
1639 Lisp_Object spec; 1639 Lisp_Object spec;
1640{ 1640{
1641 struct image_cache *c = FRAME_X_IMAGE_CACHE (f); 1641 struct image_cache *c = FRAME_X_IMAGE_CACHE (f);
1642 struct image *img = IMAGE_FROM_ID (f, lookup_image (f, spec)); 1642 struct image *img;
1643 unsigned hash = sxhash (spec, 0); 1643 unsigned hash = sxhash (spec, 0);
1644 int i = hash % IMAGE_CACHE_BUCKETS_SIZE; 1644 int i = hash % IMAGE_CACHE_BUCKETS_SIZE;
1645 1645
diff --git a/src/macterm.c b/src/macterm.c
index 871bf9cd6f9..1faf72485ce 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -736,7 +736,7 @@ mac_create_bitmap_from_bitmap_data (bitmap, bits, w, h)
736 /* Bitswap XBM bytes to match how Mac does things. */ 736 /* Bitswap XBM bytes to match how Mac does things. */
737 unsigned char c = *bits++; 737 unsigned char c = *bits++;
738 *p++ = (unsigned char)((swap_nibble[c & 0xf] << 4) 738 *p++ = (unsigned char)((swap_nibble[c & 0xf] << 4)
739 | (swap_nibble[(c>>4) & 0xf]));; 739 | (swap_nibble[(c>>4) & 0xf]));
740 } 740 }
741 } 741 }
742 742
@@ -7553,7 +7553,7 @@ init_font_name_table ()
7553 make_hash_table (Qequal, make_number (DEFAULT_HASH_SIZE), 7553 make_hash_table (Qequal, make_number (DEFAULT_HASH_SIZE),
7554 make_float (DEFAULT_REHASH_SIZE), 7554 make_float (DEFAULT_REHASH_SIZE),
7555 make_float (DEFAULT_REHASH_THRESHOLD), 7555 make_float (DEFAULT_REHASH_THRESHOLD),
7556 Qnil, Qnil, Qnil);; 7556 Qnil, Qnil, Qnil);
7557 h = XHASH_TABLE (atsu_font_id_hash); 7557 h = XHASH_TABLE (atsu_font_id_hash);
7558 7558
7559 err = ATSUFontCount (&nfonts); 7559 err = ATSUFontCount (&nfonts);
diff --git a/src/msdos.c b/src/msdos.c
index f9ce739fd5b..53c1d088e85 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -1584,7 +1584,7 @@ IT_note_mouse_highlight (struct frame *f, int x, int y)
1584 { 1584 {
1585 extern Lisp_Object Qmouse_face; 1585 extern Lisp_Object Qmouse_face;
1586 Lisp_Object mouse_face, overlay, position, *overlay_vec; 1586 Lisp_Object mouse_face, overlay, position, *overlay_vec;
1587 int noverlays, obegv, ozv;; 1587 int noverlays, obegv, ozv;
1588 struct buffer *obuf; 1588 struct buffer *obuf;
1589 1589
1590 /* If we get an out-of-range value, return now; avoid an error. */ 1590 /* If we get an out-of-range value, return now; avoid an error. */
@@ -4071,7 +4071,7 @@ getdefdir (drive, dst)
4071 int drive; 4071 int drive;
4072 char *dst; 4072 char *dst;
4073{ 4073{
4074 char in_path[4], *p = in_path, e = errno;; 4074 char in_path[4], *p = in_path, e = errno;
4075 4075
4076 /* Generate "X:." (when drive is X) or "." (when drive is 0). */ 4076 /* Generate "X:." (when drive is X) or "." (when drive is 0). */
4077 if (drive != 0) 4077 if (drive != 0)
diff --git a/src/sysdep.c b/src/sysdep.c
index 32efd7a056d..5d2d8154d14 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1751,7 +1751,7 @@ init_sys_modes (tty_out)
1751 if (term_gpm) 1751 if (term_gpm)
1752 { 1752 {
1753 fcntl (gpm_fd, F_SETOWN, getpid ()); 1753 fcntl (gpm_fd, F_SETOWN, getpid ());
1754 fcntl (gpm_fd, F_SETFL, O_NONBLOCK); 1754 fcntl (gpm_fd, F_SETFL, fcntl (gpm_fd, F_GETFL, 0) | O_NONBLOCK);
1755 init_sigio (gpm_fd); 1755 init_sigio (gpm_fd);
1756 } 1756 }
1757#endif /* HAVE_GPM */ 1757#endif /* HAVE_GPM */
diff --git a/src/term.c b/src/term.c
index 1d8e885ade9..f6b9306dc6b 100644
--- a/src/term.c
+++ b/src/term.c
@@ -205,7 +205,7 @@ int gpm_tty;
205static int mouse_face_beg_row, mouse_face_beg_col; 205static int mouse_face_beg_row, mouse_face_beg_col;
206static int mouse_face_end_row, mouse_face_end_col; 206static int mouse_face_end_row, mouse_face_end_col;
207static int mouse_face_past_end; 207static int mouse_face_past_end;
208static Lisp_Object mouse_face_window; 208static Lisp_Object Qmouse_face_window;
209static int mouse_face_face_id; 209static int mouse_face_face_id;
210 210
211/* FRAME and X, Y position of mouse when last checked for 211/* FRAME and X, Y position of mouse when last checked for
@@ -2344,10 +2344,23 @@ the currently selected frame. */)
2344 ***********************************************************************/ 2344 ***********************************************************************/
2345 2345
2346#ifdef HAVE_GPM 2346#ifdef HAVE_GPM
2347void term_mouse_moveto (int x, int y)
2348{
2349 const char *name;
2350 int fd;
2351 name = (const char *) ttyname (0);
2352 fd = open (name, O_WRONLY);
2353 /* TODO: how to set mouse position?
2354 SOME_FUNCTION (x, y, fd); */
2355 close (fd);
2356 last_mouse_x = x;
2357 last_mouse_y = y;
2358}
2359
2347static void 2360static void
2348term_show_mouse_face (enum draw_glyphs_face draw) 2361term_show_mouse_face (enum draw_glyphs_face draw)
2349{ 2362{
2350 struct window *w = XWINDOW (mouse_face_window); 2363 struct window *w = XWINDOW (Qmouse_face_window);
2351 int save_x, save_y; 2364 int save_x, save_y;
2352 int i, j; 2365 int i, j;
2353 2366
@@ -2426,12 +2439,12 @@ term_show_mouse_face (enum draw_glyphs_face draw)
2426static void 2439static void
2427term_clear_mouse_face () 2440term_clear_mouse_face ()
2428{ 2441{
2429 if (!NILP (mouse_face_window)) 2442 if (!NILP (Qmouse_face_window))
2430 term_show_mouse_face (DRAW_NORMAL_TEXT); 2443 term_show_mouse_face (DRAW_NORMAL_TEXT);
2431 2444
2432 mouse_face_beg_row = mouse_face_beg_col = -1; 2445 mouse_face_beg_row = mouse_face_beg_col = -1;
2433 mouse_face_end_row = mouse_face_end_col = -1; 2446 mouse_face_end_row = mouse_face_end_col = -1;
2434 mouse_face_window = Qnil; 2447 Qmouse_face_window = Qnil;
2435} 2448}
2436 2449
2437/* Find the glyph matrix position of buffer position POS in window W. 2450/* Find the glyph matrix position of buffer position POS in window W.
@@ -2532,7 +2545,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
2532 if (!WINDOWP (window)) 2545 if (!WINDOWP (window))
2533 return; 2546 return;
2534 2547
2535 if (!EQ (window, mouse_face_window)) 2548 if (!EQ (window, Qmouse_face_window))
2536 term_clear_mouse_face (); 2549 term_clear_mouse_face ();
2537 2550
2538 w = XWINDOW (window); 2551 w = XWINDOW (window);
@@ -2590,7 +2603,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
2590 { 2603 {
2591 extern Lisp_Object Qmouse_face; 2604 extern Lisp_Object Qmouse_face;
2592 Lisp_Object mouse_face, overlay, position, *overlay_vec; 2605 Lisp_Object mouse_face, overlay, position, *overlay_vec;
2593 int noverlays, obegv, ozv;; 2606 int noverlays, obegv, ozv;
2594 struct buffer *obuf; 2607 struct buffer *obuf;
2595 2608
2596 /* If we get an out-of-range value, return now; avoid an error. */ 2609 /* If we get an out-of-range value, return now; avoid an error. */
@@ -2615,7 +2628,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
2615 noverlays = sort_overlays (overlay_vec, noverlays, w); 2628 noverlays = sort_overlays (overlay_vec, noverlays, w);
2616 2629
2617 /* Check mouse-face highlighting. */ 2630 /* Check mouse-face highlighting. */
2618 if (!(EQ (window, mouse_face_window) 2631 if (!(EQ (window, Qmouse_face_window)
2619 && y >= mouse_face_beg_row 2632 && y >= mouse_face_beg_row
2620 && y <= mouse_face_end_row 2633 && y <= mouse_face_end_row
2621 && (y > mouse_face_beg_row 2634 && (y > mouse_face_beg_row
@@ -2665,7 +2678,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
2665 = !fast_find_position (w, XFASTINT (after), 2678 = !fast_find_position (w, XFASTINT (after),
2666 &mouse_face_end_col, 2679 &mouse_face_end_col,
2667 &mouse_face_end_row); 2680 &mouse_face_end_row);
2668 mouse_face_window = window; 2681 Qmouse_face_window = window;
2669 2682
2670 mouse_face_face_id 2683 mouse_face_face_id
2671 = face_at_buffer_position (w, pos, 0, 0, 2684 = face_at_buffer_position (w, pos, 0, 0,
@@ -2700,7 +2713,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
2700 = !fast_find_position (w, XFASTINT (after), 2713 = !fast_find_position (w, XFASTINT (after),
2701 &mouse_face_end_col, 2714 &mouse_face_end_col,
2702 &mouse_face_end_row); 2715 &mouse_face_end_row);
2703 mouse_face_window = window; 2716 Qmouse_face_window = window;
2704 2717
2705 mouse_face_face_id 2718 mouse_face_face_id
2706 = face_at_buffer_position (w, pos, 0, 0, 2719 = face_at_buffer_position (w, pos, 0, 0,
@@ -2787,33 +2800,31 @@ term_mouse_movement (FRAME_PTR frame, Gpm_Event *event)
2787 Set *time to the time the mouse was at the returned position. 2800 Set *time to the time the mouse was at the returned position.
2788 2801
2789 This should clear mouse_moved until the next motion 2802 This should clear mouse_moved until the next motion
2790 event arrives. 2803 event arrives. */
2791
2792 NOT CURRENTLY INVOKED: see mouse_position_hook below. */
2793static void 2804static void
2794term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window, 2805term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window,
2795 enum scroll_bar_part *part, Lisp_Object *x, 2806 enum scroll_bar_part *part, Lisp_Object *x,
2796 Lisp_Object *y, unsigned long *time) 2807 Lisp_Object *y, unsigned long *time)
2797{ 2808{
2798 Gpm_Event event;
2799 struct timeval now; 2809 struct timeval now;
2800 int i; 2810 Lisp_Object frame, window;
2801 2811 struct window *w;
2802 BLOCK_INPUT;
2803 2812
2804 *fp = SELECTED_FRAME (); 2813 *fp = SELECTED_FRAME ();
2814 (*fp)->mouse_moved = 0;
2805 2815
2806 *bar_window = Qnil; 2816 *bar_window = Qnil;
2807 *part = 0; 2817 *part = 0;
2808 2818
2809 i = Gpm_GetSnapshot (&event); 2819 XSETINT (*x, last_mouse_x);
2820 XSETINT (*y, last_mouse_y);
2821 XSETFRAME (frame, *fp);
2822 window = Fwindow_at (*x, *y, frame);
2810 2823
2811 XSETINT (*x, event.x); 2824 XSETINT (*x, last_mouse_x - WINDOW_LEFT_EDGE_COL (XWINDOW (window)));
2812 XSETINT (*y, event.y); 2825 XSETINT (*y, last_mouse_y - WINDOW_TOP_EDGE_LINE (XWINDOW (window)));
2813 gettimeofday(&now, 0); 2826 gettimeofday(&now, 0);
2814 *time = (now.tv_sec * 1000) + (now.tv_usec / 1000); 2827 *time = (now.tv_sec * 1000) + (now.tv_usec / 1000);
2815
2816 UNBLOCK_INPUT;
2817} 2828}
2818 2829
2819/* Prepare a mouse-event in *RESULT for placement in the input queue. 2830/* Prepare a mouse-event in *RESULT for placement in the input queue.
@@ -2912,7 +2923,7 @@ handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event, struct in
2912 name = (const char *) ttyname (0); 2923 name = (const char *) ttyname (0);
2913 fd = open (name, O_WRONLY); 2924 fd = open (name, O_WRONLY);
2914 ioctl (fd, TIOCLINUX, buf + sizeof (short) - 1); 2925 ioctl (fd, TIOCLINUX, buf + sizeof (short) - 1);
2915 close(fd); 2926 close (fd);
2916 2927
2917 term_mouse_movement (f, event); 2928 term_mouse_movement (f, event);
2918 2929
@@ -2927,7 +2938,6 @@ handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event, struct in
2927 else { 2938 else {
2928 f->mouse_moved = 0; 2939 f->mouse_moved = 0;
2929 term_mouse_click (&ie, event, f); 2940 term_mouse_click (&ie, event, f);
2930 //kbd_buffer_store_event_hold (&ie, hold_quit);
2931 } 2941 }
2932 2942
2933 done: 2943 done:
@@ -3259,11 +3269,8 @@ init_tty (char *name, char *terminal_type, int must_succeed)
3259 encode_terminal_bufsize = 0; 3269 encode_terminal_bufsize = 0;
3260 3270
3261#ifdef HAVE_GPM 3271#ifdef HAVE_GPM
3262 /* TODO: Can't get Gpm_Snapshot in term_mouse_position to work: test with 3272 mouse_position_hook = term_mouse_position;
3263 (mouse-position). Also set-mouse-position won't work as is. */ 3273 Qmouse_face_window = Qnil;
3264 /* mouse_position_hook = term_mouse_position; */
3265
3266 mouse_face_window = Qnil;
3267#endif 3274#endif
3268 3275
3269#ifdef WINDOWSNT 3276#ifdef WINDOWSNT
@@ -3899,6 +3906,8 @@ bigger, or it may make it blink, or it may do nothing at all. */);
3899#ifdef HAVE_GPM 3906#ifdef HAVE_GPM
3900 defsubr (&Sterm_open_connection); 3907 defsubr (&Sterm_open_connection);
3901 defsubr (&Sterm_close_connection); 3908 defsubr (&Sterm_close_connection);
3909
3910 staticpro (&Qmouse_face_window);
3902#endif /* HAVE_GPM */ 3911#endif /* HAVE_GPM */
3903} 3912}
3904 3913
diff --git a/src/termhooks.h b/src/termhooks.h
index 373d1e34987..1ca9234cac2 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -297,6 +297,7 @@ enum {
297#ifdef HAVE_GPM 297#ifdef HAVE_GPM
298#include <gpm.h> 298#include <gpm.h>
299extern int handle_one_term_event (struct tty_display_info *, Gpm_Event *, struct input_event *); 299extern int handle_one_term_event (struct tty_display_info *, Gpm_Event *, struct input_event *);
300extern void term_mouse_moveto (int, int);
300 301
301/* Nonzero means mouse is enabled on Linux console */ 302/* Nonzero means mouse is enabled on Linux console */
302extern int term_gpm; 303extern int term_gpm;
diff --git a/src/window.c b/src/window.c
index 154743e5b5d..90fdbf6c9b5 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1534,7 +1534,7 @@ delete_window (window)
1534 if (!EQ (window, pwindow)) 1534 if (!EQ (window, pwindow))
1535 break; 1535 break;
1536 /* Otherwise, try another window for SWINDOW. */ 1536 /* Otherwise, try another window for SWINDOW. */
1537 swindow = Fnext_window (swindow, Qlambda, Qnil);; 1537 swindow = Fnext_window (swindow, Qlambda, Qnil);
1538 1538
1539 /* If we get back to the frame's selected window, 1539 /* If we get back to the frame's selected window,
1540 it means there was no acceptable alternative, 1540 it means there was no acceptable alternative,
diff --git a/src/xdisp.c b/src/xdisp.c
index 8459be7abb7..268f1ec8b8c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -6256,7 +6256,7 @@ next_element_from_buffer (it)
6256 it->c = *p, it->len = 1; 6256 it->c = *p, it->len = 1;
6257 6257
6258 /* Record what we have and where it came from. */ 6258 /* Record what we have and where it came from. */
6259 it->what = IT_CHARACTER;; 6259 it->what = IT_CHARACTER;
6260 it->object = it->w->buffer; 6260 it->object = it->w->buffer;
6261 it->position = it->current.pos; 6261 it->position = it->current.pos;
6262 6262
@@ -10840,7 +10840,7 @@ redisplay_internal (preserve_echo_area)
10840 int must_finish = 0; 10840 int must_finish = 0;
10841 struct text_pos tlbufpos, tlendpos; 10841 struct text_pos tlbufpos, tlendpos;
10842 int number_of_visible_frames; 10842 int number_of_visible_frames;
10843 int count; 10843 int count, count1;
10844 struct frame *sf; 10844 struct frame *sf;
10845 int polling_stopped_here = 0; 10845 int polling_stopped_here = 0;
10846 10846
@@ -10978,6 +10978,10 @@ redisplay_internal (preserve_echo_area)
10978 update_mode_lines++; 10978 update_mode_lines++;
10979 } 10979 }
10980 10980
10981 /* Avoid invocation of point motion hooks by `current_column' below. */
10982 count1 = SPECPDL_INDEX ();
10983 specbind (Qinhibit_point_motion_hooks, Qt);
10984
10981 /* If %c is in the mode line, update it if needed. */ 10985 /* If %c is in the mode line, update it if needed. */
10982 if (!NILP (w->column_number_displayed) 10986 if (!NILP (w->column_number_displayed)
10983 /* This alternative quickly identifies a common case 10987 /* This alternative quickly identifies a common case
@@ -10989,6 +10993,8 @@ redisplay_internal (preserve_echo_area)
10989 != (int) current_column ())) /* iftc */ 10993 != (int) current_column ())) /* iftc */
10990 w->update_mode_line = Qt; 10994 w->update_mode_line = Qt;
10991 10995
10996 unbind_to (count1, Qnil);
10997
10992 FRAME_SCROLL_BOTTOM_VPOS (XFRAME (w->frame)) = -1; 10998 FRAME_SCROLL_BOTTOM_VPOS (XFRAME (w->frame)) = -1;
10993 10999
10994 /* The variable buffer_shared is set in redisplay_window and 11000 /* The variable buffer_shared is set in redisplay_window and
diff --git a/src/xfaces.c b/src/xfaces.c
index ca55b82a9b2..86a40078919 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -8010,7 +8010,7 @@ syms_of_xfaces ()
8010 staticpro (&QCforeground); 8010 staticpro (&QCforeground);
8011 QCbackground = intern (":background"); 8011 QCbackground = intern (":background");
8012 staticpro (&QCbackground); 8012 staticpro (&QCbackground);
8013 QCstipple = intern (":stipple");; 8013 QCstipple = intern (":stipple");
8014 staticpro (&QCstipple); 8014 staticpro (&QCstipple);
8015 QCwidth = intern (":width"); 8015 QCwidth = intern (":width");
8016 staticpro (&QCwidth); 8016 staticpro (&QCwidth);