diff options
author | Eli Zaretskii <eliz@gnu.org> | 2013-02-04 17:39:55 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2013-02-04 17:39:55 +0200 |
commit | 86f7c0fe6000de85d8b282da761e65e18a73b287 (patch) | |
tree | 348144367f435ae190b2b76a6abce081c1e5c1ed /src/window.h | |
parent | 6e5c1569e941d385d28466a337ece0322bfa93e7 (diff) | |
download | emacs-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.h | 8 |
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; |