X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fscreen.cc;h=7f15b243a4a2d62a246ff75368ac7a2a4b3c7a67;hb=eccab56a6c06c9c2f5764d7913fd794961f60214;hp=f9485595f5ef22df21f8b876cbb73899f14af9a4;hpb=26bef30a57e0a23be2dc3dd5418f305c43684bb1;p=chaz%2Fopenbox diff --git a/src/screen.cc b/src/screen.cc index f9485595..7f15b243 100644 --- a/src/screen.cc +++ b/src/screen.cc @@ -535,12 +535,6 @@ void OBScreen::manageWindow(Window window) Openbox::instance->bindings()->grabButtons(true, client); - if (shown) { - // XXX: make this optional or more intelligent - if (client->normal()) - client->focus(); - } - // call the python NEWWINDOW binding EventData *data = new_event_data(_number, window, EventNewWindow, 0); Openbox::instance->bindings()->fireEvent(data); @@ -564,19 +558,9 @@ void OBScreen::unmanageWindow(OBClient *client) // remove from the stacking order _stacking.remove(client); - - // pass around focus if this window was focused XXX do this better! - if (Openbox::instance->focusedClient() == client) { - OBClient *newfocus = 0; - OBClient::List::iterator it, end = _stacking.end(); - for (it = _stacking.begin(); it != end; ++it) - if ((*it)->desktop() == _desktop && (*it)->normal() && (*it)->focus()) { - newfocus = *it; - break; - } - if (!newfocus) - client->unfocus(); - } + + // unfocus the client + client->unfocus(); // remove from the wm's map Openbox::instance->removeClient(client->window()); @@ -660,7 +644,7 @@ void OBScreen::changeDesktop(long desktop) _desktop); if (old == _desktop) return; - + OBClient::List::iterator it, end = clients.end(); for (it = clients.begin(); it != end; ++it) { if ((*it)->desktop() == old) { @@ -669,6 +653,9 @@ void OBScreen::changeDesktop(long desktop) (*it)->frame->show(); } } + + // force the callbacks to fire + Openbox::instance->setFocusedClient(0); } void OBScreen::changeNumDesktops(long num)