mirror of
https://github.com/swaywm/sway.git
synced 2024-11-27 02:11:28 +00:00
move workspace from dead output to other output
This commit is contained in:
parent
ef31ee5cf6
commit
d115335951
|
@ -281,8 +281,21 @@ swayc_t *destroy_output(swayc_t *output) {
|
||||||
if (!ASSERT_NONNULL(output)) {
|
if (!ASSERT_NONNULL(output)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (output->children->length == 0) {
|
if (output->children->length > 0) {
|
||||||
// TODO move workspaces to other outputs
|
int i, len = root_container.children->length;
|
||||||
|
// TODO save workspaces when there are no outputs.
|
||||||
|
// TODO also check if there will ever be no outputs except for exiting
|
||||||
|
// program
|
||||||
|
if (len > 1) {
|
||||||
|
len = output->children->length;
|
||||||
|
int p = root_container.children->items[0] == output;
|
||||||
|
// Move workspace from this output to another output
|
||||||
|
for (i = 0; i < len; ++i) {
|
||||||
|
swayc_t *child = output->children->items[i];
|
||||||
|
remove_child(child);
|
||||||
|
add_child(root_container.children->items[p], child);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sway_log(L_DEBUG, "OUTPUT: Destroying output '%lu'", output->handle);
|
sway_log(L_DEBUG, "OUTPUT: Destroying output '%lu'", output->handle);
|
||||||
free_swayc(output);
|
free_swayc(output);
|
||||||
|
|
|
@ -424,8 +424,7 @@ static bool handle_pointer_button(wlc_handle view, uint32_t time, const struct w
|
||||||
}
|
}
|
||||||
|
|
||||||
// set pointer mode
|
// set pointer mode
|
||||||
pointer_mode_set(button,
|
pointer_mode_set(button, !(modifiers->mods ^ config->floating_mod));
|
||||||
(modifiers->mods & config->floating_mod) == config->floating_mod);
|
|
||||||
|
|
||||||
// Return if mode has been set
|
// Return if mode has been set
|
||||||
if (pointer_state.mode) {
|
if (pointer_state.mode) {
|
||||||
|
|
|
@ -169,6 +169,11 @@ static void pointer_mode_set_left(void) {
|
||||||
pointer_state.mode = M_DRAGGING | M_FLOATING;
|
pointer_state.mode = M_DRAGGING | M_FLOATING;
|
||||||
} else {
|
} else {
|
||||||
pointer_state.mode = M_DRAGGING | M_TILING;
|
pointer_state.mode = M_DRAGGING | M_TILING;
|
||||||
|
// unset mode if we cant drag tile
|
||||||
|
if (initial.ptr->parent->type == C_WORKSPACE &&
|
||||||
|
initial.ptr->parent->children->length == 1) {
|
||||||
|
pointer_state.mode = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue