diff options
Diffstat (limited to 'sway/input/seat.c')
| -rw-r--r-- | sway/input/seat.c | 19 | 
1 files changed, 4 insertions, 15 deletions
| diff --git a/sway/input/seat.c b/sway/input/seat.c index d23525a8..2d714acd 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -1139,26 +1139,15 @@ void seat_set_focus(struct sway_seat *seat, struct sway_node *node) {  	struct sway_container *container = node->type == N_CONTAINER ?  		node->sway_container : NULL; -	// Deny setting focus to a view which is hidden by a fullscreen container -	if (new_workspace && new_workspace->fullscreen && container && -			!container_is_fullscreen_or_child(container)) { -		// Unless it's a transient container -		if (!container_is_transient_for(container, new_workspace->fullscreen)) { -			return; -		} +	// Deny setting focus to a view which is hidden by a fullscreen container or global +	if (container && container_obstructing_fullscreen_container(container)) { +		return;  	} +  	// Deny setting focus to a workspace node when using fullscreen global  	if (root->fullscreen_global && !container && new_workspace) {  		return;  	} -	// Deny setting focus to a view which is hidden by a fullscreen global -	if (root->fullscreen_global && container != root->fullscreen_global && -				!container_has_ancestor(container, root->fullscreen_global)) { -		// Unless it's a transient container -		if (!container_is_transient_for(container, root->fullscreen_global)) { -			return; -		} -	}  	struct sway_output *new_output =  		new_workspace ? new_workspace->output : NULL; | 
