Fixes around Bug#16647.

* xdisp.c (remember_mouse_glyph): Handle ON_RIGHT_DIVIDER and
ON_BOTTOM_DIVIDER cases.
* window.c (coordinates_in_window): Return ON_VERTICAL_BORDER
only if the window has no right divider.
(Fcoordinates_in_window_p): Fix doc-string.
This commit is contained in:
Martin Rudalics 2014-02-26 09:07:34 +01:00
parent b2388336fe
commit aea124c47d
3 changed files with 34 additions and 10 deletions

View file

@ -1,3 +1,12 @@
2014-02-26 Martin Rudalics <rudalics@gmx.at>
Fixes around Bug#16647.
* xdisp.c (remember_mouse_glyph): Handle ON_RIGHT_DIVIDER and
ON_BOTTOM_DIVIDER cases.
* window.c (coordinates_in_window): Return ON_VERTICAL_BORDER
only if the window has no right divider.
(Fcoordinates_in_window_p): Fix doc-string.
2014-02-25 Juanma Barranquero <lekktu@gmail.com>
* lread.c (Funintern): Fix doc to match advertised calling convention.

View file

@ -1269,12 +1269,12 @@ coordinates_in_window (register struct window *w, int x, int y)
/* On vertical window divider (which prevails horizontal
dividers)? */
if (!WINDOW_RIGHTMOST_P (w)
&& WINDOW_RIGHT_DIVIDER_WIDTH (w)
&& WINDOW_RIGHT_DIVIDER_WIDTH (w) > 0
&& x >= right_x - WINDOW_RIGHT_DIVIDER_WIDTH (w)
&& x <= right_x)
return ON_RIGHT_DIVIDER;
/* On the horizontal window divider? */
else if (WINDOW_BOTTOM_DIVIDER_WIDTH (w)
else if (WINDOW_BOTTOM_DIVIDER_WIDTH (w) > 0
&& y >= (bottom_y - WINDOW_BOTTOM_DIVIDER_WIDTH (w))
&& y <= bottom_y)
return ON_BOTTOM_DIVIDER;
@ -1294,9 +1294,10 @@ coordinates_in_window (register struct window *w, int x, int y)
resize windows horizontally in case we're using toolkit scroll
bars. Note: If scrollbars are on the left, the window that
must be eventually resized is that on the left of WINDOW. */
if ((WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
&& !WINDOW_LEFTMOST_P (w)
&& eabs (x - left_x) < grabbable_width)
if ((WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0)
&& (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
&& !WINDOW_LEFTMOST_P (w)
&& eabs (x - left_x) < grabbable_width)
|| (!WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
&& !WINDOW_RIGHTMOST_P (w)
&& eabs (x - right_x) < grabbable_width))
@ -1331,6 +1332,7 @@ coordinates_in_window (register struct window *w, int x, int y)
if (FRAME_WINDOW_P (f))
{
if (!w->pseudo_window_p
&& WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0
&& !WINDOW_HAS_VERTICAL_SCROLL_BAR (w)
&& !WINDOW_RIGHTMOST_P (w)
&& (eabs (x - right_x) < grabbable_width))
@ -1339,6 +1341,7 @@ coordinates_in_window (register struct window *w, int x, int y)
/* Need to say "x > right_x" rather than >=, since on character
terminals, the vertical line's x coordinate is right_x. */
else if (!w->pseudo_window_p
&& WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0
&& !WINDOW_RIGHTMOST_P (w)
/* Why check ux if we are not the rightmost window? Also
shouldn't a pseudo window always be rightmost? */
@ -1352,8 +1355,8 @@ coordinates_in_window (register struct window *w, int x, int y)
? (x >= left_x + WINDOW_LEFT_FRINGE_WIDTH (w))
: (x < left_x + lmargin_width)))
return ON_LEFT_MARGIN;
return ON_LEFT_FRINGE;
else
return ON_LEFT_FRINGE;
}
if (x >= text_right)
@ -1363,8 +1366,8 @@ coordinates_in_window (register struct window *w, int x, int y)
? (x < right_x - WINDOW_RIGHT_FRINGE_WIDTH (w))
: (x >= right_x - rmargin_width)))
return ON_RIGHT_MARGIN;
return ON_RIGHT_FRINGE;
else
return ON_RIGHT_FRINGE;
}
/* Everything special ruled out - must be on text area */
@ -1419,8 +1422,10 @@ measured in characters from the upper-left corner of the frame.
frame.
If COORDINATES are in the text portion of WINDOW,
the coordinates relative to the window are returned.
If they are in the bottom divider of WINDOW, `bottom-divider' is returned.
If they are in the right divider of WINDOW, `right-divider' is returned.
If they are in the mode line of WINDOW, `mode-line' is returned.
If they are in the top mode line of WINDOW, `header-line' is returned.
If they are in the header line of WINDOW, `header-line' is returned.
If they are in the left fringe of WINDOW, `left-fringe' is returned.
If they are in the right fringe of WINDOW, `right-fringe' is returned.
If they are on the border between WINDOW and its right sibling,

View file

@ -2452,6 +2452,16 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect)
? WINDOW_RIGHT_FRINGE_WIDTH (w)
: 0)));
width = WINDOW_SCROLL_BAR_AREA_WIDTH (w);
goto row_glyph;
case ON_RIGHT_DIVIDER:
gx = WINDOW_RIGHT_PIXEL_EDGE (w) - WINDOW_RIGHT_DIVIDER_WIDTH (w);
width = WINDOW_RIGHT_DIVIDER_WIDTH (w);
goto row_glyph;
case ON_BOTTOM_DIVIDER:
gx = 0;
width = WINDOW_RIGHT_PIXEL_EDGE (w) - WINDOW_RIGHT_DIVIDER_WIDTH (w);
row_glyph:
gr = 0, gy = 0;