mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
overlay: add inactivate_overlay() as refactoring
This change brings a subtle behavioral change that region overlay is hidden immediately when the timer for edge overlay starts.
This commit is contained in:
parent
7c2fa5f8e2
commit
be491e0e4c
1 changed files with 25 additions and 18 deletions
|
|
@ -56,9 +56,19 @@ show_overlay(struct seat *seat, struct wlr_box *box)
|
|||
wlr_scene_node_place_below(node, &view->scene_tree->node);
|
||||
wlr_scene_node_set_position(node, box->x, box->y);
|
||||
wlr_scene_node_set_enabled(node, true);
|
||||
}
|
||||
|
||||
if (seat->overlay.timer) {
|
||||
wl_event_source_timer_update(seat->overlay.timer, 0);
|
||||
static void
|
||||
inactivate_overlay(struct overlay *overlay)
|
||||
{
|
||||
if (overlay->tree) {
|
||||
wlr_scene_node_set_enabled(&overlay->tree->node, false);
|
||||
}
|
||||
overlay->active.region = NULL;
|
||||
overlay->active.edge = VIEW_EDGE_INVALID;
|
||||
overlay->active.output = NULL;
|
||||
if (overlay->timer) {
|
||||
wl_event_source_timer_update(overlay->timer, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -68,9 +78,8 @@ show_region_overlay(struct seat *seat, struct region *region)
|
|||
if (region == seat->overlay.active.region) {
|
||||
return;
|
||||
}
|
||||
inactivate_overlay(&seat->overlay);
|
||||
seat->overlay.active.region = region;
|
||||
seat->overlay.active.edge = VIEW_EDGE_INVALID;
|
||||
seat->overlay.active.output = NULL;
|
||||
|
||||
show_overlay(seat, ®ion->geo);
|
||||
}
|
||||
|
|
@ -154,7 +163,7 @@ show_edge_overlay(struct seat *seat, enum view_edge edge,
|
|||
&& seat->overlay.active.output == output) {
|
||||
return;
|
||||
}
|
||||
seat->overlay.active.region = NULL;
|
||||
inactivate_overlay(&seat->overlay);
|
||||
seat->overlay.active.edge = edge;
|
||||
seat->overlay.active.output = output;
|
||||
|
||||
|
|
@ -209,19 +218,17 @@ overlay_update(struct seat *seat)
|
|||
void
|
||||
overlay_hide(struct seat *seat)
|
||||
{
|
||||
seat->overlay.active.region = NULL;
|
||||
seat->overlay.active.edge = VIEW_EDGE_INVALID;
|
||||
seat->overlay.active.output = NULL;
|
||||
if (seat->overlay.timer) {
|
||||
wl_event_source_timer_update(seat->overlay.timer, 0);
|
||||
}
|
||||
|
||||
if (!seat->overlay.tree) {
|
||||
return;
|
||||
}
|
||||
struct overlay *overlay = &seat->overlay;
|
||||
struct server *server = seat->server;
|
||||
struct wlr_scene_node *node = &seat->overlay.tree->node;
|
||||
|
||||
wlr_scene_node_set_enabled(node, false);
|
||||
wlr_scene_node_reparent(node, &server->scene->tree);
|
||||
inactivate_overlay(overlay);
|
||||
|
||||
/*
|
||||
* Reparent the rectangle nodes to server's scene-tree so they don't
|
||||
* get destroyed on view destruction
|
||||
*/
|
||||
if (seat->overlay.tree) {
|
||||
wlr_scene_node_reparent(&overlay->tree->node,
|
||||
&server->scene->tree);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue