mirror of
https://github.com/labwc/labwc.git
synced 2025-11-03 09:01:51 -05:00
desktop: show/hide top layer more smartly
Before this commit, `top` layers were hidden whenever there is a fullscreen window in the corresponding output. With this commit, `top` layers are hidden only when there is a fullscreen window without other windows above it in the corresponding output. A caveat is that `bottom` layer is still always hidden by a fullscreen window.
This commit is contained in:
parent
6fe3df34ca
commit
1c8d347a61
2 changed files with 21 additions and 9 deletions
14
src/view.c
14
src/view.c
|
|
@ -387,16 +387,20 @@ view_update_outputs(struct view *view)
|
|||
struct output *output;
|
||||
struct wlr_output_layout *layout = view->server->output_layout;
|
||||
|
||||
view->outputs = 0;
|
||||
uint64_t new_outputs = 0;
|
||||
wl_list_for_each(output, &view->server->outputs, link) {
|
||||
if (output_is_usable(output) && wlr_output_layout_intersects(
|
||||
layout, output->wlr_output, &view->current)) {
|
||||
view->outputs |= (1ull << output->scene_output->index);
|
||||
new_outputs |= (1ull << output->scene_output->index);
|
||||
}
|
||||
}
|
||||
|
||||
if (view->toplevel.handle) {
|
||||
foreign_toplevel_update_outputs(view);
|
||||
if (new_outputs != view->outputs) {
|
||||
view->outputs = new_outputs;
|
||||
if (view->toplevel.handle) {
|
||||
foreign_toplevel_update_outputs(view);
|
||||
}
|
||||
desktop_update_top_layer_visiblity(view->server);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2037,6 +2041,7 @@ view_move_to_front(struct view *view)
|
|||
}
|
||||
|
||||
cursor_update_focus(view->server);
|
||||
desktop_update_top_layer_visiblity(view->server);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -2050,6 +2055,7 @@ view_move_to_back(struct view *view)
|
|||
move_to_back(root);
|
||||
|
||||
cursor_update_focus(view->server);
|
||||
desktop_update_top_layer_visiblity(view->server);
|
||||
}
|
||||
|
||||
struct view *
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue