make all parents/transients that are related have the same sticky state.
This commit is contained in:
parent
20bac0772c
commit
4e0fde35ac
2 changed files with 18 additions and 1 deletions
|
@ -254,6 +254,11 @@ BlackboxWindow::BlackboxWindow(Blackbox *b, Window w, BScreen *s) {
|
|||
frame.rect.width(), frame.rect.height());
|
||||
}
|
||||
|
||||
// get sticky state from our parent window if we've got one
|
||||
if (isTransient() && client.transient_for != (BlackboxWindow *) ~0ul &&
|
||||
client.transient_for->isStuck() != flags.stuck)
|
||||
stick();
|
||||
|
||||
if (flags.shaded) {
|
||||
flags.shaded = False;
|
||||
shade();
|
||||
|
@ -1609,6 +1614,9 @@ void BlackboxWindow::shade(void) {
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* (Un)Sticks a window and its relatives.
|
||||
*/
|
||||
void BlackboxWindow::stick(void) {
|
||||
if (flags.stuck) {
|
||||
blackbox_attrib.flags ^= AttribOmnipresent;
|
||||
|
@ -1628,6 +1636,16 @@ void BlackboxWindow::stick(void) {
|
|||
|
||||
setState(current_state);
|
||||
}
|
||||
// go up the chain
|
||||
if (isTransient() && client.transient_for != (BlackboxWindow *) ~0ul &&
|
||||
client.transient_for->isStuck() != flags.stuck)
|
||||
client.transient_for->stick();
|
||||
// go down the chain
|
||||
BlackboxWindowList::iterator it;
|
||||
const BlackboxWindowList::iterator end = client.transientList.end();
|
||||
for (it = client.transientList.begin(); it != end; ++it)
|
||||
if ((*it)->isStuck() != flags.stuck)
|
||||
(*it)->stick();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -331,7 +331,6 @@ public:
|
|||
void remaximize(void);
|
||||
void shade(void);
|
||||
void stick(void);
|
||||
void unstick(void);
|
||||
void reconfigure(void);
|
||||
void updateFocusModel(void);
|
||||
void installColormap(bool install);
|
||||
|
|
Loading…
Reference in a new issue