setClientList();
Openbox::instance->bindings()->grabButtons(true, client);
+
+ // XXX: make this optional or more intelligent
+ if (client->normal())
+ client->focus();
+
+ // call the python NEWWINDOW binding
+ EventData *data = new_event_data(window, EventNewWindow, 0);
+ Openbox::instance->bindings()->fireEvent(data);
+ Py_DECREF((PyObject*)data);
}
{
OBFrame *frame = client->frame;
+ // call the python CLOSEWINDOW binding
+ EventData *data = new_event_data(client->window(), EventCloseWindow, 0);
+ Openbox::instance->bindings()->fireEvent(data);
+ Py_DECREF((PyObject*)data);
+
Openbox::instance->bindings()->grabButtons(false, client);
// remove from the stacking order
// pass around focus if this window was focused XXX do this better!
if (Openbox::instance->focusedClient() == client) {
OBClient *newfocus = 0;
- if (!_stacking.empty())
- newfocus = _stacking.front();
- if (! (newfocus && newfocus->focus()))
+ ClientList::iterator it, end = _stacking.end();
+ for (it = _stacking.begin(); it != end; ++it)
+ if ((*it)->normal() && (*it)->focus()) {
+ newfocus = *it;
+ break;
+ }
+ if (!newfocus)
client->unfocus();
}