Commit 5b2b60f0 authored by YAMAMOTO Mitsuharu's avatar YAMAMOTO Mitsuharu

Remove fringe background extension code on W32.

* w32term.h (struct scroll_bar): Remove member `fringe_extended_p'.

* w32term.c (w32_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.
parent e0eb0550
2013-12-21 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* w32term.h (struct scroll_bar): Remove member `fringe_extended_p'.
* w32term.c (w32_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-20 Martin Rudalics <rudalics@gmx.at> 2013-12-20 Martin Rudalics <rudalics@gmx.at>
Remove scroll_bar_actual_width from frames. Remove scroll_bar_actual_width from frames.
......
...@@ -792,62 +792,13 @@ w32_draw_fringe_bitmap (struct window *w, struct glyph_row *row, ...@@ -792,62 +792,13 @@ w32_draw_fringe_bitmap (struct window *w, struct glyph_row *row,
hdc = get_frame_dc (f); hdc = get_frame_dc (f);
if (!p->overlay_p)
{
int bx = p->bx, by = p->by, nx = p->nx, ny = p->ny;
/* 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;
}
}
}
if (bx >= 0 && nx > 0)
w32_fill_area (f, hdc, face->background, bx, by, nx, ny);
}
/* Must clip because of partially visible lines. */ /* Must clip because of partially visible lines. */
w32_clip_to_row (w, row, ANY_AREA, hdc); w32_clip_to_row (w, row, ANY_AREA, hdc);
if (p->bx >= 0 && !p->overlay_p)
w32_fill_area (f, hdc, face->background,
p->bx, p->by, p->nx, p->ny);
if (p->which && p->which < max_fringe_bmp) if (p->which && p->which < max_fringe_bmp)
{ {
HBITMAP pixmap = fringe_bmp[p->which]; HBITMAP pixmap = fringe_bmp[p->which];
...@@ -2693,31 +2644,6 @@ x_scroll_run (struct window *w, struct run *run) ...@@ -2693,31 +2644,6 @@ x_scroll_run (struct window *w, struct run *run)
fringes of W. */ fringes of W. */
window_box (w, ANY_AREA, &x, &y, &width, &height); window_box (w, ANY_AREA, &x, &y, &width, &height);
/* 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;
}
}
from_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->current_y); from_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->current_y);
to_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->desired_y); to_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->desired_y);
bottom_y = y + height; bottom_y = y + height;
...@@ -3719,7 +3645,6 @@ x_scroll_bar_create (struct window *w, int top, int left, int width, int height) ...@@ -3719,7 +3645,6 @@ x_scroll_bar_create (struct window *w, int top, int left, int width, int height)
bar->start = 0; bar->start = 0;
bar->end = 0; bar->end = 0;
bar->dragging = 0; bar->dragging = 0;
bar->fringe_extended_p = 0;
/* Requires geometry to be set before call to create the real window */ /* Requires geometry to be set before call to create the real window */
...@@ -3781,33 +3706,17 @@ w32_set_vertical_scroll_bar (struct window *w, ...@@ -3781,33 +3706,17 @@ w32_set_vertical_scroll_bar (struct window *w,
struct frame *f = XFRAME (w->frame); struct frame *f = XFRAME (w->frame);
Lisp_Object barobj; Lisp_Object barobj;
struct scroll_bar *bar; struct scroll_bar *bar;
int top, height, left, sb_left, width, sb_width; int top, height, left, width;
int window_y, window_height; int window_y, window_height;
bool fringe_extended_p;
/* Get window dimensions. */ /* Get window dimensions. */
window_box (w, ANY_AREA, 0, &window_y, 0, &window_height); window_box (w, ANY_AREA, 0, &window_y, 0, &window_height);
top = window_y; top = window_y;
width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w);
height = window_height; 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); left = WINDOW_SCROLL_BAR_AREA_X (w);
width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (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. */
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);
fringe_extended_p = WINDOW_FRINGE_EXTENDED_P (w);
/* Does the scroll bar exist yet? */ /* Does the scroll bar exist yet? */
if (NILP (w->vertical_scroll_bar)) if (NILP (w->vertical_scroll_bar))
...@@ -3817,15 +3726,12 @@ w32_set_vertical_scroll_bar (struct window *w, ...@@ -3817,15 +3726,12 @@ w32_set_vertical_scroll_bar (struct window *w,
if (width > 0 && height > 0) if (width > 0 && height > 0)
{ {
hdc = get_frame_dc (f); hdc = get_frame_dc (f);
if (fringe_extended_p) w32_clear_area (f, hdc, left, top, width, height);
w32_clear_area (f, hdc, sb_left, top, sb_width, height);
else
w32_clear_area (f, hdc, left, top, width, height);
release_frame_dc (f, hdc); release_frame_dc (f, hdc);
} }
unblock_input (); unblock_input ();
bar = x_scroll_bar_create (w, top, sb_left, sb_width, height); bar = x_scroll_bar_create (w, top, left, width, height);
} }
else else
{ {
...@@ -3836,11 +3742,10 @@ w32_set_vertical_scroll_bar (struct window *w, ...@@ -3836,11 +3742,10 @@ w32_set_vertical_scroll_bar (struct window *w,
hwnd = SCROLL_BAR_W32_WINDOW (bar); hwnd = SCROLL_BAR_W32_WINDOW (bar);
/* If already correctly positioned, do nothing. */ /* If already correctly positioned, do nothing. */
if (bar->left == sb_left if (bar->left == left
&& bar->top == top && bar->top == top
&& bar->width == sb_width && bar->width == width
&& bar->height == height && bar->height == height)
&& bar->fringe_extended_p == fringe_extended_p)
{ {
/* Redraw after clear_frame. */ /* Redraw after clear_frame. */
if (!my_show_window (f, hwnd, SW_NORMAL)) if (!my_show_window (f, hwnd, SW_NORMAL))
...@@ -3857,17 +3762,13 @@ w32_set_vertical_scroll_bar (struct window *w, ...@@ -3857,17 +3762,13 @@ w32_set_vertical_scroll_bar (struct window *w,
hdc = get_frame_dc (f); hdc = get_frame_dc (f);
/* Since Windows scroll bars are smaller than the space reserved /* Since Windows scroll bars are smaller than the space reserved
for them on the frame, we have to clear "under" them. */ for them on the frame, we have to clear "under" them. */
if (fringe_extended_p) w32_clear_area (f, hdc, left, top, width, height);
w32_clear_area (f, hdc, sb_left, top, sb_width, height);
else
w32_clear_area (f, hdc, left, top, width, height);
release_frame_dc (f, hdc); release_frame_dc (f, hdc);
} }
/* Make sure scroll bar is "visible" before moving, to ensure the /* Make sure scroll bar is "visible" before moving, to ensure the
area of the parent window now exposed will be refreshed. */ area of the parent window now exposed will be refreshed. */
my_show_window (f, hwnd, SW_HIDE); my_show_window (f, hwnd, SW_HIDE);
MoveWindow (hwnd, sb_left, top, sb_width, MoveWindow (hwnd, left, top, width, max (height, 1), TRUE);
max (height, 1), TRUE);
si.cbSize = sizeof (si); si.cbSize = sizeof (si);
si.fMask = SIF_RANGE; si.fMask = SIF_RANGE;
...@@ -3881,16 +3782,14 @@ w32_set_vertical_scroll_bar (struct window *w, ...@@ -3881,16 +3782,14 @@ w32_set_vertical_scroll_bar (struct window *w,
/* InvalidateRect (w, NULL, FALSE); */ /* InvalidateRect (w, NULL, FALSE); */
/* Remember new settings. */ /* Remember new settings. */
bar->left = sb_left; bar->left = left;
bar->top = top; bar->top = top;
bar->width = sb_width; bar->width = width;
bar->height = height; bar->height = height;
unblock_input (); unblock_input ();
} }
} }
bar->fringe_extended_p = fringe_extended_p;
w32_set_scroll_bar_thumb (bar, portion, position, whole); w32_set_scroll_bar_thumb (bar, portion, position, whole);
XSETVECTOR (barobj, bar); XSETVECTOR (barobj, bar);
wset_vertical_scroll_bar (w, barobj); wset_vertical_scroll_bar (w, barobj);
......
...@@ -449,12 +449,6 @@ struct scroll_bar { ...@@ -449,12 +449,6 @@ struct scroll_bar {
place where the user grabbed it. If the handle isn't currently place where the user grabbed it. If the handle isn't currently
being dragged, this is Qnil. */ being dragged, this is Qnil. */
int dragging; int dragging;
/* 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. */
/* Note: this could be a bit field, but we need to take its address
in ALLOCATE_PSEUDOVECTOR (see x_scroll_bar_create). */
bool fringe_extended_p;
}; };
/* Turning a lisp vector value into a pointer to a struct scroll_bar. */ /* Turning a lisp vector value into a pointer to a struct scroll_bar. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment