mirror of
https://github.com/labwc/labwc.git
synced 2025-11-03 09:01:51 -05:00
view: Fix positioning of initially-maximized XWayland views
map() in xwayland.c called ssd_create() but did not call view_apply_maximized_geometry() afterward, resulting in the decorations being displayed off-screen. Rather than calling view_apply_maximized_geometry() in more places, let's reuse the existing call in view_set_decorations(), and extend ssd_update_geometry() to call ssd_create() when needed.
This commit is contained in:
parent
0b6eca097d
commit
2995d0e8e0
3 changed files with 6 additions and 11 deletions
|
|
@ -169,16 +169,18 @@ ssd_create(struct view *view)
|
||||||
void
|
void
|
||||||
ssd_update_geometry(struct view *view)
|
ssd_update_geometry(struct view *view)
|
||||||
{
|
{
|
||||||
if (!view->ssd.tree || !view->scene_node) {
|
if (!view->scene_node) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!view->ssd.enabled) {
|
if (!view->ssd.enabled) {
|
||||||
if (view->ssd.tree->node.enabled) {
|
if (view->ssd.tree && view->ssd.tree->node.enabled) {
|
||||||
wlr_scene_node_set_enabled(&view->ssd.tree->node, false);
|
wlr_scene_node_set_enabled(&view->ssd.tree->node, false);
|
||||||
view->margin = ssd_thickness(view);
|
view->margin = ssd_thickness(view);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
} else if (!view->ssd.tree) {
|
||||||
|
ssd_create(view);
|
||||||
} else if (!view->ssd.tree->node.enabled) {
|
} else if (!view->ssd.tree->node.enabled) {
|
||||||
wlr_scene_node_set_enabled(&view->ssd.tree->node, true);
|
wlr_scene_node_set_enabled(&view->ssd.tree->node, true);
|
||||||
view->margin = ssd_thickness(view);
|
view->margin = ssd_thickness(view);
|
||||||
|
|
|
||||||
|
|
@ -303,11 +303,7 @@ xdg_toplevel_view_map(struct view *view)
|
||||||
struct wlr_xdg_toplevel_requested *requested =
|
struct wlr_xdg_toplevel_requested *requested =
|
||||||
&view->xdg_surface->toplevel->requested;
|
&view->xdg_surface->toplevel->requested;
|
||||||
foreign_toplevel_handle_create(view);
|
foreign_toplevel_handle_create(view);
|
||||||
|
view_set_decorations(view, has_ssd(view));
|
||||||
view->ssd.enabled = has_ssd(view);
|
|
||||||
if (view->ssd.enabled) {
|
|
||||||
ssd_create(view);
|
|
||||||
}
|
|
||||||
|
|
||||||
position_xdg_toplevel_view(view);
|
position_xdg_toplevel_view(view);
|
||||||
if (!view->fullscreen && requested->fullscreen) {
|
if (!view->fullscreen && requested->fullscreen) {
|
||||||
|
|
|
||||||
|
|
@ -389,10 +389,7 @@ map(struct view *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!view->been_mapped) {
|
if (!view->been_mapped) {
|
||||||
view->ssd.enabled = want_deco(view);
|
view_set_decorations(view, want_deco(view));
|
||||||
if (view->ssd.enabled) {
|
|
||||||
ssd_create(view);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!view->maximized && !view->fullscreen) {
|
if (!view->maximized && !view->fullscreen) {
|
||||||
set_initial_position(view);
|
set_initial_position(view);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue