summaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index 3cb6176b..d11894ce 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -1269,9 +1269,14 @@ void BScreen::unmanageWindow(BlackboxWindow *w, bool remap) {
if (w->isModal()) w->setModal(False);
if (w->getWorkspaceNumber() != BSENTINEL &&
- w->getWindowNumber() != BSENTINEL)
+ w->getWindowNumber() != BSENTINEL) {
getWorkspace(w->getWorkspaceNumber())->removeWindow(w);
- else if (w->isIconic())
+ if (w->isStuck()) {
+ for (unsigned int i = 0; i < getNumberOfWorkspaces(); ++i)
+ if (i != w->getWorkspaceNumber())
+ getWorkspace(i)->removeWindow(w, True);
+ }
+ } else if (w->isIconic())
removeIcon(w);
if (w->isNormal()) {
@@ -1515,6 +1520,10 @@ void BScreen::reassociateWindow(BlackboxWindow *w, unsigned int wkspc_id,
if (w->isIconic()) {
removeIcon(w);
getWorkspace(wkspc_id)->addWindow(w);
+ if (w->isStuck())
+ for (unsigned int i = 0; i < getNumberOfWorkspaces(); ++i)
+ if (i != w->getWorkspaceNumber())
+ getWorkspace(i)->addWindow(w, True);
} else if (ignore_sticky || ! w->isStuck()) {
if (w->isStuck())
w->stick();