all repos — openbox @ 4c03637fd1cd5273a030abe38dfffa65c67fd420

openbox fork - make it a bit more like ryudo

modal transients wouldnt throw their focus up to their arent cuz the parent didnt know the modal dialog was gone yet and would pass it back to them.
Dana Jansens danakj@orodu.net
commit

4c03637fd1cd5273a030abe38dfffa65c67fd420

parent

b1874480ae98debabcfe92a6388dd139cd49e49b

2 files changed, 10 insertions(+), 10 deletions(-)

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

@@ -1245,12 +1245,6 @@

void BScreen::unmanageWindow(BlackboxWindow *w, bool remap) { w->restore(remap); - if (w->getWorkspaceNumber() != BSENTINEL && - w->getWindowNumber() != BSENTINEL) - getWorkspace(w->getWorkspaceNumber())->removeWindow(w); - else if (w->isIconic()) - removeIcon(w); - if (w->isNormal()) { // we don't list non-normal windows as managed windows windowList.remove(w);

@@ -1265,9 +1259,6 @@ break;

} assert(it != end); // the window wasnt a desktop window? } - - if (blackbox->getFocusedWindow() == w) - blackbox->setFocusedWindow((BlackboxWindow *) 0); removeNetizen(w->getClientWindow());
M src/Window.ccsrc/Window.cc

@@ -361,8 +361,17 @@ if (isTransient()) {

if (client.transient_for != (BlackboxWindow *) ~0ul) { client.transient_for->client.transientList.remove(this); } - client.transient_for = (BlackboxWindow*) 0; + // we save our transient_for though because the workspace will use it + // when determining the next window to get focus } + + if (blackbox_attrib.workspace != BSENTINEL && + window_number != BSENTINEL) + screen->getWorkspace(blackbox_attrib.workspace)->removeWindow(this); + else if (flags.iconic) + screen->removeIcon(this); + + client.transient_for = (BlackboxWindow*) 0; if (client.transientList.size() > 0) { // reset transient_for for all transients