all repos — fluxbox @ d482cf6a54709a5867469835490c6a4a40f1a88e

custom fork of the fluxbox windowmanager

somewhat fixed DeiconifyCmd
markt markt
commit

d482cf6a54709a5867469835490c6a4a40f1a88e

parent

bb6906fa80c06fc23975d7520b3e8919423a29b4

3 files changed, 13 insertions(+), 6 deletions(-)

jump to
M src/FbCommands.ccsrc/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.ccsrc/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.ccsrc/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; }