diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-06-01 17:18:55 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-06-01 17:18:55 +0000 |
| commit | 4e0fde35ac60dcf36c3180b1606abba84ccace34 (patch) | |
| tree | 83f0ec9cb5e86e5bd722f44aeece767447aeefe8 /src | |
| parent | 20bac0772c548fe1e41eed21d55849bad2f34b2f (diff) | |
make all parents/transients that are related have the same sticky state.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Window.cc | 18 | ||||
| -rw-r--r-- | src/Window.hh | 1 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/Window.cc b/src/Window.cc index 80fe0816..d3369244 100644 --- a/src/Window.cc +++ b/src/Window.cc @@ -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(); } diff --git a/src/Window.hh b/src/Window.hh index 038a58af..191e6592 100644 --- a/src/Window.hh +++ b/src/Window.hh @@ -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); |
