aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Moellmann2001-05-09 15:38:04 +0000
committerGerd Moellmann2001-05-09 15:38:04 +0000
commit0d487c52addabece10e30de0ffcfd7ec0004ee7c (patch)
treec4f384ba531d91774627b96c6f04246ac8665d42
parentc533a7e29a5760a65f1f51069db3981c9014fe52 (diff)
downloademacs-0d487c52addabece10e30de0ffcfd7ec0004ee7c.tar.gz
emacs-0d487c52addabece10e30de0ffcfd7ec0004ee7c.zip
(note_mouse_highlight): Don't change the mouse cursor
back to the text cursor shape without need.
-rw-r--r--src/ChangeLog5
-rw-r--r--src/xterm.c490
2 files changed, 253 insertions, 242 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index ed3ee74c5a7..b9261ed28db 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
12001-05-09 Gerd Moellmann <gerd@gnu.org>
2
3 * xterm.c (note_mouse_highlight): Don't change the mouse cursor
4 back to the text cursor shape without need.
5
12001-05-07 Gerd Moellmann <gerd@gnu.org> 62001-05-07 Gerd Moellmann <gerd@gnu.org>
2 7
3 * xfns.c (x_set_foreground_color): Set frame's cursor_pixel. 8 * xfns.c (x_set_foreground_color): Set frame's cursor_pixel.
diff --git a/src/xterm.c b/src/xterm.c
index 6bc3ced3a90..9201cf1cd13 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -6793,6 +6793,8 @@ note_mouse_highlight (f, x, y)
6793 int portion; 6793 int portion;
6794 Lisp_Object window; 6794 Lisp_Object window;
6795 struct window *w; 6795 struct window *w;
6796 Cursor cursor = None;
6797 struct buffer *b;
6796 6798
6797 /* When a menu is active, don't highlight because this looks odd. */ 6799 /* When a menu is active, don't highlight because this looks odd. */
6798#ifdef USE_X_TOOLKIT 6800#ifdef USE_X_TOOLKIT
@@ -6840,31 +6842,35 @@ note_mouse_highlight (f, x, y)
6840 return; 6842 return;
6841 } 6843 }
6842 6844
6845 /* Mouse is on the mode or header line? */
6843 if (portion == 1 || portion == 3) 6846 if (portion == 1 || portion == 3)
6844 { 6847 {
6845 /* Mouse is on the mode or top line. */
6846 note_mode_line_highlight (w, x, portion == 1); 6848 note_mode_line_highlight (w, x, portion == 1);
6847 return; 6849 return;
6848 } 6850 }
6849 else if (portion == 2) 6851
6850 XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 6852 if (portion == 2)
6851 f->output_data.x->horizontal_drag_cursor); 6853 cursor = f->output_data.x->horizontal_drag_cursor;
6852 else 6854 else
6853 XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 6855 cursor = f->output_data.x->text_cursor;
6854 f->output_data.x->text_cursor);
6855 6856
6856 /* Are we in a window whose display is up to date? 6857 /* Are we in a window whose display is up to date?
6857 And verify the buffer's text has not changed. */ 6858 And verify the buffer's text has not changed. */
6859 b = XBUFFER (w->buffer);
6858 if (/* Within text portion of the window. */ 6860 if (/* Within text portion of the window. */
6859 portion == 0 6861 portion == 0
6860 && EQ (w->window_end_valid, w->buffer) 6862 && EQ (w->window_end_valid, w->buffer)
6861 && XFASTINT (w->last_modified) == BUF_MODIFF (XBUFFER (w->buffer)) 6863 && XFASTINT (w->last_modified) == BUF_MODIFF (b)
6862 && (XFASTINT (w->last_overlay_modified) 6864 && XFASTINT (w->last_overlay_modified) == BUF_OVERLAY_MODIFF (b))
6863 == BUF_OVERLAY_MODIFF (XBUFFER (w->buffer))))
6864 { 6865 {
6865 int hpos, vpos, pos, i, area; 6866 int hpos, vpos, pos, i, area;
6866 struct glyph *glyph; 6867 struct glyph *glyph;
6867 Lisp_Object object; 6868 Lisp_Object object;
6869 Lisp_Object mouse_face = Qnil, overlay = Qnil, position;
6870 Lisp_Object *overlay_vec = NULL;
6871 int len, noverlays;
6872 struct buffer *obuf;
6873 int obegv, ozv, same_region;
6868 6874
6869 /* Find the glyph under X/Y. */ 6875 /* Find the glyph under X/Y. */
6870 glyph = x_y_to_hpos_vpos (w, x, y, &hpos, &vpos, &area, 0); 6876 glyph = x_y_to_hpos_vpos (w, x, y, &hpos, &vpos, &area, 0);
@@ -6883,261 +6889,261 @@ note_mouse_highlight (f, x, y)
6883 if (!STRINGP (object) && !BUFFERP (object)) 6889 if (!STRINGP (object) && !BUFFERP (object))
6884 return; 6890 return;
6885 6891
6886 { 6892 /* If we get an out-of-range value, return now; avoid an error. */
6887 Lisp_Object mouse_face = Qnil, overlay = Qnil, position; 6893 if (BUFFERP (object) && pos > BUF_Z (b))
6888 Lisp_Object *overlay_vec = NULL; 6894 return;
6889 int len, noverlays;
6890 struct buffer *obuf;
6891 int obegv, ozv;
6892
6893 /* If we get an out-of-range value, return now; avoid an error. */
6894 if (BUFFERP (object) && pos > BUF_Z (XBUFFER (w->buffer)))
6895 return;
6896 6895
6897 /* Make the window's buffer temporarily current for 6896 /* Make the window's buffer temporarily current for
6898 overlays_at and compute_char_face. */ 6897 overlays_at and compute_char_face. */
6899 obuf = current_buffer; 6898 obuf = current_buffer;
6900 current_buffer = XBUFFER (w->buffer); 6899 current_buffer = b;
6901 obegv = BEGV; 6900 obegv = BEGV;
6902 ozv = ZV; 6901 ozv = ZV;
6903 BEGV = BEG; 6902 BEGV = BEG;
6904 ZV = Z; 6903 ZV = Z;
6905 6904
6906 /* Is this char mouse-active or does it have help-echo? */ 6905 /* Is this char mouse-active or does it have help-echo? */
6907 position = make_number (pos); 6906 position = make_number (pos);
6908 6907
6909 if (BUFFERP (object)) 6908 if (BUFFERP (object))
6910 { 6909 {
6911 /* Put all the overlays we want in a vector in overlay_vec. 6910 /* Put all the overlays we want in a vector in overlay_vec.
6912 Store the length in len. If there are more than 10, make 6911 Store the length in len. If there are more than 10, make
6913 enough space for all, and try again. */ 6912 enough space for all, and try again. */
6914 len = 10; 6913 len = 10;
6915 overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object)); 6914 overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object));
6916 noverlays = overlays_at (pos, 0, &overlay_vec, &len, NULL, NULL, 0); 6915 noverlays = overlays_at (pos, 0, &overlay_vec, &len, NULL, NULL, 0);
6917 if (noverlays > len) 6916 if (noverlays > len)
6918 { 6917 {
6919 len = noverlays; 6918 len = noverlays;
6920 overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object)); 6919 overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object));
6921 noverlays = overlays_at (pos, 0, &overlay_vec, &len, NULL, NULL,0); 6920 noverlays = overlays_at (pos, 0, &overlay_vec, &len, NULL, NULL,0);
6922 } 6921 }
6923 6922
6924 /* Sort overlays into increasing priority order. */ 6923 /* Sort overlays into increasing priority order. */
6925 noverlays = sort_overlays (overlay_vec, noverlays, w); 6924 noverlays = sort_overlays (overlay_vec, noverlays, w);
6926 } 6925 }
6927 else 6926 else
6928 noverlays = 0; 6927 noverlays = 0;
6929 6928
6930 /* Check mouse-face highlighting. */ 6929 same_region = (EQ (window, dpyinfo->mouse_face_window)
6931 if (! (EQ (window, dpyinfo->mouse_face_window) 6930 && vpos >= dpyinfo->mouse_face_beg_row
6932 && vpos >= dpyinfo->mouse_face_beg_row 6931 && vpos <= dpyinfo->mouse_face_end_row
6933 && vpos <= dpyinfo->mouse_face_end_row 6932 && (vpos > dpyinfo->mouse_face_beg_row
6934 && (vpos > dpyinfo->mouse_face_beg_row 6933 || hpos >= dpyinfo->mouse_face_beg_col)
6935 || hpos >= dpyinfo->mouse_face_beg_col) 6934 && (vpos < dpyinfo->mouse_face_end_row
6936 && (vpos < dpyinfo->mouse_face_end_row 6935 || hpos < dpyinfo->mouse_face_end_col
6937 || hpos < dpyinfo->mouse_face_end_col 6936 || dpyinfo->mouse_face_past_end));
6938 || dpyinfo->mouse_face_past_end)) 6937
6939 /* If there exists an overlay with mouse-face overlapping 6938 if (same_region)
6940 the one we are currently highlighting, we have to 6939 cursor = None;
6941 check if we enter the overlapping overlay, and then 6940
6942 highlight only that. */ 6941 /* Check mouse-face highlighting. */
6943 || (OVERLAYP (dpyinfo->mouse_face_overlay) 6942 if (! same_region
6944 && mouse_face_overlay_overlaps (dpyinfo->mouse_face_overlay))) 6943 /* If there exists an overlay with mouse-face overlapping
6945 6944 the one we are currently highlighting, we have to
6946 { 6945 check if we enter the overlapping overlay, and then
6947 /* Clear the display of the old active region, if any. */ 6946 highlight only that. */
6948 clear_mouse_face (dpyinfo); 6947 || (OVERLAYP (dpyinfo->mouse_face_overlay)
6948 && mouse_face_overlay_overlaps (dpyinfo->mouse_face_overlay)))
6949 {
6950 /* Clear the display of the old active region, if any. */
6951 clear_mouse_face (dpyinfo);
6952 cursor = None;
6949 6953
6950 /* Find the highest priority overlay that has a mouse-face 6954 /* Find the highest priority overlay that has a mouse-face
6951 property. */ 6955 property. */
6952 overlay = Qnil; 6956 overlay = Qnil;
6953 for (i = noverlays - 1; i >= 0 && NILP (overlay); --i) 6957 for (i = noverlays - 1; i >= 0 && NILP (overlay); --i)
6954 { 6958 {
6955 mouse_face = Foverlay_get (overlay_vec[i], Qmouse_face); 6959 mouse_face = Foverlay_get (overlay_vec[i], Qmouse_face);
6956 if (!NILP (mouse_face)) 6960 if (!NILP (mouse_face))
6957 overlay = overlay_vec[i]; 6961 overlay = overlay_vec[i];
6958 } 6962 }
6959 dpyinfo->mouse_face_overlay = overlay; 6963 dpyinfo->mouse_face_overlay = overlay;
6960 6964
6961 /* If no overlay applies, get a text property. */ 6965 /* If no overlay applies, get a text property. */
6962 if (NILP (overlay)) 6966 if (NILP (overlay))
6963 mouse_face = Fget_text_property (position, Qmouse_face, object); 6967 mouse_face = Fget_text_property (position, Qmouse_face, object);
6964 6968
6965 /* Handle the overlay case. */ 6969 /* Handle the overlay case. */
6966 if (!NILP (overlay)) 6970 if (!NILP (overlay))
6967 { 6971 {
6968 /* Find the range of text around this char that 6972 /* Find the range of text around this char that
6969 should be active. */ 6973 should be active. */
6970 Lisp_Object before, after; 6974 Lisp_Object before, after;
6971 int ignore; 6975 int ignore;
6972 6976
6973 before = Foverlay_start (overlay); 6977 before = Foverlay_start (overlay);
6974 after = Foverlay_end (overlay); 6978 after = Foverlay_end (overlay);
6975 /* Record this as the current active region. */ 6979 /* Record this as the current active region. */
6976 fast_find_position (w, XFASTINT (before), 6980 fast_find_position (w, XFASTINT (before),
6977 &dpyinfo->mouse_face_beg_col, 6981 &dpyinfo->mouse_face_beg_col,
6978 &dpyinfo->mouse_face_beg_row, 6982 &dpyinfo->mouse_face_beg_row,
6979 &dpyinfo->mouse_face_beg_x, 6983 &dpyinfo->mouse_face_beg_x,
6980 &dpyinfo->mouse_face_beg_y); 6984 &dpyinfo->mouse_face_beg_y);
6981 dpyinfo->mouse_face_past_end 6985 dpyinfo->mouse_face_past_end
6982 = !fast_find_position (w, XFASTINT (after), 6986 = !fast_find_position (w, XFASTINT (after),
6983 &dpyinfo->mouse_face_end_col, 6987 &dpyinfo->mouse_face_end_col,
6984 &dpyinfo->mouse_face_end_row, 6988 &dpyinfo->mouse_face_end_row,
6985 &dpyinfo->mouse_face_end_x, 6989 &dpyinfo->mouse_face_end_x,
6986 &dpyinfo->mouse_face_end_y); 6990 &dpyinfo->mouse_face_end_y);
6987 dpyinfo->mouse_face_window = window; 6991 dpyinfo->mouse_face_window = window;
6992 dpyinfo->mouse_face_face_id
6993 = face_at_buffer_position (w, pos, 0, 0,
6994 &ignore, pos + 1, 1);
6995
6996 /* Display it as active. */
6997 show_mouse_face (dpyinfo, DRAW_MOUSE_FACE);
6998 }
6999 /* Handle the text property case. */
7000 else if (!NILP (mouse_face) && BUFFERP (object))
7001 {
7002 /* Find the range of text around this char that
7003 should be active. */
7004 Lisp_Object before, after, beginning, end;
7005 int ignore;
7006
7007 beginning = Fmarker_position (w->start);
7008 end = make_number (BUF_Z (XBUFFER (object))
7009 - XFASTINT (w->window_end_pos));
7010 before
7011 = Fprevious_single_property_change (make_number (pos + 1),
7012 Qmouse_face,
7013 object, beginning);
7014 after
7015 = Fnext_single_property_change (position, Qmouse_face,
7016 object, end);
7017
7018 /* Record this as the current active region. */
7019 fast_find_position (w, XFASTINT (before),
7020 &dpyinfo->mouse_face_beg_col,
7021 &dpyinfo->mouse_face_beg_row,
7022 &dpyinfo->mouse_face_beg_x,
7023 &dpyinfo->mouse_face_beg_y);
7024 dpyinfo->mouse_face_past_end
7025 = !fast_find_position (w, XFASTINT (after),
7026 &dpyinfo->mouse_face_end_col,
7027 &dpyinfo->mouse_face_end_row,
7028 &dpyinfo->mouse_face_end_x,
7029 &dpyinfo->mouse_face_end_y);
7030 dpyinfo->mouse_face_window = window;
7031
7032 if (BUFFERP (object))
6988 dpyinfo->mouse_face_face_id 7033 dpyinfo->mouse_face_face_id
6989 = face_at_buffer_position (w, pos, 0, 0, 7034 = face_at_buffer_position (w, pos, 0, 0,
6990 &ignore, pos + 1, 1); 7035 &ignore, pos + 1, 1);
6991 7036
6992 /* Display it as active. */ 7037 /* Display it as active. */
6993 show_mouse_face (dpyinfo, DRAW_MOUSE_FACE); 7038 show_mouse_face (dpyinfo, DRAW_MOUSE_FACE);
6994 } 7039 }
6995 /* Handle the text property case. */ 7040 else if (!NILP (mouse_face) && STRINGP (object))
6996 else if (!NILP (mouse_face) && BUFFERP (object)) 7041 {
6997 { 7042 Lisp_Object b, e;
6998 /* Find the range of text around this char that 7043 int ignore;
6999 should be active. */
7000 Lisp_Object before, after, beginning, end;
7001 int ignore;
7002
7003 beginning = Fmarker_position (w->start);
7004 end = make_number (BUF_Z (XBUFFER (object))
7005 - XFASTINT (w->window_end_pos));
7006 before
7007 = Fprevious_single_property_change (make_number (pos + 1),
7008 Qmouse_face,
7009 object, beginning);
7010 after
7011 = Fnext_single_property_change (position, Qmouse_face,
7012 object, end);
7013 7044
7014 /* Record this as the current active region. */ 7045 b = Fprevious_single_property_change (make_number (pos + 1),
7015 fast_find_position (w, XFASTINT (before), 7046 Qmouse_face,
7047 object, Qnil);
7048 e = Fnext_single_property_change (position, Qmouse_face,
7049 object, Qnil);
7050 if (NILP (b))
7051 b = make_number (0);
7052 if (NILP (e))
7053 e = make_number (XSTRING (object)->size - 1);
7054 fast_find_string_pos (w, XINT (b), object,
7016 &dpyinfo->mouse_face_beg_col, 7055 &dpyinfo->mouse_face_beg_col,
7017 &dpyinfo->mouse_face_beg_row, 7056 &dpyinfo->mouse_face_beg_row,
7018 &dpyinfo->mouse_face_beg_x, 7057 &dpyinfo->mouse_face_beg_x,
7019 &dpyinfo->mouse_face_beg_y); 7058 &dpyinfo->mouse_face_beg_y, 0);
7020 dpyinfo->mouse_face_past_end 7059 fast_find_string_pos (w, XINT (e), object,
7021 = !fast_find_position (w, XFASTINT (after), 7060 &dpyinfo->mouse_face_end_col,
7022 &dpyinfo->mouse_face_end_col, 7061 &dpyinfo->mouse_face_end_row,
7023 &dpyinfo->mouse_face_end_row, 7062 &dpyinfo->mouse_face_end_x,
7024 &dpyinfo->mouse_face_end_x, 7063 &dpyinfo->mouse_face_end_y, 1);
7025 &dpyinfo->mouse_face_end_y); 7064 dpyinfo->mouse_face_past_end = 0;
7026 dpyinfo->mouse_face_window = window; 7065 dpyinfo->mouse_face_window = window;
7027 7066 dpyinfo->mouse_face_face_id
7028 if (BUFFERP (object)) 7067 = face_at_string_position (w, object, pos, 0, 0, 0, &ignore,
7029 dpyinfo->mouse_face_face_id 7068 glyph->face_id, 1);
7030 = face_at_buffer_position (w, pos, 0, 0, 7069 show_mouse_face (dpyinfo, DRAW_MOUSE_FACE);
7031 &ignore, pos + 1, 1); 7070 }
7032 7071 }
7033 /* Display it as active. */
7034 show_mouse_face (dpyinfo, DRAW_MOUSE_FACE);
7035 }
7036 else if (!NILP (mouse_face) && STRINGP (object))
7037 {
7038 Lisp_Object b, e;
7039 int ignore;
7040
7041 b = Fprevious_single_property_change (make_number (pos + 1),
7042 Qmouse_face,
7043 object, Qnil);
7044 e = Fnext_single_property_change (position, Qmouse_face,
7045 object, Qnil);
7046 if (NILP (b))
7047 b = make_number (0);
7048 if (NILP (e))
7049 e = make_number (XSTRING (object)->size - 1);
7050 fast_find_string_pos (w, XINT (b), object,
7051 &dpyinfo->mouse_face_beg_col,
7052 &dpyinfo->mouse_face_beg_row,
7053 &dpyinfo->mouse_face_beg_x,
7054 &dpyinfo->mouse_face_beg_y, 0);
7055 fast_find_string_pos (w, XINT (e), object,
7056 &dpyinfo->mouse_face_end_col,
7057 &dpyinfo->mouse_face_end_row,
7058 &dpyinfo->mouse_face_end_x,
7059 &dpyinfo->mouse_face_end_y, 1);
7060 dpyinfo->mouse_face_past_end = 0;
7061 dpyinfo->mouse_face_window = window;
7062 dpyinfo->mouse_face_face_id
7063 = face_at_string_position (w, object, pos, 0, 0, 0, &ignore,
7064 glyph->face_id, 1);
7065 show_mouse_face (dpyinfo, DRAW_MOUSE_FACE);
7066 }
7067 }
7068 7072
7069 /* Look for a `help-echo' property. */ 7073 /* Look for a `help-echo' property. */
7070 { 7074 {
7071 Lisp_Object help, overlay; 7075 Lisp_Object help, overlay;
7072 7076
7073 /* Check overlays first. */ 7077 /* Check overlays first. */
7074 help = overlay = Qnil; 7078 help = overlay = Qnil;
7075 for (i = noverlays - 1; i >= 0 && NILP (help); --i) 7079 for (i = noverlays - 1; i >= 0 && NILP (help); --i)
7076 { 7080 {
7077 overlay = overlay_vec[i]; 7081 overlay = overlay_vec[i];
7078 help = Foverlay_get (overlay, Qhelp_echo); 7082 help = Foverlay_get (overlay, Qhelp_echo);
7079 } 7083 }
7080 7084
7081 if (!NILP (help)) 7085 if (!NILP (help))
7082 { 7086 {
7083 help_echo = help; 7087 help_echo = help;
7084 help_echo_window = window; 7088 help_echo_window = window;
7085 help_echo_object = overlay; 7089 help_echo_object = overlay;
7086 help_echo_pos = pos; 7090 help_echo_pos = pos;
7087 } 7091 }
7088 else 7092 else
7089 { 7093 {
7090 Lisp_Object object = glyph->object; 7094 Lisp_Object object = glyph->object;
7091 int charpos = glyph->charpos; 7095 int charpos = glyph->charpos;
7092 7096
7093 /* Try text properties. */ 7097 /* Try text properties. */
7094 if (STRINGP (object) 7098 if (STRINGP (object)
7095 && charpos >= 0 7099 && charpos >= 0
7096 && charpos < XSTRING (object)->size) 7100 && charpos < XSTRING (object)->size)
7097 { 7101 {
7098 help = Fget_text_property (make_number (charpos), 7102 help = Fget_text_property (make_number (charpos),
7099 Qhelp_echo, object); 7103 Qhelp_echo, object);
7100 if (NILP (help)) 7104 if (NILP (help))
7101 { 7105 {
7102 /* If the string itself doesn't specify a help-echo, 7106 /* If the string itself doesn't specify a help-echo,
7103 see if the buffer text ``under'' it does. */ 7107 see if the buffer text ``under'' it does. */
7104 struct glyph_row *r 7108 struct glyph_row *r
7105 = MATRIX_ROW (w->current_matrix, vpos); 7109 = MATRIX_ROW (w->current_matrix, vpos);
7106 int start = MATRIX_ROW_START_CHARPOS (r); 7110 int start = MATRIX_ROW_START_CHARPOS (r);
7107 int pos = string_buffer_position (w, object, start); 7111 int pos = string_buffer_position (w, object, start);
7108 if (pos > 0) 7112 if (pos > 0)
7109 { 7113 {
7110 help = Fget_text_property (make_number (pos), 7114 help = Fget_text_property (make_number (pos),
7111 Qhelp_echo, w->buffer); 7115 Qhelp_echo, w->buffer);
7112 if (!NILP (help)) 7116 if (!NILP (help))
7113 { 7117 {
7114 charpos = pos; 7118 charpos = pos;
7115 object = w->buffer; 7119 object = w->buffer;
7116 } 7120 }
7117 } 7121 }
7118 } 7122 }
7119 } 7123 }
7120 else if (BUFFERP (object) 7124 else if (BUFFERP (object)
7121 && charpos >= BEGV 7125 && charpos >= BEGV
7122 && charpos < ZV) 7126 && charpos < ZV)
7123 help = Fget_text_property (make_number (charpos), Qhelp_echo, 7127 help = Fget_text_property (make_number (charpos), Qhelp_echo,
7124 object); 7128 object);
7125 7129
7126 if (!NILP (help)) 7130 if (!NILP (help))
7127 { 7131 {
7128 help_echo = help; 7132 help_echo = help;
7129 help_echo_window = window; 7133 help_echo_window = window;
7130 help_echo_object = object; 7134 help_echo_object = object;
7131 help_echo_pos = charpos; 7135 help_echo_pos = charpos;
7132 } 7136 }
7133 } 7137 }
7134 }
7135
7136 BEGV = obegv;
7137 ZV = ozv;
7138 current_buffer = obuf;
7139 } 7138 }
7139
7140 BEGV = obegv;
7141 ZV = ozv;
7142 current_buffer = obuf;
7140 } 7143 }
7144
7145 if (cursor != None)
7146 XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), cursor);
7141} 7147}
7142 7148
7143static void 7149static void