all repos — openbox @ f2ecfb623b54dacec13d23260a3c6512632c0eef

openbox fork - make it a bit more like ryudo

when a window is iconified, set its workspace to 'all workspaces' so it shows up in taskbars still. otherwise its impossible to get back iconified windows. update teh stacking list when windows switch workspaces.
Dana Jansens danakj@orodu.net
commit

f2ecfb623b54dacec13d23260a3c6512632c0eef

parent

20bc088a998a362977233086577d74d00eea8765

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

jump to
M src/Screen.ccsrc/Screen.cc

@@ -240,7 +240,7 @@

raiseWindows(0, 0); // this also initializes the empty stacking list rootmenu->update(); - updateClientList(); // initialize the client list, which will be empty + updateClientList(); // initialize the client lists, which will be empty updateAvailableArea(); changeWorkspaceID(0);

@@ -921,7 +921,10 @@

void BScreen::addIcon(BlackboxWindow *w) { if (! w) return; - w->setWorkspace(BSENTINEL); + // we set the workspace to 'all workspaces' so that taskbars will show the + // window. otherwise, it made uniconifying a window impoosible without the + // blackbox workspace menu + w->setWorkspace(0xffffffff); w->setWindowNumber(iconList.size()); iconList.push_back(w);

@@ -1061,6 +1064,8 @@ delete [] windows;

} else xatom->setValue(getRootWindow(), XAtom::net_client_list, XAtom::window, 0, 0); + + updateStackingList(); }

@@ -1072,7 +1077,7 @@

BlackboxWindowList stack_order; /* - * Get the atacking order from all of the workspaces. + * Get the stacking order from all of the workspaces. * We start with the current workspace so that the sticky windows will be * in the right order on the current workspace. * XXX: Do we need to have sticky windows in the list once for each workspace?

@@ -1081,13 +1086,13 @@ getCurrentWorkspace()->appendStackOrder(stack_order);

for (unsigned int i = 0; i < getWorkspaceCount(); ++i) if (i != getCurrentWorkspaceID()) getWorkspace(i)->appendStackOrder(stack_order); - + if (stack_order.size() > 0) { // set the client list atoms Window *windows = new Window[stack_order.size()]; Window *win_it = windows; - BlackboxWindowList::iterator it = stack_order.begin(); - const BlackboxWindowList::iterator end = stack_order.end(); + BlackboxWindowList::iterator it = stack_order.begin(), + end = stack_order.end(); for (; it != end; ++it, ++win_it) *win_it = (*it)->getClientWindow(); xatom->setValue(getRootWindow(), XAtom::net_client_list_stacking,

@@ -1390,6 +1395,7 @@ } else if (ignore_sticky || ! w->isStuck()) {

getWorkspace(w->getWorkspaceNumber())->removeWindow(w); getWorkspace(wkspc_id)->addWindow(w); } + updateStackingList(); }
M src/Window.ccsrc/Window.cc

@@ -1668,6 +1668,7 @@ for (it = client.transientList.begin(); it != end; ++it) {

if (! (*it)->flags.iconic) (*it)->iconify(); } } + screen->updateStackingList(); }