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);
|
bool con_has_managed_window(Con *con);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Returns true if a container should be considered split.
|
* Returns true if a container should be considered split.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
bool con_is_split(Con *con);
|
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.
|
* 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,
|
* Returns true if this node accepts a window (if the node swallows windows,
|
||||||
* it might already have swallowed enough and cannot hold any more).
|
* it might already have swallowed enough and cannot hold any more).
|
||||||
|
|
Loading…
Reference in New Issue