diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-07-26 18:36:46 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-07-28 22:41:04 +1000 |
commit | 08cfba2192f5770d975c5fe70789a81aaee4dc7e (patch) | |
tree | 7f07e32020649ae5c049e8533f0cf040dc80e166 /sway/commands/move.c | |
parent | Merge pull request #2372 from RyanDwyer/fix-use-after-free-v2 (diff) | |
download | sway-08cfba2192f5770d975c5fe70789a81aaee4dc7e.tar.gz sway-08cfba2192f5770d975c5fe70789a81aaee4dc7e.tar.zst sway-08cfba2192f5770d975c5fe70789a81aaee4dc7e.zip |
Allow containers to float
Things worth noting:
* When a fullscreen view unmaps, the check to unset fullscreen on the
workspace has been moved out of view_unmap and into container_destroy,
because containers can be fullscreen too
* The calls to `container_reap_empty_recursive(workspace)` have been
removed from `container_set_floating`. That function reaps upwards so it
wouldn't do anything. I'm probably the one who originally added it...
* My fix (b14bd1b0b1536039e4f46fe94515c7c44e7afc61) for the tabbed child
crash has a side effect where when you close a floating container, focus
is not given to the tiled container again. I've removed my fix and
removed the call to `send_cursor_motion` from `seat_set_focus_warp`. We
should consider calling it from somewhere earlier in the call stack.
Diffstat (limited to 'sway/commands/move.c')
-rw-r--r-- | sway/commands/move.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sway/commands/move.c b/sway/commands/move.c index aede3d6c..b127c89f 100644 --- a/sway/commands/move.c +++ b/sway/commands/move.c | |||
@@ -298,9 +298,15 @@ static struct cmd_results *move_to_position(struct sway_container *container, | |||
298 | } | 298 | } |
299 | 299 | ||
300 | static struct cmd_results *move_to_scratchpad(struct sway_container *con) { | 300 | static struct cmd_results *move_to_scratchpad(struct sway_container *con) { |
301 | if (con->type != C_CONTAINER && con->type != C_VIEW) { | 301 | if (con->type == C_WORKSPACE && con->children->length == 0) { |
302 | return cmd_results_new(CMD_INVALID, "move", | 302 | return cmd_results_new(CMD_INVALID, "move", |
303 | "Only views and containers can be moved to the scratchpad"); | 303 | "Can't move an empty workspace to the scratchpad"); |
304 | } | ||
305 | if (con->type == C_WORKSPACE) { | ||
306 | // Wrap the workspace's children in a container | ||
307 | struct sway_container *workspace = con; | ||
308 | con = container_wrap_children(con); | ||
309 | workspace->layout = L_HORIZ; | ||
304 | } | 310 | } |
305 | if (con->scratchpad) { | 311 | if (con->scratchpad) { |
306 | return cmd_results_new(CMD_INVALID, "move", | 312 | return cmd_results_new(CMD_INVALID, "move", |