view: honor placement policy in more scenarios

This commit is contained in:
John Lindgren 2026-02-21 15:14:32 -05:00 committed by Hiroaki Yamamoto
parent 5238dcaa08
commit 1211c43a47
3 changed files with 9 additions and 22 deletions

View file

@ -898,16 +898,8 @@ adjust_floating_geometry(struct view *view, struct wlr_box *geometry,
}
/* Reposition offscreen automatically if configured to do so */
if (rc.placement_policy == LAB_PLACE_AUTOMATIC) {
if (placement_find_best(view, geometry)) {
return true;
}
}
/* If automatic placement failed or was not enabled, just center */
return view_compute_centered_position(view, NULL,
geometry->width, geometry->height,
&geometry->x, &geometry->y);
return view_compute_position_by_policy(view, geometry,
/* allow_cursor */ true, rc.placement_policy);
}
struct wlr_box
@ -917,8 +909,8 @@ view_get_fallback_natural_geometry(struct view *view)
.width = VIEW_FALLBACK_WIDTH,
.height = VIEW_FALLBACK_HEIGHT,
};
view_compute_centered_position(view, NULL,
box.width, box.height, &box.x, &box.y);
view_compute_position_by_policy(view, &box,
/* allow_cursor */ true, rc.placement_policy);
return box;
}

View file

@ -123,10 +123,8 @@ do_late_positioning(struct view *view)
/* Reposition the view while anchoring it to cursor */
interactive_anchor_to_cursor(server, &view->pending);
} else {
/* TODO: smart placement? */
view_compute_centered_position(view, NULL,
view->pending.width, view->pending.height,
&view->pending.x, &view->pending.y);
view_compute_position_by_policy(view, &view->pending,
/* allow_cursor */ true, rc.placement_policy);
}
}

View file

@ -769,15 +769,12 @@ set_initial_position(struct view *view,
/* allow_cursor */ true, rc.placement_policy);
} else {
/*
* View is maximized/fullscreen. Center the
* View is maximized/fullscreen. Place the
* stored natural geometry without actually
* moving the view.
*/
view_compute_centered_position(view, NULL,
view->natural_geometry.width,
view->natural_geometry.height,
&view->natural_geometry.x,
&view->natural_geometry.y);
view_compute_position_by_policy(view, &view->natural_geometry,
/* allow_cursor */ true, rc.placement_policy);
}
}