continue;
}
- if (cwidth > 0 && mode_width) {
+ if (cwidth > 0) {
+ bool is_ppt = mode_width && strcmp(mode_width, "ppt") == 0;
success &= resize_set_tiling(current_match, cmd_output, current->con,
- HORIZ, strcmp(mode_width, "ppt") == 0, cwidth);
+ HORIZ, is_ppt, cwidth);
}
- if (cheight > 0 && mode_height) {
+ if (cheight > 0) {
+ bool is_ppt = mode_height && strcmp(mode_height, "ppt") == 0;
success &= resize_set_tiling(current_match, cmd_output, current->con,
- VERT, strcmp(mode_height, "ppt") == 0, cheight);
+ VERT, is_ppt, cheight);
}
}
}
Con *parent = workspace->parent;
con_detach(workspace);
con_attach(workspace, parent, false);
+ ipc_send_workspace_event("rename", workspace, NULL);
/* Move the workspace to the correct output if it has an assignment */
struct Workspace_Assignment *assignment = NULL;
cmd_output->needs_tree_render = true;
ysuccess(true);
- ipc_send_workspace_event("rename", workspace, NULL);
ewmh_update_desktop_names();
ewmh_update_desktop_viewport();
ewmh_update_current_desktop();
'Renaming the workspace to a workspace assigned to a directional output should not move the workspace');
##########################################################################
-# Renaming a workspace, so that it becomes assigned to the focused
-# output's workspace (and the focused output is empty) should
-# result in the original workspace replacing the originally
-# focused workspace.
+# Renaming an unfocused workspace, triggering an assignment to the output
+# which holds the currently focused empty workspace should result in the
+# original workspace replacing the empty one.
+# See issue #3228.
##########################################################################
cmd 'workspace baz';
cmd 'rename workspace 5 to 2';
is(get_output_for_workspace('2'), 'fake-1',
- 'Renaming a workspace so that it moves to the focused output which contains only an empty workspace should replace the empty workspace');
+ 'Renaming an unfocused workspace, triggering an assignment to the output which holds the currently focused empty workspace should result in the original workspace replacing the empty one');
+
+##########################################################################
+# Renaming an unfocused empty workspace, triggering an assignment to the
+# output which holds the currently focused non-empty workspace should
+# close the empty workspace and not crash i3.
+# See issue #3248.
+##########################################################################
+
+cmd 'workspace 1';
+cmd 'workspace 2';
+open_window;
+cmd 'rename workspace 1 to baz';
+is(get_output_for_workspace('baz'), '',
+ 'Renaming an unfocused empty workspace, triggering an assignment to the output which holds the currently focused non-empty workspace should close the empty workspace and not crash i3');
+kill_all_windows;
##########################################################################
# Renaming a workspace with multiple assignments, where the first output
cmp_float($nodes->[1]->{nodes}->[1]->{rect}->{width}, 155, 'bottom-right window got 155 px width');
cmp_float($nodes->[1]->{nodes}->[1]->{rect}->{height}, 135, 'bottom-right window got 135 px height');
+# Without specifying mode
+cmd 'resize set 201 131';
+
+($nodes, $focus) = get_ws_content($tmp);
+
+cmp_float($nodes->[1]->{nodes}->[1]->{rect}->{width}, 201, 'bottom-right window got 201 px width');
+cmp_float($nodes->[1]->{nodes}->[1]->{rect}->{height}, 131, 'bottom-right window got 131 px height');
+
# Mix ppt and px
cmd 'resize set 75 ppt 200 px';