summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1996-09-23 04:36:43 +0000
committerRichard M. Stallman <rms@gnu.org>1996-09-23 04:36:43 +0000
commit8a3afd6151d8bd6f182dcf3b1d54aa2a95509388 (patch)
tree9d1f6d6eaf53d0ea4ba28204c0ef7b0e4f14130b
parent7e925f77b74a6d42b4b919f8ca39109e3836f61c (diff)
downloademacs-8a3afd6151d8bd6f182dcf3b1d54aa2a95509388.tar.gz
(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.
-rw-r--r--src/window.c43
1 files changed, 19 insertions, 24 deletions
diff --git a/src/window.c b/src/window.c
index 5695152c1ff..8a166c06106 100644
--- a/src/window.c
+++ b/src/window.c
@@ -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;
}