Added 'con_is_hidden' to check whether a given container is visible to the user assuming its workspace is visible.
This is useful for determining whether we want to set the _NET_WM_STATE_HIDDEN atom on the window.
This commit is contained in:
parent
67ec2333ee
commit
d12482e5fd
|
@ -42,12 +42,19 @@ bool con_is_leaf(Con *con);
|
|||
*/
|
||||
bool con_has_managed_window(Con *con);
|
||||
|
||||
/*
|
||||
/**
|
||||
* Returns true if a container should be considered split.
|
||||
*
|
||||
*/
|
||||
bool con_is_split(Con *con);
|
||||
|
||||
/**
|
||||
* This will only return true for containers which have some parent with
|
||||
* a tabbed / stacked parent of which they are not the currently focused child.
|
||||
*
|
||||
*/
|
||||
bool con_is_hidden(Con *con);
|
||||
|
||||
/**
|
||||
* Returns true if this node has regular or floating children.
|
||||
*
|
||||
|
|
23
src/con.c
23
src/con.c
|
@ -260,6 +260,29 @@ bool con_is_split(Con *con) {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This will only return true for containers which have some parent with
|
||||
* a tabbed / stacked parent of which they are not the currently focused child.
|
||||
*
|
||||
*/
|
||||
bool con_is_hidden(Con *con) {
|
||||
Con *current = con;
|
||||
|
||||
/* ascend to the workspace level and memorize the highest-up container
|
||||
* which is stacked or tabbed. */
|
||||
while (current != NULL && current->type != CT_WORKSPACE) {
|
||||
Con *parent = current->parent;
|
||||
if (parent != NULL && (parent->layout == L_TABBED || parent->layout == L_STACKED)) {
|
||||
if (TAILQ_FIRST(&(parent->focus_head)) != current)
|
||||
return true;
|
||||
}
|
||||
|
||||
current = parent;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns true if this node accepts a window (if the node swallows windows,
|
||||
* it might already have swallowed enough and cannot hold any more).
|
||||
|
|
Loading…
Reference in New Issue