}
static void
-view_apply_tiled_geometry(struct view *view, struct output *output)
+view_apply_tiled_geometry(struct view *view)
{
assert(view->tiled);
- if (!output) {
- output = view_output(view);
- }
- if (!output) {
+ struct output *output = view_output(view);
+ if (!output_is_usable(output)) {
wlr_log(WLR_ERROR, "Can't tile: no output");
return;
}
} else if (view->maximized) {
view_apply_maximized_geometry(view);
} else if (view->tiled) {
- view_apply_tiled_geometry(view, NULL);
+ view_apply_tiled_geometry(view);
} else if (view->tiled_region || view->tiled_region_evacuate) {
view_apply_region_geometry(view);
} else {
return;
}
struct output *output = view_output(view);
- if (!output) {
+ if (output_is_usable(output)) {
wlr_log(WLR_ERROR, "no output");
return;
}
/* Move to next output */
edge = view_edge_invert(edge);
output = output_from_wlr_output(view->server, new_output);
+ if (!output_is_usable(output)) {
+ wlr_log(WLR_ERROR, "invalid output in layout");
+ return;
+ }
} else {
/*
* No more output to move to
* caused by a keybind but doesn't make sense
* when caused by mouse movement.
*/
- view_apply_tiled_geometry(view, output);
+ view_apply_tiled_geometry(view);
return;
}
}
view_store_natural_geometry(view);
}
view_set_untiled(view);
+ view->output = output;
view->tiled = edge;
- view_apply_tiled_geometry(view, output);
+ view_apply_tiled_geometry(view);
}
void