all repos — openbox @ 4e0fde35ac60dcf36c3180b1606abba84ccace34

openbox fork - make it a bit more like ryudo

make all parents/transients that are related have the same sticky state.
Dana Jansens danakj@orodu.net
commit

4e0fde35ac60dcf36c3180b1606abba84ccace34

parent

20bac0772c548fe1e41eed21d55849bad2f34b2f

2 files changed, 18 insertions(+), 1 deletions(-)

jump to
M src/Window.ccsrc/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.hhsrc/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);