]> git.sur5r.net Git - i3/i3/commitdiff
Move width_increment and height_increment from Con to Window.
authorIngo Bürk <ingo.buerk@tngtech.com>
Sun, 30 Aug 2015 21:04:20 +0000 (23:04 +0200)
committerIngo Bürk <ingo.buerk@tngtech.com>
Mon, 31 Aug 2015 19:27:10 +0000 (21:27 +0200)
relates to #665

include/data.h
src/commands.c
src/floating.c
src/handlers.c

index 4f69706ff58f9c45da57a6ef7811f17e8dc9a0b5..d6b9924493f0251f3a8701cb45c286d372fc362e 100644 (file)
@@ -414,6 +414,10 @@ struct Window {
      * increments (see below). */
     int base_width;
     int base_height;
+
+    /* minimum increment size specified for the window (in pixels) */
+    int width_increment;
+    int height_increment;
 };
 
 /**
@@ -582,10 +586,6 @@ struct Con {
     int border_width;
     int current_border_width;
 
-    /* minimum increment size specified for the window (in pixels) */
-    int width_increment;
-    int height_increment;
-
     struct Window *window;
 
     /* timer used for disabling urgency */
index 62adcc6536ab87b36dd02c45ce50d555e1292200..4f726df9a44e7a88c448552547ceef4cf10cda1b 100644 (file)
@@ -599,17 +599,20 @@ static void cmd_resize_floating(I3_CMD, char *way, char *direction, Con *floatin
     /* ensure that resize will take place even if pixel increment is smaller than
      * height increment or width increment.
      * fixes #1011 */
-    if (strcmp(direction, "up") == 0 || strcmp(direction, "down") == 0 ||
-        strcmp(direction, "height") == 0) {
-        if (px < 0)
-            px = (-px < focused_con->height_increment) ? -focused_con->height_increment : px;
-        else
-            px = (px < focused_con->height_increment) ? focused_con->height_increment : px;
-    } else if (strcmp(direction, "left") == 0 || strcmp(direction, "right") == 0) {
-        if (px < 0)
-            px = (-px < focused_con->width_increment) ? -focused_con->width_increment : px;
-        else
-            px = (px < focused_con->width_increment) ? focused_con->width_increment : px;
+    const i3Window *window = focused_con->window;
+    if (window != NULL) {
+        if (strcmp(direction, "up") == 0 || strcmp(direction, "down") == 0 ||
+                strcmp(direction, "height") == 0) {
+            if (px < 0)
+                px = (-px < window->height_increment) ? -window->height_increment : px;
+            else
+                px = (px < window->height_increment) ? window->height_increment : px;
+        } else if (strcmp(direction, "left") == 0 || strcmp(direction, "right") == 0) {
+            if (px < 0)
+                px = (-px < window->width_increment) ? -window->width_increment : px;
+            else
+                px = (px < window->width_increment) ? window->width_increment : px;
+        }
     }
 
     if (strcmp(direction, "up") == 0) {
index 60322c0c0066948ffc2da788f96ef8619ad51754..eef02ac674f359c57ab6d1b1332e2d27fb20a4ab 100644 (file)
@@ -42,7 +42,7 @@ void floating_check_size(Con *floating_con) {
     Con *focused_con = con_descend_focused(floating_con);
 
     /* obey size increments */
-    if (focused_con->height_increment || focused_con->width_increment) {
+    if (focused_con->window != NULL && (focused_con->window->height_increment || focused_con->window->width_increment)) {
         Rect border_rect = con_border_style_rect(focused_con);
 
         /* We have to do the opposite calculations that render_con() do
@@ -54,17 +54,17 @@ void floating_check_size(Con *floating_con) {
         if (con_border_style(focused_con) == BS_NORMAL)
             border_rect.height += render_deco_height();
 
-        if (focused_con->height_increment &&
+        if (focused_con->window->height_increment &&
             floating_con->rect.height >= focused_con->window->base_height + border_rect.height) {
             floating_con->rect.height -= focused_con->window->base_height + border_rect.height;
-            floating_con->rect.height -= floating_con->rect.height % focused_con->height_increment;
+            floating_con->rect.height -= floating_con->rect.height % focused_con->window->height_increment;
             floating_con->rect.height += focused_con->window->base_height + border_rect.height;
         }
 
-        if (focused_con->width_increment &&
+        if (focused_con->window->width_increment &&
             floating_con->rect.width >= focused_con->window->base_width + border_rect.width) {
             floating_con->rect.width -= focused_con->window->base_width + border_rect.width;
-            floating_con->rect.width -= floating_con->rect.width % focused_con->width_increment;
+            floating_con->rect.width -= floating_con->rect.width % focused_con->window->width_increment;
             floating_con->rect.width += focused_con->window->base_width + border_rect.width;
         }
     }
index 8e92bec98b637607b8b1932cd73f7337cb61d18b..91817bad25dd35315807b3cb5a3a8623b1c5dee1 100644 (file)
@@ -932,13 +932,13 @@ static bool handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t stat
     bool changed = false;
     if ((size_hints.flags & XCB_ICCCM_SIZE_HINT_P_RESIZE_INC)) {
         if (size_hints.width_inc > 0 && size_hints.width_inc < 0xFFFF)
-            if (con->width_increment != size_hints.width_inc) {
-                con->width_increment = size_hints.width_inc;
+            if (con->window->width_increment != size_hints.width_inc) {
+                con->window->width_increment = size_hints.width_inc;
                 changed = true;
             }
         if (size_hints.height_inc > 0 && size_hints.height_inc < 0xFFFF)
-            if (con->height_increment != size_hints.height_inc) {
-                con->height_increment = size_hints.height_inc;
+            if (con->window->height_increment != size_hints.height_inc) {
+                con->window->height_increment = size_hints.height_inc;
                 changed = true;
             }