summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarkt <markt>2007-11-23 00:45:56 (GMT)
committermarkt <markt>2007-11-23 00:45:56 (GMT)
commitd482cf6a54709a5867469835490c6a4a40f1a88e (patch)
tree47a55b0bc77e5396da9917c477cfbefe27c7b014
parentbb6906fa80c06fc23975d7520b3e8919423a29b4 (diff)
downloadfluxbox_lack-d482cf6a54709a5867469835490c6a4a40f1a88e.zip
fluxbox_lack-d482cf6a54709a5867469835490c6a4a40f1a88e.tar.bz2
somewhat fixed DeiconifyCmd
-rw-r--r--src/FbCommands.cc3
-rw-r--r--src/Screen.cc2
-rw-r--r--src/Window.cc14
3 files changed, 13 insertions, 6 deletions
diff --git a/src/FbCommands.cc b/src/FbCommands.cc
index 28c0a30..1cc1afe 100644
--- a/src/FbCommands.cc
+++ b/src/FbCommands.cc
@@ -433,8 +433,7 @@ void DeiconifyCmd::execute() {
433 (*it)->isStuck()) { 433 (*it)->isStuck()) {
434 if (m_dest == ORIGIN || m_dest == ORIGINQUIET) 434 if (m_dest == ORIGIN || m_dest == ORIGINQUIET)
435 screen->sendToWorkspace(old_workspace_num, (*it), change_ws); 435 screen->sendToWorkspace(old_workspace_num, (*it), change_ws);
436 else 436 (*it)->deiconify(false);
437 (*it)->deiconify(false);
438 } 437 }
439 } 438 }
440 break; 439 break;
diff --git a/src/Screen.cc b/src/Screen.cc
index 155a113..ebcaaed 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -1263,7 +1263,7 @@ void BScreen::sendToWorkspace(unsigned int id, FluxboxWindow *win, bool changeWS
1263 1263
1264 // if the window is on current workspace, show it; else hide it. 1264 // if the window is on current workspace, show it; else hide it.
1265 if (id == currentWorkspace()->workspaceID() && !win->isIconic()) 1265 if (id == currentWorkspace()->workspaceID() && !win->isIconic())
1266 win->deiconify(false, false); 1266 win->show();
1267 else { 1267 else {
1268 win->hide(true); 1268 win->hide(true);
1269 FocusControl::revertFocus(*this); 1269 FocusControl::revertFocus(*this);
diff --git a/src/Window.cc b/src/Window.cc
index 0db3b80..6a12664 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -1415,9 +1415,17 @@ void FluxboxWindow::deiconify(bool reassoc, bool do_raise) {
1415 if (oplock) return; 1415 if (oplock) return;
1416 oplock = true; 1416 oplock = true;
1417 1417
1418 if (iconic || reassoc) { 1418 if (iconic &&
1419 screen().reassociateWindow(this, screen().currentWorkspace()->workspaceID(), false); 1419 m_workspace_number != screen().currentWorkspace()->workspaceID()) {
1420 } else if (moving || m_workspace_number != screen().currentWorkspace()->workspaceID()) { 1420 // reassociate first, so it gets removed from screen's icon list
1421 screen().reassociateWindow(this, m_workspace_number, false);
1422 iconic = false;
1423 return;
1424 }
1425
1426 if (iconic || reassoc)
1427 screen().reassociateWindow(this, screen().currentWorkspaceID(), false);
1428 else if (moving || m_workspace_number != screen().currentWorkspaceID()) {
1421 oplock = false; 1429 oplock = false;
1422 return; 1430 return;
1423 } 1431 }