From: Richard M. Stallman Date: Mon, 23 Sep 1996 04:36:43 +0000 (+0000) Subject: (Fwindow_edges): Use new WINDOW_RIGHT_EDGE macro. X-Git-Tag: emacs-20.1~3647 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=111e5992df9de83e437821faffe3c63dcd29b8f4;p=emacs.git (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. --- 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; }