diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 22 | ||||
| -rw-r--r-- | src/ccl.c | 2 | ||||
| -rw-r--r-- | src/data.c | 2 | ||||
| -rw-r--r-- | src/fns.c | 2 | ||||
| -rw-r--r-- | src/frame.c | 7 | ||||
| -rw-r--r-- | src/image.c | 2 | ||||
| -rw-r--r-- | src/macterm.c | 4 | ||||
| -rw-r--r-- | src/msdos.c | 4 | ||||
| -rw-r--r-- | src/sysdep.c | 2 | ||||
| -rw-r--r-- | src/term.c | 65 | ||||
| -rw-r--r-- | src/termhooks.h | 1 | ||||
| -rw-r--r-- | src/window.c | 2 | ||||
| -rw-r--r-- | src/xdisp.c | 10 | ||||
| -rw-r--r-- | src/xfaces.c | 2 |
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 @@ | |||
| 1 | 2007-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 | |||
| 6 | 2007-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 | |||
| 1 | 2007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 19 | 2007-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 | ||
| 24 | 2007-05-25 Chong Yidong <cyd@stupidchicken.com> | ||
| 25 | |||
| 26 | * image.c (uncache_image): Fix typo. | ||
| 27 | |||
| 6 | 2007-05-23 Johannes Weiner <hannes@saeurebad.de> (tiny change) | 28 | 2007-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. |
| @@ -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); |
| @@ -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; | |||
| 205 | static int mouse_face_beg_row, mouse_face_beg_col; | 205 | static int mouse_face_beg_row, mouse_face_beg_col; |
| 206 | static int mouse_face_end_row, mouse_face_end_col; | 206 | static int mouse_face_end_row, mouse_face_end_col; |
| 207 | static int mouse_face_past_end; | 207 | static int mouse_face_past_end; |
| 208 | static Lisp_Object mouse_face_window; | 208 | static Lisp_Object Qmouse_face_window; |
| 209 | static int mouse_face_face_id; | 209 | static 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 |
| 2347 | void 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 | |||
| 2347 | static void | 2360 | static void |
| 2348 | term_show_mouse_face (enum draw_glyphs_face draw) | 2361 | term_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) | |||
| 2426 | static void | 2439 | static void |
| 2427 | term_clear_mouse_face () | 2440 | term_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. */ | ||
| 2793 | static void | 2804 | static void |
| 2794 | term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window, | 2805 | term_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> |
| 299 | extern int handle_one_term_event (struct tty_display_info *, Gpm_Event *, struct input_event *); | 299 | extern int handle_one_term_event (struct tty_display_info *, Gpm_Event *, struct input_event *); |
| 300 | extern 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 */ |
| 302 | extern int term_gpm; | 303 | extern 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); |