Commit 111e5992 authored by Richard M. Stallman's avatar Richard M. Stallman

(Fwindow_edges): Use new WINDOW_RIGHT_EDGE macro.

(coordinates_in_window): Use WINDOW_LEFT_MARGIN, WINDOW_RIGHT_MARGIN,
and WINDOW_RIGHT_EDGE.  Adjust for left-side scroll bar margin.
(window_loop, Fdisplay_buffer): Use new WINDOW_FULL_WIDTH_P macro.
(window_internal_width): Window width now always includes the
scroll bar, if any.  Use WINDOW_RIGHTMOST_P and WINDOW_FULL_WIDTH_P.
parent 6e6e9f08
......@@ -359,7 +359,7 @@ and BOTTOM is one more than the bottommost row used by WINDOW\n\
register struct window *w = decode_window (window);
return Fcons (w->left, Fcons (w->top,
Fcons (make_number (XFASTINT (w->left) + XFASTINT (w->width)),
Fcons (make_number (WINDOW_RIGHT_EDGE (w)),
Fcons (make_number (XFASTINT (w->top)
+ XFASTINT (w->height)),
Qnil))));
......@@ -380,25 +380,28 @@ coordinates_in_window (w, x, y)
register int *x, *y;
{
register int left = XINT (w->left);
register int width = XINT (w->width);
register int right_edge = WINDOW_RIGHT_EDGE (w);
register int left_margin = WINDOW_LEFT_MARGIN (w);
register int right_margin = WINDOW_RIGHT_MARGIN (w);
register int window_height = XINT (w->height);
register int top = XFASTINT (w->top);
if ( *x < left || *x >= left + width
if ( *x < left || *x >= right_edge
|| *y < top || *y >= top + window_height)
return 0;
if (left_margin != left && *x < left_margin && *x >= left)
return 3;
if (right_margin != right_edge && *x >= right_margin && *x < right_edge)
return 3;
/* Is the character is the mode line? */
if (*y == top + window_height - 1
&& ! MINI_WINDOW_P (w))
return 2;
/* Is the character in the right border? */
if (*x == left + width - 1
&& left + width != FRAME_WIDTH (XFRAME (w->frame)))
return 3;
*x -= left;
*x -= WINDOW_LEFT_MARGIN (w);
*y -= top;
return 1;
}
......@@ -1322,8 +1325,7 @@ window_loop (type, obj, mini, frames)
case GET_LRU_WINDOW:
/* t as arg means consider only full-width windows */
if (!NILP (obj) && XFASTINT (XWINDOW (w)->width)
!= FRAME_WIDTH (XFRAME (WINDOW_FRAME (XWINDOW (w)))))
if (!NILP (obj) && !WINDOW_FULL_WIDTH_P (XWINDOW (w)))
break;
/* Ignore dedicated windows and minibuffers. */
if (MINI_WINDOW_P (XWINDOW (w))
......@@ -2134,8 +2136,7 @@ buffer names are handled.")
if (!NILP (window)
&& ! FRAME_NO_SPLIT_P (XFRAME (XWINDOW (window)->frame))
&& window_height (window) >= split_height_threshold
&& (XFASTINT (XWINDOW (window)->width)
== FRAME_WIDTH (XFRAME (WINDOW_FRAME (XWINDOW (window))))))
&& WINDOW_FULL_WIDTH_P (XWINDOW (window)))
window = Fsplit_window (window, Qnil, Qnil);
else
{
......@@ -2593,24 +2594,18 @@ window_internal_width (w)
struct window *w;
{
FRAME_PTR f = XFRAME (WINDOW_FRAME (w));
int left = XINT (w->left);
int width = XINT (w->width);
/* If this window is flush against the right edge of the frame, its
internal width is its full width. */
if (left + width >= FRAME_WIDTH (f))
return width;
/* If we are not flush right, then our rightmost columns are
occupied by some sort of separator. */
/* Scroll bars occupy a few columns. */
if (FRAME_HAS_VERTICAL_SCROLL_BARS (f))
return width - FRAME_SCROLL_BAR_COLS (f);
/* The column of `|' characters separating side-by-side windows
occupies one column only. */
return width - 1;
if (!WINDOW_RIGHTMOST_P (w) && !WINDOW_FULL_WIDTH_P (w))
return width - 1;
return width;
}
......
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