summaryrefslogtreecommitdiff
path: root/src/window.h
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2013-02-04 17:39:55 +0200
committerEli Zaretskii <eliz@gnu.org>2013-02-04 17:39:55 +0200
commit86f7c0fe6000de85d8b282da761e65e18a73b287 (patch)
tree348144367f435ae190b2b76a6abce081c1e5c1ed /src/window.h
parent6e5c1569e941d385d28466a337ece0322bfa93e7 (diff)
downloademacs-86f7c0fe6000de85d8b282da761e65e18a73b287.tar.gz
Fix bugs #13623 and 13626 caused by changes in 2013-02-01T07:23:18Z!dmantipov@yandex.ru.
src/xdisp.c (window_buffer_changed): region_showing can be negative, which still means region is being displayed. (redisplay_internal): Resurrect code that forced redisplay of the whole window when showing region and the mark has changed. Record the new mark position to allow redisplay optimizations. (display_line): If it->region_beg_charpos is non-zero, set the window's region_showing member to -1. src/window.h (struct window) <region_showing>: Declare ptrdiff_t, not bitfield of 1 bit.
Diffstat (limited to 'src/window.h')
-rw-r--r--src/window.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/window.h b/src/window.h
index f28ce1424d0..0f4f242641e 100644
--- a/src/window.h
+++ b/src/window.h
@@ -333,13 +333,15 @@ struct window
the frame image that window_end_pos did not get onto the frame. */
unsigned window_end_valid : 1;
- /* Nonzero if we have highlighted the region (or any part of it). */
- unsigned region_showing : 1;
-
/* Amount by which lines of this window are scrolled in
y-direction (smooth scrolling). */
int vscroll;
+ /* If we have highlighted the region (or any part of it), the mark
+ position or -1 (the latter is used by the iterator for internal
+ purposes); otherwise zero. */
+ ptrdiff_t region_showing;
+
/* Z_BYTE - buffer position of the last glyph in the current matrix of W.
Should be nonnegative, and only valid if window_end_valid is nonzero. */
ptrdiff_t window_end_bytepos;