mirror of
https://github.com/labwc/labwc.git
synced 2025-11-07 13:30:06 -05:00
view: ensure that floating views don't overlap top panels
The top_left_edge_boundary_check() function in xwayland.c ensures that views trying to position themselves at 0,0 don't end up with a titlebar offscreen. However, it doesn't take into account the usable area and thus these views can still end up overlapping a top panel. Also, there is no good reason for top_left_edge_boundary_check() to be xwayland-specific. This logic should really be part of view_adjust_for_layout_change(). To fix all this, add a new view_adjust_floating_geometry() function, which replaces the existing similar (and duplicated) logic in view_apply_natural_geometry() and view_adjust_for_layout_change(). view_adjust_for_layout_change() is already being called from xwayland's set_initial_position(), so top_left_edge_boundary_check() is now redundant and can just be deleted. Lightly tested with waybar and feh --geometry 640x480+0+0. The feh window is now correctly positioned below waybar, even if started before waybar (in that case, the feh window is moved when waybar starts).
This commit is contained in:
parent
984aeb0b0b
commit
57075ce864
3 changed files with 49 additions and 33 deletions
|
|
@ -356,6 +356,7 @@ void view_moved(struct view *view);
|
|||
void view_minimize(struct view *view, bool minimized);
|
||||
bool view_compute_centered_position(struct view *view,
|
||||
const struct wlr_box *ref, int w, int h, int *x, int *y);
|
||||
bool view_adjust_floating_geometry(struct view *view, struct wlr_box *geometry);
|
||||
void view_store_natural_geometry(struct view *view);
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue