Fix keyboard resize in windows beneath stacked/tabbed containers
Patch status: superseded
Patch by jj
Long description:
When resizing with keyboard, stacked and tabbed containers need to be skipped. fixes #1085
To apply this patch, use:
curl http://cr.i3wm.org/patch/228/raw.patch | git am
b/src/commands.c
18 |
@@ -618,19 +618,19 @@ static void cmd_resize_floating(I3_CMD, char *way, char *direction, Con *floatin |
19 |
|
20 |
static bool cmd_resize_tiling_direction(I3_CMD, Con *current, char *way, char *direction, int ppt) { |
21 |
LOG("tiling resize\n"); |
22 |
- /* get the appropriate current container (skip stacked/tabbed cons) */ |
23 |
Con *other = NULL; |
24 |
double percentage = 0; |
25 |
- while (current->parent->layout == L_STACKED || |
26 |
- current->parent->layout == L_TABBED) |
27 |
- current = current->parent; |
28 |
|
29 |
- /* Then further go up until we find one with the matching orientation. */ |
30 |
+ /* Go up in the tree and search for a container to resize */ |
31 |
orientation_t search_orientation = |
32 |
(strcmp(direction, "left") == 0 || strcmp(direction, "right") == 0 ? HORIZ : VERT); |
33 |
|
34 |
do { |
35 |
- if (con_orientation(current->parent) != search_orientation) { |
36 |
+ /* get the appropriate current container with the matching |
37 |
+ * orientation (skip stacked/tabbed cons) */ |
38 |
+ if ((con_orientation(current->parent) != search_orientation) || |
39 |
+ (current->parent->layout == L_STACKED) || |
40 |
+ (current->parent->layout == L_TABBED)) { |
41 |
current = current->parent; |
42 |
continue; |
43 |
} |
44 |
@@ -668,7 +668,7 @@ static bool cmd_resize_tiling_direction(I3_CMD, Con *current, char *way, char *d |
45 |
current->type != CT_FLOATING_CON); |
46 |
|
47 |
if (other == NULL) { |
48 |
- LOG("No other container in this direction found, trying to look further up in the tree...\n"); |
49 |
+ LOG("No other container in this direction found.\n"); |
50 |
ysuccess(false); |
51 |
return false; |
52 |
} |