Commit aea124c4 authored by Martin Rudalics's avatar Martin Rudalics
Browse files

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.
parent b2388336
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.
......
......@@ -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,
......
......@@ -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;
......
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