somewhat fixed DeiconifyCmd
markt markt
3 files changed,
13 insertions(+),
6 deletions(-)
M
src/FbCommands.cc
→
src/FbCommands.cc
@@ -433,8 +433,7 @@ if (m_mode == ALL || old_workspace_num == workspace_num ||
(*it)->isStuck()) { if (m_dest == ORIGIN || m_dest == ORIGINQUIET) screen->sendToWorkspace(old_workspace_num, (*it), change_ws); - else - (*it)->deiconify(false); + (*it)->deiconify(false); } } break;
M
src/Screen.cc
→
src/Screen.cc
@@ -1263,7 +1263,7 @@ changeWorkspaceID(id, false);
// if the window is on current workspace, show it; else hide it. if (id == currentWorkspace()->workspaceID() && !win->isIconic()) - win->deiconify(false, false); + win->show(); else { win->hide(true); FocusControl::revertFocus(*this);
M
src/Window.cc
→
src/Window.cc
@@ -1415,9 +1415,17 @@
if (oplock) return; oplock = true; - if (iconic || reassoc) { - screen().reassociateWindow(this, screen().currentWorkspace()->workspaceID(), false); - } else if (moving || m_workspace_number != screen().currentWorkspace()->workspaceID()) { + if (iconic && + m_workspace_number != screen().currentWorkspace()->workspaceID()) { + // reassociate first, so it gets removed from screen's icon list + screen().reassociateWindow(this, m_workspace_number, false); + iconic = false; + return; + } + + if (iconic || reassoc) + screen().reassociateWindow(this, screen().currentWorkspaceID(), false); + else if (moving || m_workspace_number != screen().currentWorkspaceID()) { oplock = false; return; }