emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r116305: Constrain window box sizes (Bug#16649).


From: Martin Rudalics
Subject: [Emacs-diffs] trunk r116305: Constrain window box sizes (Bug#16649).
Date: Fri, 07 Feb 2014 09:32:30 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 116305
revision-id: address@hidden
parent: address@hidden
committer: martin rudalics <address@hidden>
branch nick: trunk
timestamp: Fri 2014-02-07 10:32:15 +0100
message:
  Constrain window box sizes (Bug#16649).
  
  * xdisp.c (window_box_width): Don't return less than zero.
  (window_box_left_offset, window_box_right_offset): Don't return
  more than the window's pixel width.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/xdisp.c                    xdisp.c-20091113204419-o5vbwnq5f7feedwu-240
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-02-07 03:25:52 +0000
+++ b/src/ChangeLog     2014-02-07 09:32:15 +0000
@@ -1,3 +1,10 @@
+2014-02-07  Martin Rudalics  <address@hidden>
+
+       Constrain window box sizes (Bug#16649).
+       * xdisp.c (window_box_width): Don't return less than zero.
+       (window_box_left_offset, window_box_right_offset): Don't return
+       more than the window's pixel width.
+
 2014-02-07  Glenn Morris  <address@hidden>
 
        * nsterm.m (syms_of_nsterm): Doc fix.

=== modified file 'src/xdisp.c'
--- a/src/xdisp.c       2014-02-05 18:37:36 +0000
+++ b/src/xdisp.c       2014-02-07 09:32:15 +0000
@@ -1019,23 +1019,25 @@
 int
 window_box_width (struct window *w, enum glyph_row_area area)
 {
-  int pixels = w->pixel_width;
+  int width = w->pixel_width;
 
   if (!w->pseudo_window_p)
     {
-      pixels -= WINDOW_SCROLL_BAR_AREA_WIDTH (w);
-      pixels -= WINDOW_RIGHT_DIVIDER_WIDTH (w);
+      width -= WINDOW_SCROLL_BAR_AREA_WIDTH (w);
+      width -= WINDOW_RIGHT_DIVIDER_WIDTH (w);
 
       if (area == TEXT_AREA)
-       pixels -= (WINDOW_MARGINS_WIDTH (w)
+       width -= (WINDOW_MARGINS_WIDTH (w)
                   + WINDOW_FRINGES_WIDTH (w));
       else if (area == LEFT_MARGIN_AREA)
-       pixels = WINDOW_LEFT_MARGIN_WIDTH (w);
+       width = WINDOW_LEFT_MARGIN_WIDTH (w);
       else if (area == RIGHT_MARGIN_AREA)
-       pixels = WINDOW_RIGHT_MARGIN_WIDTH (w);
+       width = WINDOW_RIGHT_MARGIN_WIDTH (w);
     }
 
-  return pixels;
+  /* With wide margins, fringes, etc. we might end up with a negative
+     width, correct that here.  */
+  return max (0, width);
 }
 
 
@@ -1115,7 +1117,8 @@
           && WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w))
     x += WINDOW_LEFT_FRINGE_WIDTH (w);
 
-  return x;
+  /* Don't return more than the window's pixel width.  */
+  return min (x, w->pixel_width);
 }
 
 
@@ -1126,7 +1129,9 @@
 int
 window_box_right_offset (struct window *w, enum glyph_row_area area)
 {
-  return window_box_left_offset (w, area) + window_box_width (w, area);
+  /* Don't return more than the window's pixel width.  */
+  return min (window_box_left_offset (w, area) + window_box_width (w, area),
+             w->pixel_width);
 }
 
 /* Return the frame-relative coordinate of the left edge of display


reply via email to

[Prev in Thread] Current Thread [Next in Thread]