mirror of
https://github.com/labwc/labwc.git
synced 2026-02-17 22:05:30 -05:00
view: eliminate store_natural_geometry arguments
These were added to fix handling of natural geometry for snap-to-edge
behavior back in 9021020f6e and seemed like a good idea at the time.
Since then, the number of call sites has exploded, so it seems more
maintainable to put explicit checks for interactive move within the
three functions affected.
This commit is contained in:
parent
742c2b53fd
commit
f5909ac54d
7 changed files with 36 additions and 46 deletions
36
src/view.c
36
src/view.c
|
|
@ -614,7 +614,7 @@ view_move_relative(struct view *view, int x, int y)
|
|||
if (view->fullscreen) {
|
||||
return;
|
||||
}
|
||||
view_maximize(view, VIEW_AXIS_NONE, /*store_natural_geometry*/ false);
|
||||
view_maximize(view, VIEW_AXIS_NONE);
|
||||
if (view_is_tiled(view)) {
|
||||
view_set_untiled(view);
|
||||
view_move_resize(view, view->natural_geometry);
|
||||
|
|
@ -632,7 +632,7 @@ view_move_to_cursor(struct view *view)
|
|||
return;
|
||||
}
|
||||
view_set_fullscreen(view, false);
|
||||
view_maximize(view, VIEW_AXIS_NONE, /*store_natural_geometry*/ false);
|
||||
view_maximize(view, VIEW_AXIS_NONE);
|
||||
if (view_is_tiled(view)) {
|
||||
view_set_untiled(view);
|
||||
view_move_resize(view, view->natural_geometry);
|
||||
|
|
@ -1375,9 +1375,15 @@ view_set_untiled(struct view *view)
|
|||
view_notify_tiled(view);
|
||||
}
|
||||
|
||||
static bool
|
||||
in_interactive_move(struct view *view)
|
||||
{
|
||||
return (view->server->input_mode == LAB_INPUT_STATE_MOVE
|
||||
&& view->server->grabbed_view == view);
|
||||
}
|
||||
|
||||
void
|
||||
view_maximize(struct view *view, enum view_axis axis,
|
||||
bool store_natural_geometry)
|
||||
view_maximize(struct view *view, enum view_axis axis)
|
||||
{
|
||||
assert(view);
|
||||
|
||||
|
|
@ -1389,6 +1395,7 @@ view_maximize(struct view *view, enum view_axis axis,
|
|||
return;
|
||||
}
|
||||
|
||||
bool store_natural_geometry = !in_interactive_move(view);
|
||||
view_set_shade(view, false);
|
||||
|
||||
if (axis != VIEW_AXIS_NONE) {
|
||||
|
|
@ -1440,8 +1447,7 @@ view_toggle_maximize(struct view *view, enum view_axis axis)
|
|||
case VIEW_AXIS_HORIZONTAL:
|
||||
case VIEW_AXIS_VERTICAL:
|
||||
/* Toggle one axis (XOR) */
|
||||
view_maximize(view, view->maximized ^ axis,
|
||||
/*store_natural_geometry*/ true);
|
||||
view_maximize(view, view->maximized ^ axis);
|
||||
break;
|
||||
case VIEW_AXIS_BOTH:
|
||||
/*
|
||||
|
|
@ -1449,8 +1455,7 @@ view_toggle_maximize(struct view *view, enum view_axis axis)
|
|||
* maximized, otherwise unmaximize.
|
||||
*/
|
||||
view_maximize(view, (view->maximized == VIEW_AXIS_BOTH) ?
|
||||
VIEW_AXIS_NONE : VIEW_AXIS_BOTH,
|
||||
/*store_natural_geometry*/ true);
|
||||
VIEW_AXIS_NONE : VIEW_AXIS_BOTH);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
@ -2064,7 +2069,7 @@ view_placement_parse(const char *policy)
|
|||
|
||||
void
|
||||
view_snap_to_edge(struct view *view, enum lab_edge edge,
|
||||
bool across_outputs, bool combine, bool store_natural_geometry)
|
||||
bool across_outputs, bool combine)
|
||||
{
|
||||
assert(view);
|
||||
|
||||
|
|
@ -2078,6 +2083,7 @@ view_snap_to_edge(struct view *view, enum lab_edge edge,
|
|||
return;
|
||||
}
|
||||
|
||||
bool store_natural_geometry = !in_interactive_move(view);
|
||||
view_set_shade(view, false);
|
||||
|
||||
if (lab_edge_is_cardinal(edge) && view->maximized == VIEW_AXIS_NONE
|
||||
|
|
@ -2124,8 +2130,7 @@ view_snap_to_edge(struct view *view, enum lab_edge edge,
|
|||
|
||||
if (view->maximized != VIEW_AXIS_NONE) {
|
||||
/* Unmaximize + keep using existing natural_geometry */
|
||||
view_maximize(view, VIEW_AXIS_NONE,
|
||||
/*store_natural_geometry*/ false);
|
||||
view_maximize(view, VIEW_AXIS_NONE);
|
||||
} else if (store_natural_geometry) {
|
||||
/* store current geometry as new natural_geometry */
|
||||
view_store_natural_geometry(view);
|
||||
|
|
@ -2139,8 +2144,7 @@ view_snap_to_edge(struct view *view, enum lab_edge edge,
|
|||
}
|
||||
|
||||
void
|
||||
view_snap_to_region(struct view *view, struct region *region,
|
||||
bool store_natural_geometry)
|
||||
view_snap_to_region(struct view *view, struct region *region)
|
||||
{
|
||||
assert(view);
|
||||
assert(region);
|
||||
|
|
@ -2155,12 +2159,12 @@ view_snap_to_region(struct view *view, struct region *region,
|
|||
return;
|
||||
}
|
||||
|
||||
bool store_natural_geometry = !in_interactive_move(view);
|
||||
view_set_shade(view, false);
|
||||
|
||||
if (view->maximized != VIEW_AXIS_NONE) {
|
||||
/* Unmaximize + keep using existing natural_geometry */
|
||||
view_maximize(view, VIEW_AXIS_NONE,
|
||||
/*store_natural_geometry*/ false);
|
||||
view_maximize(view, VIEW_AXIS_NONE);
|
||||
} else if (store_natural_geometry) {
|
||||
/* store current geometry as new natural_geometry */
|
||||
view_store_natural_geometry(view);
|
||||
|
|
@ -2193,7 +2197,7 @@ view_move_to_output(struct view *view, struct output *output)
|
|||
view_apply_tiled_geometry(view);
|
||||
} else if (view->tiled_region) {
|
||||
struct region *region = regions_from_name(view->tiled_region->name, output);
|
||||
view_snap_to_region(view, region, /*store_natural_geometry*/ false);
|
||||
view_snap_to_region(view, region);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue