remove sticky windows from other workspaces when unsticking. stop the abuse of stick()! dont just re-call it!

This commit is contained in:
Dana Jansens 2002-07-30 07:29:36 +00:00
parent a7515b6d85
commit 25a18140fa

View file

@ -316,9 +316,8 @@ BlackboxWindow::BlackboxWindow(Blackbox *b, Window w, BScreen *s) {
// get sticky state from our parent window if we've got one // get sticky state from our parent window if we've got one
if (isTransient() && client.transient_for != (BlackboxWindow *) ~0ul && if (isTransient() && client.transient_for != (BlackboxWindow *) ~0ul &&
client.transient_for->isStuck() != flags.stuck) client.transient_for->isStuck() != flags.stuck)
stick(); flags.stuck = True;
// the following flags are set by blackbox native apps only
if (flags.shaded) { if (flags.shaded) {
flags.shaded = False; flags.shaded = False;
initial_state = current_state; initial_state = current_state;
@ -1941,6 +1940,10 @@ void BlackboxWindow::stick(void) {
blackbox_attrib.attrib ^= AttribOmnipresent; blackbox_attrib.attrib ^= AttribOmnipresent;
flags.stuck = False; 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) if (! flags.iconic)
screen->reassociateWindow(this, BSENTINEL, True); screen->reassociateWindow(this, BSENTINEL, True);
@ -2224,8 +2227,8 @@ void BlackboxWindow::restoreAttributes(void) {
current_state = NormalState; current_state = NormalState;
} }
if (net->flags & AttribOmnipresent && net->attrib & AttribOmnipresent) { if (net->flags & AttribOmnipresent && net->attrib & AttribOmnipresent &&
flags.stuck = False; ! flags.stuck) {
stick(); stick();
// if the window was on another workspace, it was going to be hidden. this // if the window was on another workspace, it was going to be hidden. this