diff options
| author | Martin Rudalics | 2014-02-26 09:07:34 +0100 |
|---|---|---|
| committer | Martin Rudalics | 2014-02-26 09:07:34 +0100 |
| commit | aea124c47dd16cde97fa467082b4be5f2c6d31f7 (patch) | |
| tree | 8cfa0e8167024730eeed58632779e2a5c6e773de /src/window.c | |
| parent | b2388336fef199304f7050340a91fe559b634ba2 (diff) | |
| download | emacs-aea124c47dd16cde97fa467082b4be5f2c6d31f7.tar.gz emacs-aea124c47dd16cde97fa467082b4be5f2c6d31f7.zip | |
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.
Diffstat (limited to 'src/window.c')
| -rw-r--r-- | src/window.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/window.c b/src/window.c index 0ec1aa96324..2fb0dcaadaa 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -1269,12 +1269,12 @@ coordinates_in_window (register struct window *w, int x, int y) | |||
| 1269 | /* On vertical window divider (which prevails horizontal | 1269 | /* On vertical window divider (which prevails horizontal |
| 1270 | dividers)? */ | 1270 | dividers)? */ |
| 1271 | if (!WINDOW_RIGHTMOST_P (w) | 1271 | if (!WINDOW_RIGHTMOST_P (w) |
| 1272 | && WINDOW_RIGHT_DIVIDER_WIDTH (w) | 1272 | && WINDOW_RIGHT_DIVIDER_WIDTH (w) > 0 |
| 1273 | && x >= right_x - WINDOW_RIGHT_DIVIDER_WIDTH (w) | 1273 | && x >= right_x - WINDOW_RIGHT_DIVIDER_WIDTH (w) |
| 1274 | && x <= right_x) | 1274 | && x <= right_x) |
| 1275 | return ON_RIGHT_DIVIDER; | 1275 | return ON_RIGHT_DIVIDER; |
| 1276 | /* On the horizontal window divider? */ | 1276 | /* On the horizontal window divider? */ |
| 1277 | else if (WINDOW_BOTTOM_DIVIDER_WIDTH (w) | 1277 | else if (WINDOW_BOTTOM_DIVIDER_WIDTH (w) > 0 |
| 1278 | && y >= (bottom_y - WINDOW_BOTTOM_DIVIDER_WIDTH (w)) | 1278 | && y >= (bottom_y - WINDOW_BOTTOM_DIVIDER_WIDTH (w)) |
| 1279 | && y <= bottom_y) | 1279 | && y <= bottom_y) |
| 1280 | return ON_BOTTOM_DIVIDER; | 1280 | return ON_BOTTOM_DIVIDER; |
| @@ -1294,9 +1294,10 @@ coordinates_in_window (register struct window *w, int x, int y) | |||
| 1294 | resize windows horizontally in case we're using toolkit scroll | 1294 | resize windows horizontally in case we're using toolkit scroll |
| 1295 | bars. Note: If scrollbars are on the left, the window that | 1295 | bars. Note: If scrollbars are on the left, the window that |
| 1296 | must be eventually resized is that on the left of WINDOW. */ | 1296 | must be eventually resized is that on the left of WINDOW. */ |
| 1297 | if ((WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) | 1297 | if ((WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0) |
| 1298 | && !WINDOW_LEFTMOST_P (w) | 1298 | && (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) |
| 1299 | && eabs (x - left_x) < grabbable_width) | 1299 | && !WINDOW_LEFTMOST_P (w) |
| 1300 | && eabs (x - left_x) < grabbable_width) | ||
| 1300 | || (!WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) | 1301 | || (!WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) |
| 1301 | && !WINDOW_RIGHTMOST_P (w) | 1302 | && !WINDOW_RIGHTMOST_P (w) |
| 1302 | && eabs (x - right_x) < grabbable_width)) | 1303 | && eabs (x - right_x) < grabbable_width)) |
| @@ -1331,6 +1332,7 @@ coordinates_in_window (register struct window *w, int x, int y) | |||
| 1331 | if (FRAME_WINDOW_P (f)) | 1332 | if (FRAME_WINDOW_P (f)) |
| 1332 | { | 1333 | { |
| 1333 | if (!w->pseudo_window_p | 1334 | if (!w->pseudo_window_p |
| 1335 | && WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0 | ||
| 1334 | && !WINDOW_HAS_VERTICAL_SCROLL_BAR (w) | 1336 | && !WINDOW_HAS_VERTICAL_SCROLL_BAR (w) |
| 1335 | && !WINDOW_RIGHTMOST_P (w) | 1337 | && !WINDOW_RIGHTMOST_P (w) |
| 1336 | && (eabs (x - right_x) < grabbable_width)) | 1338 | && (eabs (x - right_x) < grabbable_width)) |
| @@ -1339,6 +1341,7 @@ coordinates_in_window (register struct window *w, int x, int y) | |||
| 1339 | /* Need to say "x > right_x" rather than >=, since on character | 1341 | /* Need to say "x > right_x" rather than >=, since on character |
| 1340 | terminals, the vertical line's x coordinate is right_x. */ | 1342 | terminals, the vertical line's x coordinate is right_x. */ |
| 1341 | else if (!w->pseudo_window_p | 1343 | else if (!w->pseudo_window_p |
| 1344 | && WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0 | ||
| 1342 | && !WINDOW_RIGHTMOST_P (w) | 1345 | && !WINDOW_RIGHTMOST_P (w) |
| 1343 | /* Why check ux if we are not the rightmost window? Also | 1346 | /* Why check ux if we are not the rightmost window? Also |
| 1344 | shouldn't a pseudo window always be rightmost? */ | 1347 | shouldn't a pseudo window always be rightmost? */ |
| @@ -1352,8 +1355,8 @@ coordinates_in_window (register struct window *w, int x, int y) | |||
| 1352 | ? (x >= left_x + WINDOW_LEFT_FRINGE_WIDTH (w)) | 1355 | ? (x >= left_x + WINDOW_LEFT_FRINGE_WIDTH (w)) |
| 1353 | : (x < left_x + lmargin_width))) | 1356 | : (x < left_x + lmargin_width))) |
| 1354 | return ON_LEFT_MARGIN; | 1357 | return ON_LEFT_MARGIN; |
| 1355 | 1358 | else | |
| 1356 | return ON_LEFT_FRINGE; | 1359 | return ON_LEFT_FRINGE; |
| 1357 | } | 1360 | } |
| 1358 | 1361 | ||
| 1359 | if (x >= text_right) | 1362 | if (x >= text_right) |
| @@ -1363,8 +1366,8 @@ coordinates_in_window (register struct window *w, int x, int y) | |||
| 1363 | ? (x < right_x - WINDOW_RIGHT_FRINGE_WIDTH (w)) | 1366 | ? (x < right_x - WINDOW_RIGHT_FRINGE_WIDTH (w)) |
| 1364 | : (x >= right_x - rmargin_width))) | 1367 | : (x >= right_x - rmargin_width))) |
| 1365 | return ON_RIGHT_MARGIN; | 1368 | return ON_RIGHT_MARGIN; |
| 1366 | 1369 | else | |
| 1367 | return ON_RIGHT_FRINGE; | 1370 | return ON_RIGHT_FRINGE; |
| 1368 | } | 1371 | } |
| 1369 | 1372 | ||
| 1370 | /* Everything special ruled out - must be on text area */ | 1373 | /* Everything special ruled out - must be on text area */ |
| @@ -1419,8 +1422,10 @@ measured in characters from the upper-left corner of the frame. | |||
| 1419 | frame. | 1422 | frame. |
| 1420 | If COORDINATES are in the text portion of WINDOW, | 1423 | If COORDINATES are in the text portion of WINDOW, |
| 1421 | the coordinates relative to the window are returned. | 1424 | the coordinates relative to the window are returned. |
| 1425 | If they are in the bottom divider of WINDOW, `bottom-divider' is returned. | ||
| 1426 | If they are in the right divider of WINDOW, `right-divider' is returned. | ||
| 1422 | If they are in the mode line of WINDOW, `mode-line' is returned. | 1427 | If they are in the mode line of WINDOW, `mode-line' is returned. |
| 1423 | If they are in the top mode line of WINDOW, `header-line' is returned. | 1428 | If they are in the header line of WINDOW, `header-line' is returned. |
| 1424 | If they are in the left fringe of WINDOW, `left-fringe' is returned. | 1429 | If they are in the left fringe of WINDOW, `left-fringe' is returned. |
| 1425 | If they are in the right fringe of WINDOW, `right-fringe' is returned. | 1430 | If they are in the right fringe of WINDOW, `right-fringe' is returned. |
| 1426 | If they are on the border between WINDOW and its right sibling, | 1431 | If they are on the border between WINDOW and its right sibling, |