X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FWindow.cc;h=8b78d85e9242b61553c52f044289acc2b598dbe2;hb=988461343a14270bf6594c12041eda90447514d8;hp=cd8716e0769a5bdf46430d4ef8c7ad99d858f76b;hpb=a7515b6d85b9cdb97d2365559109af74e68f6ff8;p=chaz%2Fopenbox diff --git a/src/Window.cc b/src/Window.cc index cd8716e0..8b78d85e 100644 --- a/src/Window.cc +++ b/src/Window.cc @@ -316,9 +316,8 @@ BlackboxWindow::BlackboxWindow(Blackbox *b, Window w, BScreen *s) { // 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 @@ void BlackboxWindow::stick(void) { 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 @@ void BlackboxWindow::restoreAttributes(void) { 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