make all parents/transients that are related have the same sticky state.
Dana Jansens danakj@orodu.net
2 files changed,
18 insertions(+),
1 deletions(-)
M
src/Window.cc
→
src/Window.cc
@@ -254,6 +254,11 @@ configure(frame.rect.x(), frame.rect.y(),
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 @@ }
} +/* + * (Un)Sticks a window and its relatives. + */ void BlackboxWindow::stick(void) { if (flags.stuck) { blackbox_attrib.flags ^= AttribOmnipresent;@@ -1628,6 +1636,16 @@ blackbox_attrib.attrib |= AttribOmnipresent;
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(); }
M
src/Window.hh
→
src/Window.hh
@@ -331,7 +331,6 @@ void maximize(unsigned int button);
void remaximize(void); void shade(void); void stick(void); - void unstick(void); void reconfigure(void); void updateFocusModel(void); void installColormap(bool install);