enum lab_placement_policy policy);
void view_constrain_size_to_that_of_usable_area(struct view *view);
-void view_restore_to(struct view *view, struct wlr_box geometry);
+void view_set_maximized(struct view *view, enum view_axis maximized);
void view_set_untiled(struct view *view);
void view_maximize(struct view *view, enum view_axis axis,
bool store_natural_geometry);
interactive_anchor_to_cursor(server, &new_geo);
/* Shaded clients will not process resize events until unshaded */
view_set_shade(view, false);
+ view_set_maximized(view, VIEW_AXIS_NONE);
view_set_untiled(view);
- view_restore_to(view, new_geo);
+ view_move_resize(view, new_geo);
x = new_geo.x;
y = new_geo.y;
}
* maximized/tiled state but keep the same geometry as
* the starting point for the resize.
*/
+ view_set_maximized(view, VIEW_AXIS_NONE);
view_set_untiled(view);
- view_restore_to(view, view->pending);
cursor_shape = cursor_get_from_edge(edges);
break;
default:
interactive_anchor_to_cursor(server, &natural_geo);
/* Shaded clients will not process resize events until unshaded */
view_set_shade(view, false);
+ view_set_maximized(view, VIEW_AXIS_NONE);
view_set_untiled(view);
- view_restore_to(view, natural_geo);
+ view_move_resize(view, natural_geo);
}
if (rc.resize_indicator) {
view_maximize(view, VIEW_AXIS_NONE, /*store_natural_geometry*/ false);
if (view_is_tiled(view)) {
view_set_untiled(view);
- view_restore_to(view, view->natural_geometry);
+ view_move_resize(view, view->natural_geometry);
}
view_move(view, view->pending.x + x, view->pending.y + y);
}
view_maximize(view, VIEW_AXIS_NONE, /*store_natural_geometry*/ false);
if (view_is_tiled(view)) {
view_set_untiled(view);
- view_restore_to(view, view->natural_geometry);
+ view_move_resize(view, view->natural_geometry);
}
struct border margin = ssd_thickness(view);
}
}
-/* For internal use only. Does not update geometry. */
-static void
-set_maximized(struct view *view, enum view_axis maximized)
+/*
+ * Sets maximized state without updating geometry. Used in interactive
+ * move/resize. In most other cases, use view_maximize() instead.
+ */
+void
+view_set_maximized(struct view *view, enum view_axis maximized)
{
+ assert(view);
+ if (view->maximized == maximized) {
+ return;
+ }
+
if (view->impl->maximize) {
view->impl->maximize(view, maximized);
}
ssd_update_margin(view->ssd);
}
-/*
- * Un-maximize view and move it to specific geometry. Does not reset
- * tiled state (use view_set_untiled() if you want that).
- */
-void
-view_restore_to(struct view *view, struct wlr_box geometry)
-{
- assert(view);
- if (view->fullscreen) {
- return;
- }
- if (view->maximized != VIEW_AXIS_NONE) {
- set_maximized(view, VIEW_AXIS_NONE);
- }
- view_move_resize(view, geometry);
-}
-
bool
view_is_tiled(struct view *view)
{
view->natural_geometry = view_get_fallback_natural_geometry(view);
}
- set_maximized(view, axis);
+ view_set_maximized(view, axis);
if (view_is_floating(view)) {
view_apply_natural_geometry(view);
} else {