Commit 7db47798 authored by YAMAMOTO Mitsuharu's avatar YAMAMOTO Mitsuharu
Browse files

Take account of fringe background extension in scroll_run_hook.

* w32term.c (w32_draw_fringe_bitmap): Rename local vars `left' and
`width' to `bar_area_x' and `bar_area_width', respectively.
(x_scroll_run): Take account of fringe background extension.

* xterm.c (x_draw_fringe_bitmap) [USE_TOOLKIT_SCROLL_BARS]: Rename
local vars `left' and `width' to `bar_area_x' and
`bar_area_width', respectively.
(x_scroll_run) [USE_TOOLKIT_SCROLL_BARS]: Take account of fringe
background extension.
parent 3ee240fa
2011-05-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* w32term.c (w32_draw_fringe_bitmap): Rename local vars `left' and
`width' to `bar_area_x' and `bar_area_width', respectively.
(x_scroll_run): Take account of fringe background extension.
* xterm.c (x_draw_fringe_bitmap) [USE_TOOLKIT_SCROLL_BARS]: Rename
local vars `left' and `width' to `bar_area_x' and
`bar_area_width', respectively.
(x_scroll_run) [USE_TOOLKIT_SCROLL_BARS]: Take account of fringe
background extension.
2011-05-09 Andreas Schwab <schwab@linux-m68k.org> 2011-05-09 Andreas Schwab <schwab@linux-m68k.org>
   
* xmenu.c (set_frame_menubar): Fix submenu loops. * xmenu.c (set_frame_menubar): Fix submenu loops.
......
...@@ -781,22 +781,22 @@ w32_draw_fringe_bitmap (w, row, p) ...@@ -781,22 +781,22 @@ w32_draw_fringe_bitmap (w, row, p)
if (sb_width > 0) if (sb_width > 0)
{ {
int left = WINDOW_SCROLL_BAR_AREA_X (w); int bar_area_x = WINDOW_SCROLL_BAR_AREA_X (w);
int width = (WINDOW_CONFIG_SCROLL_BAR_COLS (w) int bar_area_width = (WINDOW_CONFIG_SCROLL_BAR_COLS (w)
* FRAME_COLUMN_WIDTH (f)); * FRAME_COLUMN_WIDTH (f));
if (bx < 0) if (bx < 0)
{ {
/* Bitmap fills the fringe. */ /* Bitmap fills the fringe. */
if (left + width == p->x) if (bar_area_x + bar_area_width == p->x)
bx = left + sb_width; bx = bar_area_x + sb_width;
else if (p->x + p->wd == left) else if (p->x + p->wd == bar_area_x)
bx = left; bx = bar_area_x;
if (bx >= 0) if (bx >= 0)
{ {
int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w); int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w);
nx = width - sb_width; nx = bar_area_width - sb_width;
by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height, by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height,
row->y)); row->y));
ny = row->visible_height; ny = row->visible_height;
...@@ -804,13 +804,13 @@ w32_draw_fringe_bitmap (w, row, p) ...@@ -804,13 +804,13 @@ w32_draw_fringe_bitmap (w, row, p)
} }
else else
{ {
if (left + width == bx) if (bar_area_x + bar_area_width == bx)
{ {
bx = left + sb_width; bx = bar_area_x + sb_width;
nx += width - sb_width; nx += bar_area_width - sb_width;
} }
else if (bx + nx == left) else if (bx + nx == bar_area_x)
nx += width - sb_width; nx += bar_area_width - sb_width;
} }
} }
} }
...@@ -2625,6 +2625,32 @@ x_scroll_run (w, run) ...@@ -2625,6 +2625,32 @@ x_scroll_run (w, run)
fringes of W. */ fringes of W. */
window_box (w, -1, &x, &y, &width, &height); window_box (w, -1, &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_COLS (w)
* FRAME_COLUMN_WIDTH (f));
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;
......
...@@ -804,22 +804,22 @@ x_draw_fringe_bitmap (w, row, p) ...@@ -804,22 +804,22 @@ x_draw_fringe_bitmap (w, row, p)
if (sb_width > 0) if (sb_width > 0)
{ {
int left = WINDOW_SCROLL_BAR_AREA_X (w); int bar_area_x = WINDOW_SCROLL_BAR_AREA_X (w);
int width = (WINDOW_CONFIG_SCROLL_BAR_COLS (w) int bar_area_width = (WINDOW_CONFIG_SCROLL_BAR_COLS (w)
* FRAME_COLUMN_WIDTH (f)); * FRAME_COLUMN_WIDTH (f));
if (bx < 0) if (bx < 0)
{ {
/* Bitmap fills the fringe. */ /* Bitmap fills the fringe. */
if (left + width == p->x) if (bar_area_x + bar_area_width == p->x)
bx = left + sb_width; bx = bar_area_x + sb_width;
else if (p->x + p->wd == left) else if (p->x + p->wd == bar_area_x)
bx = left; bx = bar_area_x;
if (bx >= 0) if (bx >= 0)
{ {
int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w); int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w);
nx = width - sb_width; nx = bar_area_width - sb_width;
by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height, by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height,
row->y)); row->y));
ny = row->visible_height; ny = row->visible_height;
...@@ -827,13 +827,13 @@ x_draw_fringe_bitmap (w, row, p) ...@@ -827,13 +827,13 @@ x_draw_fringe_bitmap (w, row, p)
} }
else else
{ {
if (left + width == bx) if (bar_area_x + bar_area_width == bx)
{ {
bx = left + sb_width; bx = bar_area_x + sb_width;
nx += width - sb_width; nx += bar_area_width - sb_width;
} }
else if (bx + nx == left) else if (bx + nx == bar_area_x)
nx += width - sb_width; nx += bar_area_width - sb_width;
} }
} }
} }
...@@ -3240,6 +3240,34 @@ x_scroll_run (w, run) ...@@ -3240,6 +3240,34 @@ x_scroll_run (w, run)
fringe of W. */ fringe of W. */
window_box (w, -1, &x, &y, &width, &height); window_box (w, -1, &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_COLS (w)
* FRAME_COLUMN_WIDTH (f));
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); 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;
......
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