]> git.mdlowis.com Git - proto/labwc.git/commitdiff
view: expose view_set_maximized() instead of view_restore_to()
authorJohn Lindgren <john@jlindgren.net>
Mon, 1 Sep 2025 15:49:24 +0000 (11:49 -0400)
committerJohan Malm <johanmalm@users.noreply.github.com>
Mon, 1 Sep 2025 19:44:09 +0000 (20:44 +0100)
view_restore_to() (which is just set_maximized() + view_move_resize())
hasn't aged well and doesn't line up with typical usage anymore:

 - it's missing view_set_untiled(), which has to be called separately
 - it always forces view_move_resize() even when that's not needed
 - it doesn't allow un-maximizing only one axis (see next commit)
 - the fullscreen check is unnecessary (already checked in callers)

Eliminate it and just expose view_set_maximized() instead.

No functional change intended in this commit.

include/view.h
src/input/cursor.c
src/interactive.c
src/view.c

index 97fb2343b8db2591730e58021bca153c85ca6e96..5ff709840fc2efe234e16b0dc644d33f2a47ad96 100644 (file)
@@ -518,7 +518,7 @@ void view_place_by_policy(struct view *view, bool allow_cursor,
        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);
index 4c6b353e524acad2931c5f8a0b7b11f50e94d16a..a051092fd7bb14c95ceee67ed65b1febf6c270f3 100644 (file)
@@ -291,8 +291,9 @@ process_cursor_move(struct server *server, uint32_t time)
                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;
        }
index f0c30e759b3771989f72ec7fe9cf29051266a9c5..adc06b8c1cf8daa02c01523586a71a045a27ab05 100644 (file)
@@ -122,8 +122,8 @@ interactive_begin(struct view *view, enum input_mode mode, enum lab_edge edges)
                 * 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:
@@ -153,8 +153,9 @@ interactive_begin(struct view *view, enum input_mode mode, enum lab_edge edges)
                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) {
index 54eb60390ebf467121dfc5c445f7398688ce9253..1bc205e029e2167ef3485ad1ccbd28e128098342 100644 (file)
@@ -660,7 +660,7 @@ view_move_relative(struct view *view, int x, int 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);
        }
        view_move(view, view->pending.x + x, view->pending.y + y);
 }
@@ -678,7 +678,7 @@ view_move_to_cursor(struct view *view)
        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);
@@ -1367,10 +1367,18 @@ view_apply_special_geometry(struct view *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);
        }
@@ -1386,23 +1394,6 @@ set_maximized(struct view *view, enum view_axis 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)
 {
@@ -1505,7 +1496,7 @@ view_maximize(struct view *view, enum view_axis axis,
                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 {