changeset 16297:701db778b7a4

(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.
author Richard M. Stallman <rms@gnu.org>
date Mon, 23 Sep 1996 04:36:43 +0000
parents 584310941e70
children 17304eb73f97
files src/window.c
diffstat 1 files changed, 19 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/src/window.c	Mon Sep 23 04:31:38 1996 +0000
+++ b/src/window.c	Mon Sep 23 04:36:43 1996 +0000
@@ -359,7 +359,7 @@
   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 @@
      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 @@
 
 	  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 @@
       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 @@
      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;
 }