From e0e0af3bd5e06526bf69ec1f0f9958371eef59d7 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Mon, 2 Dec 2013 10:05:57 +0900 Subject: [PATCH] Remove fringe background extension code on X11. * xterm.h (struct scroll_bar): Remove member `fringe_extended_p'. * xterm.c (x_draw_fringe_bitmap, x_scroll_run): Remove code for fringe background extension. (x_scroll_bar_create): Remove variables `sb_left' and `sb_width', because they are now always the same as `left' and `width', respectively. Remove code for the case that `width' and `sb_width' are different. --- src/ChangeLog | 11 ++++ src/xterm.c | 175 ++++++-------------------------------------------- src/xterm.h | 4 -- 3 files changed, 31 insertions(+), 159 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index fc9e8431146..6eb258ce4d5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,14 @@ +2013-12-02 YAMAMOTO Mitsuharu + + * xterm.h (struct scroll_bar): Remove member `fringe_extended_p'. + + * xterm.c (x_draw_fringe_bitmap, x_scroll_run): Remove code for + fringe background extension. + (x_scroll_bar_create): Remove variables `sb_left' and `sb_width', + because they are now always the same as `left' and `width', + respectively. Remove code for the case that `width' and + `sb_width' are different. + 2013-12-01 Paul Eggert Fix minor problems found by static checking. diff --git a/src/xterm.c b/src/xterm.c index 9673535be79..35f7facc80e 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -653,10 +653,8 @@ x_draw_fringe_bitmap (struct window *w, struct glyph_row *row, struct draw_fring /* Must clip because of partially visible lines. */ x_clip_to_row (w, row, ANY_AREA, gc); - if (!p->overlay_p) + if (p->bx >= 0 && !p->overlay_p) { - int bx = p->bx, by = p->by, nx = p->nx, ny = p->ny; - /* In case the same realized face is used for fringes and for something displayed in the text (e.g. face `region' on mono-displays, the fill style may have been changed to @@ -666,54 +664,8 @@ x_draw_fringe_bitmap (struct window *w, struct glyph_row *row, struct draw_fring else XSetForeground (display, face->gc, face->background); -#ifdef USE_TOOLKIT_SCROLL_BARS - /* If the fringe is adjacent to the left (right) scroll bar of a - leftmost (rightmost, respectively) window, then extend its - background to the gap between the fringe and the bar. */ - if ((WINDOW_LEFTMOST_P (w) - && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)) - || (WINDOW_RIGHTMOST_P (w) - && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))) - { - int sb_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); - - if (sb_width > 0) - { - int bar_area_x = WINDOW_SCROLL_BAR_AREA_X (w); - int bar_area_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); - - if (bx < 0) - { - /* Bitmap fills the fringe. */ - if (bar_area_x + bar_area_width == p->x) - bx = bar_area_x + sb_width; - else if (p->x + p->wd == bar_area_x) - bx = bar_area_x; - if (bx >= 0) - { - int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w); - - nx = bar_area_width - sb_width; - by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height, - row->y)); - ny = row->visible_height; - } - } - else - { - if (bar_area_x + bar_area_width == bx) - { - bx = bar_area_x + sb_width; - nx += bar_area_width - sb_width; - } - else if (bx + nx == bar_area_x) - nx += bar_area_width - sb_width; - } - } - } -#endif - if (bx >= 0 && nx > 0) - XFillRectangle (display, window, face->gc, bx, by, nx, ny); + XFillRectangle (display, window, face->gc, + p->bx, p->by, p->nx, p->ny); if (!face->stipple) XSetForeground (display, face->gc, face->foreground); @@ -3128,33 +3080,6 @@ x_scroll_run (struct window *w, struct run *run) fringe of W. */ window_box (w, ANY_AREA, &x, &y, &width, &height); -#ifdef USE_TOOLKIT_SCROLL_BARS - /* If the fringe is adjacent to the left (right) scroll bar of a - leftmost (rightmost, respectively) window, then extend its - background to the gap between the fringe and the bar. */ - if ((WINDOW_LEFTMOST_P (w) - && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)) - || (WINDOW_RIGHTMOST_P (w) - && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))) - { - int sb_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); - - if (sb_width > 0) - { - int bar_area_x = WINDOW_SCROLL_BAR_AREA_X (w); - int bar_area_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); - - if (bar_area_x + bar_area_width == x) - { - x = bar_area_x + sb_width; - width += bar_area_width - sb_width; - } - else if (x + width == bar_area_x) - width += bar_area_width - sb_width; - } - } -#endif - from_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->current_y); to_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->desired_y); bottom_y = y + height; @@ -4991,7 +4916,6 @@ x_scroll_bar_create (struct window *w, int top, int left, int width, int height) bar->start = 0; bar->end = 0; bar->dragging = -1; - bar->fringe_extended_p = 0; #if defined (USE_TOOLKIT_SCROLL_BARS) && defined (USE_LUCID) bar->last_seen_part = scroll_bar_nowhere; #endif @@ -5167,44 +5091,17 @@ XTset_vertical_scroll_bar (struct window *w, int portion, int whole, int positio struct frame *f = XFRAME (w->frame); Lisp_Object barobj; struct scroll_bar *bar; - int top, height, left, sb_left, width, sb_width; + int top, height, left, width; int window_y, window_height; -#ifdef USE_TOOLKIT_SCROLL_BARS - bool fringe_extended_p; -#endif /* Get window dimensions. */ window_box (w, ANY_AREA, 0, &window_y, 0, &window_height); top = window_y; - width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); height = window_height; - /* Compute the left edge of the scroll bar area. */ + /* Compute the left edge and the width of the scroll bar area. */ left = WINDOW_SCROLL_BAR_AREA_X (w); - - /* Compute the width of the scroll bar which might be less than - the width of the area reserved for the scroll bar. */ - if (WINDOW_CONFIG_SCROLL_BAR_WIDTH (w) > 0) - sb_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); - else - sb_width = width; - - /* Compute the left edge of the scroll bar. */ -#ifdef USE_TOOLKIT_SCROLL_BARS - if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)) - sb_left = left + (WINDOW_RIGHTMOST_P (w) ? width - sb_width : 0); - else - sb_left = left + (WINDOW_LEFTMOST_P (w) ? 0 : width - sb_width); -#else - if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)) - sb_left = left + width - sb_width; - else - sb_left = left; -#endif - -#ifdef USE_TOOLKIT_SCROLL_BARS - fringe_extended_p = WINDOW_FRINGE_EXTENDED_P (w); -#endif + width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); /* Does the scroll bar exist yet? */ if (NILP (w->vertical_scroll_bar)) @@ -5212,18 +5109,12 @@ XTset_vertical_scroll_bar (struct window *w, int portion, int whole, int positio if (width > 0 && height > 0) { block_input (); -#ifdef USE_TOOLKIT_SCROLL_BARS - if (fringe_extended_p) - x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), - sb_left, top, sb_width, height); - else -#endif - x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), - left, top, width, height); + x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), + left, top, width, height); unblock_input (); } - bar = x_scroll_bar_create (w, top, sb_left, sb_width, max (height, 1)); + bar = x_scroll_bar_create (w, top, left, width, max (height, 1)); } else { @@ -5234,11 +5125,11 @@ XTset_vertical_scroll_bar (struct window *w, int portion, int whole, int positio block_input (); - if (sb_left != bar->left) + if (left != bar->left) mask |= CWX; if (top != bar->top) mask |= CWY; - if (sb_width != bar->width) + if (width != bar->width) mask |= CWWidth; if (height != bar->height) mask |= CWHeight; @@ -5246,55 +5137,31 @@ XTset_vertical_scroll_bar (struct window *w, int portion, int whole, int positio #ifdef USE_TOOLKIT_SCROLL_BARS /* Move/size the scroll bar widget. */ - if (mask || bar->fringe_extended_p != fringe_extended_p) + if (mask) { /* Since toolkit scroll bars are smaller than the space reserved for them on the frame, we have to clear "under" them. */ if (width > 0 && height > 0) - { - if (fringe_extended_p) - x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), - sb_left, top, sb_width, height); - else - x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), - left, top, width, height); - } + x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), + left, top, width, height); #ifdef USE_GTK xg_update_scrollbar_pos (f, bar->x_window, top, - sb_left, sb_width, max (height, 1)); + left, width, max (height, 1)); #else /* not USE_GTK */ XtConfigureWidget (SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar), - sb_left, top, sb_width, max (height, 1), 0); + left, top, width, max (height, 1), 0); #endif /* not USE_GTK */ } #else /* not USE_TOOLKIT_SCROLL_BARS */ - /* Clear areas not covered by the scroll bar because it's not as - wide as the area reserved for it. This makes sure a - previous mode line display is cleared after C-x 2 C-x 1, for - example. */ - { - int area_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); - int rest = area_width - sb_width; - if (rest > 0 && height > 0) - { - if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)) - x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), - left + area_width - rest, top, rest, height); - else - x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), - left, top, rest, height); - } - } - /* Move/size the scroll bar window. */ if (mask) { XWindowChanges wc; - wc.x = sb_left; + wc.x = left; wc.y = top; - wc.width = sb_width; + wc.width = width; wc.height = height; XConfigureWindow (FRAME_X_DISPLAY (f), bar->x_window, mask, &wc); @@ -5303,17 +5170,15 @@ XTset_vertical_scroll_bar (struct window *w, int portion, int whole, int positio #endif /* not USE_TOOLKIT_SCROLL_BARS */ /* Remember new settings. */ - bar->left = sb_left; + bar->left = left; bar->top = top; - bar->width = sb_width; + bar->width = width; bar->height = height; unblock_input (); } #ifdef USE_TOOLKIT_SCROLL_BARS - bar->fringe_extended_p = fringe_extended_p; - x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole); #else /* not USE_TOOLKIT_SCROLL_BARS */ /* Set the scroll bar's current state, unless we're currently being diff --git a/src/xterm.h b/src/xterm.h index 88a0ae787aa..f67b79c3068 100644 --- a/src/xterm.h +++ b/src/xterm.h @@ -812,10 +812,6 @@ struct scroll_bar /* Last scroll bar part seen in xaw_jump_callback and xaw_scroll_callback. */ enum scroll_bar_part last_seen_part; #endif - - /* 1 if the background of the fringe that is adjacent to a scroll - bar is extended to the gap between the fringe and the bar. */ - unsigned fringe_extended_p : 1; }; /* Turning a lisp vector value into a pointer to a struct scroll_bar. */ -- 2.39.2