home · contact · privacy
Client: Changed window sizing algorithm to fix bug of too large negative window
authorChristian Heller <c.heller@plomlompom.de>
Wed, 22 Jan 2014 13:46:22 +0000 (14:46 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 22 Jan 2014 13:46:22 +0000 (14:46 +0100)
width values wrapping into super-large positive width values if pad size is too
small.

src/client/windows.c
src/client/windows.h

index ff57399a50bd2f9e2805d98eebafbac16cf5071a..0ebe56dd949dbd9a063d432fe4b2da84a450a86e 100644 (file)
@@ -461,21 +461,23 @@ extern void init_win(struct Win ** wp, char * title, int16_t height,
     w->draw         = func;
     w->center.y     = 0;
     w->center.x     = 0;
-    if      (0 < width)
+    w->framesize.y  = world.wmeta.padsize.y - 1;
+    if      (0 < height && height <= world.wmeta.padsize.y - 1)
     {
-        w->framesize.x = width;
+        w->framesize.y = height;
     }
-    else if (0 >= width)
+    else if (0 > height && world.wmeta.padsize.y + (height - 1) > 0)
     {
-        w->framesize.x = world.wmeta.padsize.x + width;
+        w->framesize.y = world.wmeta.padsize.y + (height - 1);
     }
-    if      (0 < height && height <= world.wmeta.padsize.y - 1)
+    w->framesize.x  = world.wmeta.padsize.x;
+    if      (0 < width)
     {
-        w->framesize.y = height;
+        w->framesize.x = width;
     }
-    else if (0 >= height && world.wmeta.padsize.y + (height - 1) > 0)
+    else if (0 > width && world.wmeta.padsize.x + width > 0)
     {
-        w->framesize.y = world.wmeta.padsize.y + (height - 1);
+        w->framesize.x = world.wmeta.padsize.x + width;
     }
     *wp = w;
 }
index 7c0ef77ca80cc35c4fff1571766f180236771865..5e993438f30d1ee4fe9a4402902e263b131f65d6 100644 (file)
@@ -78,9 +78,9 @@ extern void init_win_meta();
  * Pass 0 for "width" to make the window as wide as the terminal screen. Pass 0
  * for "height" for the maximum allowed height: one cell smaller than that of
  * the terminal screen. Pass negative values for either of them to make the
- * window width/height so many cells smaller than what 0 would set. The maximum
- * allowed height is also applied for positive height values that exceed it or
- * negative values that would reduce the window height to less than 1 cell.
+ * window width/height so many cells smaller than what 0 would set. Values that
+ * that would reduce the window height or width to less than 1 cell according to
+ * the aforementioned rules set the height/width as if they were set to 0.
  */
 extern void init_win(struct Win ** wp, char * title, int16_t height,
                      int16_t width, void * func);