mirror of
https://github.com/labwc/labwc.git
synced 2025-11-03 09:01:51 -05:00
xdg: destroy foreign toplevel handle on unmap
xdg-shell protocol says:
All active operations (e.g., move, resize) are canceled and all
attributes (e.g. title, state, stacking, ...) are discarded for an
xdg_toplevel surface when it is unmapped.
So, when a xdg-toplevel is unmapped (not minimized), the corresponding
foreign handler should be destroyed to reset attributes.
This commit is contained in:
parent
f31457392b
commit
8b12b50137
1 changed files with 14 additions and 2 deletions
16
src/xdg.c
16
src/xdg.c
|
|
@ -651,8 +651,6 @@ xdg_toplevel_view_map(struct view *view)
|
|||
struct wlr_xdg_surface *xdg_surface = xdg_surface_from_view(view);
|
||||
wlr_scene_node_set_enabled(&view->scene_tree->node, true);
|
||||
if (!view->been_mapped) {
|
||||
init_foreign_toplevel(view);
|
||||
|
||||
if (view_wants_decorations(view)) {
|
||||
view_set_ssd_mode(view, LAB_SSD_MODE_FULL);
|
||||
} else {
|
||||
|
|
@ -687,6 +685,11 @@ xdg_toplevel_view_map(struct view *view)
|
|||
view_moved(view);
|
||||
}
|
||||
|
||||
if (!view->toplevel.handle) {
|
||||
init_foreign_toplevel(view);
|
||||
foreign_toplevel_update_outputs(view);
|
||||
}
|
||||
|
||||
view_impl_map(view);
|
||||
view->been_mapped = true;
|
||||
}
|
||||
|
|
@ -699,6 +702,15 @@ xdg_toplevel_view_unmap(struct view *view, bool client_request)
|
|||
wlr_scene_node_set_enabled(&view->scene_tree->node, false);
|
||||
view_impl_unmap(view);
|
||||
}
|
||||
|
||||
/*
|
||||
* If the view was explicitly unmapped by the client (rather
|
||||
* than just minimized), destroy the foreign toplevel handle so
|
||||
* the unmapped view doesn't show up in panels and the like.
|
||||
*/
|
||||
if (client_request && view->toplevel.handle) {
|
||||
wlr_foreign_toplevel_handle_v1_destroy(view->toplevel.handle);
|
||||
}
|
||||
}
|
||||
|
||||
static pid_t
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue