remove sticky windows from other workspaces when unsticking. stop the abuse of stick()! dont just re-call it!
This commit is contained in:
parent
a7515b6d85
commit
25a18140fa
1 changed files with 7 additions and 4 deletions
|
@ -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;
|
||||||
|
@ -1942,6 +1941,10 @@ void BlackboxWindow::stick(void) {
|
||||||
|
|
||||||
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);
|
||||||
// temporary fix since sticky windows suck. set the hint to what we
|
// temporary fix since sticky windows suck. set the hint to what we
|
||||||
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue