correctly check if a scene node is enabled
checking only wlr_scene_node.enabled may result in a false positive because it does not consider if its ancestors are enabled as well.
This commit is contained in:
parent
3c760bcd4a
commit
797e0c74b2
8
dwl.c
8
dwl.c
@ -631,13 +631,13 @@ chvt(const Arg *arg)
|
|||||||
void
|
void
|
||||||
checkidleinhibitor(struct wlr_surface *exclude)
|
checkidleinhibitor(struct wlr_surface *exclude)
|
||||||
{
|
{
|
||||||
int inhibited = 0;
|
int inhibited = 0, unused_lx, unused_ly;
|
||||||
struct wlr_idle_inhibitor_v1 *inhibitor;
|
struct wlr_idle_inhibitor_v1 *inhibitor;
|
||||||
wl_list_for_each(inhibitor, &idle_inhibit_mgr->inhibitors, link) {
|
wl_list_for_each(inhibitor, &idle_inhibit_mgr->inhibitors, link) {
|
||||||
struct wlr_surface *surface = wlr_surface_get_root_surface(inhibitor->surface);
|
struct wlr_surface *surface = wlr_surface_get_root_surface(inhibitor->surface);
|
||||||
struct wlr_scene_tree *tree = surface->data;
|
struct wlr_scene_tree *tree = surface->data;
|
||||||
if (exclude != surface && (bypass_surface_visibility || (!tree
|
if (exclude != surface && (bypass_surface_visibility || (!tree
|
||||||
|| tree->node.enabled))) {
|
|| wlr_scene_node_coords(&tree->node, &unused_lx, &unused_ly)))) {
|
||||||
inhibited = 1;
|
inhibited = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1201,7 +1201,7 @@ void
|
|||||||
focusclient(Client *c, int lift)
|
focusclient(Client *c, int lift)
|
||||||
{
|
{
|
||||||
struct wlr_surface *old = seat->keyboard_state.focused_surface;
|
struct wlr_surface *old = seat->keyboard_state.focused_surface;
|
||||||
int i;
|
int i, unused_lx, unused_ly;
|
||||||
|
|
||||||
if (locked)
|
if (locked)
|
||||||
return;
|
return;
|
||||||
@ -1236,7 +1236,7 @@ focusclient(Client *c, int lift)
|
|||||||
Client *w = NULL;
|
Client *w = NULL;
|
||||||
LayerSurface *l = NULL;
|
LayerSurface *l = NULL;
|
||||||
int type = toplevel_from_wlr_surface(old, &w, &l);
|
int type = toplevel_from_wlr_surface(old, &w, &l);
|
||||||
if (type == LayerShell && l->scene->node.enabled
|
if (type == LayerShell && wlr_scene_node_coords(&l->scene->node, &unused_lx, &unused_ly)
|
||||||
&& l->layer_surface->current.layer >= ZWLR_LAYER_SHELL_V1_LAYER_TOP) {
|
&& l->layer_surface->current.layer >= ZWLR_LAYER_SHELL_V1_LAYER_TOP) {
|
||||||
return;
|
return;
|
||||||
} else if (w && w == exclusive_focus && client_wants_focus(w)) {
|
} else if (w && w == exclusive_focus && client_wants_focus(w)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user