make all parents/transients that are related have the same sticky state.

This commit is contained in:
Dana Jansens 2002-06-01 17:18:55 +00:00
parent 20bac0772c
commit 4e0fde35ac
2 changed files with 18 additions and 1 deletions

View file

@ -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();
}

View file

@ -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);