[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-26 4da8799: Fix misbehavior when drawing three-pixel
From: |
Martin Rudalics |
Subject: |
[Emacs-diffs] emacs-26 4da8799: Fix misbehavior when drawing three-pixel high horizontal dividers (Bug#29353) |
Date: |
Mon, 20 Nov 2017 03:20:39 -0500 (EST) |
branch: emacs-26
commit 4da87999c234155300b30b01c5a7e221d65e4cc8
Author: Martin Rudalics <address@hidden>
Commit: Martin Rudalics <address@hidden>
Fix misbehavior when drawing three-pixel high horizontal dividers
(Bug#29353)
* src/xterm.c (x_draw_window_divider):
* src/w32term.c (w32_draw_window_divider): Fix misbehavior when
drawing three-pixel high horizontal dividers (Bug#29353).
The misbehavior was noted by Keith David Bershatsky and analyzed by Alan
Third.
---
src/w32term.c | 12 ++++++++----
src/xterm.c | 12 ++++++++----
2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/src/w32term.c b/src/w32term.c
index e62d49d..7a3b2cc 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -660,21 +660,25 @@ w32_draw_window_divider (struct window *w, int x0, int
x1, int y0, int y1)
? face_last->foreground
: FRAME_FOREGROUND_PIXEL (f));
- if (y1 - y0 > x1 - x0 && x1 - x0 > 2)
- /* Vertical. */
+ if ((y1 - y0 > x1 - x0) && (x1 - x0 >= 3))
+ /* A vertical divider, at least three pixels wide: Draw first and
+ last pixels differently. */
{
w32_fill_area_abs (f, hdc, color_first, x0, y0, x0 + 1, y1);
w32_fill_area_abs (f, hdc, color, x0 + 1, y0, x1 - 1, y1);
w32_fill_area_abs (f, hdc, color_last, x1 - 1, y0, x1, y1);
}
- else if (x1 - x0 > y1 - y0 && y1 - y0 > 3)
- /* Horizontal. */
+ else if ((x1 - x0 > y1 - y0) && (y1 - y0 >= 3))
+ /* A horizontal divider, at least three pixels high: Draw first and
+ last pixels differently. */
{
w32_fill_area_abs (f, hdc, color_first, x0, y0, x1, y0 + 1);
w32_fill_area_abs (f, hdc, color, x0, y0 + 1, x1, y1 - 1);
w32_fill_area_abs (f, hdc, color_last, x0, y1 - 1, x1, y1);
}
else
+ /* In any other case do not draw the first and last pixels
+ differently. */
w32_fill_area_abs (f, hdc, color, x0, y0, x1, y1);
release_frame_dc (f, hdc);
diff --git a/src/xterm.c b/src/xterm.c
index 28abfae..1deb7b4 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -1104,8 +1104,9 @@ x_draw_window_divider (struct window *w, int x0, int x1,
int y0, int y1)
: FRAME_FOREGROUND_PIXEL (f));
Display *display = FRAME_X_DISPLAY (f);
- if (y1 - y0 > x1 - x0 && x1 - x0 > 2)
- /* Vertical. */
+ if ((y1 - y0 > x1 - x0) && (x1 - x0 >= 3))
+ /* A vertical divider, at least three pixels wide: Draw first and
+ last pixels differently. */
{
XSetForeground (display, f->output_data.x->normal_gc, color_first);
x_fill_rectangle (f, f->output_data.x->normal_gc,
@@ -1117,8 +1118,9 @@ x_draw_window_divider (struct window *w, int x0, int x1,
int y0, int y1)
x_fill_rectangle (f, f->output_data.x->normal_gc,
x1 - 1, y0, 1, y1 - y0);
}
- else if (x1 - x0 > y1 - y0 && y1 - y0 > 3)
- /* Horizontal. */
+ else if ((x1 - x0 > y1 - y0) && (y1 - y0 >= 3))
+ /* A horizontal divider, at least three pixels high: Draw first and
+ last pixels differently. */
{
XSetForeground (display, f->output_data.x->normal_gc, color_first);
x_fill_rectangle (f, f->output_data.x->normal_gc,
@@ -1132,6 +1134,8 @@ x_draw_window_divider (struct window *w, int x0, int x1,
int y0, int y1)
}
else
{
+ /* In any other case do not draw the first and last pixels
+ differently. */
XSetForeground (display, f->output_data.x->normal_gc, color);
x_fill_rectangle (f, f->output_data.x->normal_gc,
x0, y0, x1 - x0, y1 - y0);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-26 4da8799: Fix misbehavior when drawing three-pixel high horizontal dividers (Bug#29353),
Martin Rudalics <=