all repos — openbox @ 25a18140fad2f111ce681cef90be6c13ae6e8996

openbox fork - make it a bit more like ryudo

remove sticky windows from other workspaces when unsticking. stop the abuse of stick()! dont just re-call it!
Dana Jansens danakj@orodu.net
commit

25a18140fad2f111ce681cef90be6c13ae6e8996

parent

a7515b6d85b9cdb97d2365559109af74e68f6ff8

1 files changed, 7 insertions(+), 4 deletions(-)

jump to
M src/Window.ccsrc/Window.cc

@@ -316,9 +316,8 @@

// 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(); + flags.stuck = True; - // the following flags are set by blackbox native apps only if (flags.shaded) { flags.shaded = False; initial_state = current_state;

@@ -1941,6 +1940,10 @@ blackbox_attrib.flags ^= AttribOmnipresent;

blackbox_attrib.attrib ^= AttribOmnipresent; flags.stuck = False; + + for (unsigned int i = 0; i < screen->getNumberOfWorkspaces(); ++i) + if (i != blackbox_attrib.workspace) + screen->getWorkspace(i)->removeWindow(this, True); if (! flags.iconic) screen->reassociateWindow(this, BSENTINEL, True);

@@ -2224,8 +2227,8 @@ // be mapped

current_state = NormalState; } - if (net->flags & AttribOmnipresent && net->attrib & AttribOmnipresent) { - flags.stuck = False; + if (net->flags & AttribOmnipresent && net->attrib & AttribOmnipresent && + ! flags.stuck) { stick(); // if the window was on another workspace, it was going to be hidden. this