diff options
author | 2018-11-28 13:52:54 -0500 | |
---|---|---|
committer | 2018-11-28 13:52:54 -0500 | |
commit | 71ae08530a918f892f5b8cb45164340d5bb3c70f (patch) | |
tree | 6bb7b79bce9d132964e3faef36afddf7e319fb3f /sway | |
parent | Merge pull request #3213 from RedSoxFan/fix-3203 (diff) | |
download | sway-71ae08530a918f892f5b8cb45164340d5bb3c70f.tar.gz sway-71ae08530a918f892f5b8cb45164340d5bb3c70f.tar.zst sway-71ae08530a918f892f5b8cb45164340d5bb3c70f.zip |
Fix default_orientation auto
Since the output config is no longer applied before creating the default
workspace, the layout for default workspaces on an output may not be
correct. Due to the ordering of calls in output_enable being changed in
several bug fix PRs, this just fixes the layout after the call to
apply_output_config.
Diffstat (limited to 'sway')
-rw-r--r-- | sway/tree/output.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sway/tree/output.c b/sway/tree/output.c index 3c4614a8..6ff95579 100644 --- a/sway/tree/output.c +++ b/sway/tree/output.c | |||
@@ -88,11 +88,12 @@ void output_enable(struct sway_output *output, struct output_config *oc) { | |||
88 | 88 | ||
89 | restore_workspaces(output); | 89 | restore_workspaces(output); |
90 | 90 | ||
91 | struct sway_workspace *ws = NULL; | ||
91 | if (!output->workspaces->length) { | 92 | if (!output->workspaces->length) { |
92 | // Create workspace | 93 | // Create workspace |
93 | char *ws_name = workspace_next_name(wlr_output->name); | 94 | char *ws_name = workspace_next_name(wlr_output->name); |
94 | wlr_log(WLR_DEBUG, "Creating default workspace %s", ws_name); | 95 | wlr_log(WLR_DEBUG, "Creating default workspace %s", ws_name); |
95 | struct sway_workspace *ws = workspace_create(output, ws_name); | 96 | ws = workspace_create(output, ws_name); |
96 | // Set each seat's focus if not already set | 97 | // Set each seat's focus if not already set |
97 | struct sway_seat *seat = NULL; | 98 | struct sway_seat *seat = NULL; |
98 | wl_list_for_each(seat, &server.input->seats, link) { | 99 | wl_list_for_each(seat, &server.input->seats, link) { |
@@ -104,9 +105,15 @@ void output_enable(struct sway_output *output, struct output_config *oc) { | |||
104 | ipc_event_workspace(NULL, ws, "init"); | 105 | ipc_event_workspace(NULL, ws, "init"); |
105 | } | 106 | } |
106 | 107 | ||
107 | |||
108 | apply_output_config(oc, output); | 108 | apply_output_config(oc, output); |
109 | 109 | ||
110 | if (ws && config->default_orientation == L_NONE) { | ||
111 | // Since the output transformation and resolution could have changed | ||
112 | // due to applying the output config, the previously set layout for the | ||
113 | // created workspace may not be correct for `default_orientation auto` | ||
114 | ws->layout = output_get_default_layout(output); | ||
115 | } | ||
116 | |||
110 | input_manager_configure_xcursor(); | 117 | input_manager_configure_xcursor(); |
111 | 118 | ||
112 | wl_signal_add(&wlr_output->events.mode, &output->mode); | 119 | wl_signal_add(&wlr_output->events.mode, &output->mode); |