]> git.eshelyaron.com Git - emacs.git/commitdiff
Fixes around Bug#16647.
authorMartin Rudalics <rudalics@gmx.at>
Wed, 26 Feb 2014 08:07:34 +0000 (09:07 +0100)
committerMartin Rudalics <rudalics@gmx.at>
Wed, 26 Feb 2014 08:07:34 +0000 (09:07 +0100)
* 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.

src/ChangeLog
src/window.c
src/xdisp.c

index 6e697e4c9445d9ed209f14a0a9f2fc556673135b..0c0d5964742e475d7fb55c8b57fe5c58196136c5 100644 (file)
@@ -1,3 +1,12 @@
+2014-02-26  Martin Rudalics  <rudalics@gmx.at>
+
+       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.
+
 2014-02-25  Juanma Barranquero  <lekktu@gmail.com>
 
        * lread.c (Funintern): Fix doc to match advertised calling convention.
index 0ec1aa963240e0b70bafc45fd9ccdda4b62a329f..2fb0dcaadaab74a0cbca54b1e623e49a924d2a9d 100644 (file)
@@ -1269,12 +1269,12 @@ coordinates_in_window (register struct window *w, int x, int y)
   /* On vertical window divider (which prevails horizontal
      dividers)?  */
   if (!WINDOW_RIGHTMOST_P (w)
-      && WINDOW_RIGHT_DIVIDER_WIDTH (w)
+      && WINDOW_RIGHT_DIVIDER_WIDTH (w) > 0
       && x >= right_x - WINDOW_RIGHT_DIVIDER_WIDTH (w)
       && x <= right_x)
     return ON_RIGHT_DIVIDER;
   /* On the horizontal window divider?  */
-  else if (WINDOW_BOTTOM_DIVIDER_WIDTH (w)
+  else if (WINDOW_BOTTOM_DIVIDER_WIDTH (w) > 0
           && y >= (bottom_y - WINDOW_BOTTOM_DIVIDER_WIDTH (w))
           && y <= bottom_y)
     return ON_BOTTOM_DIVIDER;
@@ -1294,9 +1294,10 @@ coordinates_in_window (register struct window *w, int x, int y)
         resize windows horizontally in case we're using toolkit scroll
         bars.  Note: If scrollbars are on the left, the window that
         must be eventually resized is that on the left of WINDOW.  */
-      if ((WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
-          && !WINDOW_LEFTMOST_P (w)
-          && eabs (x - left_x) < grabbable_width)
+      if ((WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0)
+         && (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
+             && !WINDOW_LEFTMOST_P (w)
+             && eabs (x - left_x) < grabbable_width)
          || (!WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
              && !WINDOW_RIGHTMOST_P (w)
              && eabs (x - right_x) < grabbable_width))
@@ -1331,6 +1332,7 @@ coordinates_in_window (register struct window *w, int x, int y)
   if (FRAME_WINDOW_P (f))
     {
       if (!w->pseudo_window_p
+         && WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0
          && !WINDOW_HAS_VERTICAL_SCROLL_BAR (w)
          && !WINDOW_RIGHTMOST_P (w)
          && (eabs (x - right_x) < grabbable_width))
@@ -1339,6 +1341,7 @@ coordinates_in_window (register struct window *w, int x, int y)
   /* Need to say "x > right_x" rather than >=, since on character
      terminals, the vertical line's x coordinate is right_x.  */
   else if (!w->pseudo_window_p
+          && WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0
           && !WINDOW_RIGHTMOST_P (w)
           /* Why check ux if we are not the rightmost window?  Also
              shouldn't a pseudo window always be rightmost?  */
@@ -1352,8 +1355,8 @@ coordinates_in_window (register struct window *w, int x, int y)
              ? (x >= left_x + WINDOW_LEFT_FRINGE_WIDTH (w))
              : (x < left_x + lmargin_width)))
        return ON_LEFT_MARGIN;
-
-      return ON_LEFT_FRINGE;
+      else
+       return ON_LEFT_FRINGE;
     }
 
   if (x >= text_right)
@@ -1363,8 +1366,8 @@ coordinates_in_window (register struct window *w, int x, int y)
              ? (x < right_x - WINDOW_RIGHT_FRINGE_WIDTH (w))
              : (x >= right_x - rmargin_width)))
        return ON_RIGHT_MARGIN;
-
-      return ON_RIGHT_FRINGE;
+      else
+       return ON_RIGHT_FRINGE;
     }
 
   /* Everything special ruled out - must be on text area */
@@ -1419,8 +1422,10 @@ measured in characters from the upper-left corner of the frame.
 frame.
 If COORDINATES are in the text portion of WINDOW,
    the coordinates relative to the window are returned.
+If they are in the bottom divider of WINDOW, `bottom-divider' is returned.
+If they are in the right divider of WINDOW, `right-divider' is returned.
 If they are in the mode line of WINDOW, `mode-line' is returned.
-If they are in the top mode line of WINDOW, `header-line' is returned.
+If they are in the header line of WINDOW, `header-line' is returned.
 If they are in the left fringe of WINDOW, `left-fringe' is returned.
 If they are in the right fringe of WINDOW, `right-fringe' is returned.
 If they are on the border between WINDOW and its right sibling,
index c35a64d077413f939c680b26309df1f2c518dee1..836b825aafa0a4ce0801cad315ec71d34d60f595 100644 (file)
@@ -2452,6 +2452,16 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect)
                  ? WINDOW_RIGHT_FRINGE_WIDTH (w)
                  : 0)));
       width = WINDOW_SCROLL_BAR_AREA_WIDTH (w);
+      goto row_glyph;
+
+    case ON_RIGHT_DIVIDER:
+      gx = WINDOW_RIGHT_PIXEL_EDGE (w) - WINDOW_RIGHT_DIVIDER_WIDTH (w);
+      width = WINDOW_RIGHT_DIVIDER_WIDTH (w);
+      goto row_glyph;
+
+    case ON_BOTTOM_DIVIDER:
+      gx = 0;
+      width = WINDOW_RIGHT_PIXEL_EDGE (w) - WINDOW_RIGHT_DIVIDER_WIDTH (w);
 
     row_glyph:
       gr = 0, gy = 0;