// reparented back to root automatically
XChangeSaveSet(otk::OBDisplay::display, window, SetModeInsert);
- if (!client->positionRequested()) {
- // XXX: position the window intelligenty
+ if (!(Openbox::instance->state() == Openbox::State_Starting ||
+ client->positionRequested())) {
+ // position the window intelligenty .. hopefully :)
+ // call the python PLACEWINDOW binding
+ EventData *data = new_event_data(_number, window, EventPlaceWindow, 0);
+ Openbox::instance->bindings()->fireEvent(data);
+ Py_DECREF((PyObject*)data);
}
// create the decoration frame for the client 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);
Openbox::instance->bindings()->grabButtons(false, client);
- // remove from the stacking order
- _stacking.remove(client);
-
- // unfocus the client
- client->unfocus();
-
// remove from the wm's map
Openbox::instance->removeClient(client->window());
Openbox::instance->removeClient(frame->window());
delete client->frame;
client->frame = 0;
+ // remove from the stacking order
+ _stacking.remove(client);
+
// remove from the screen's list
clients.remove(client);
+
+ // unfocus the client (calls the focus callbacks)
+ client->unfocus();
+
delete client;
// update the root properties
_desktop);
if (old == _desktop) return;
-
+
OBClient::List::iterator it, end = clients.end();
for (it = clients.begin(); it != end; ++it) {
if ((*it)->desktop() == old) {
}
}
- // if nothing is focused, force the callbacks to fire
-// if (!Openbox::instance->focusedClient())
-// Openbox::instance->setFocusedClient(0);
+ // force the callbacks to fire
+ if (!Openbox::instance->focusedClient())
+ Openbox::instance->setFocusedClient(0);
}
void OBScreen::changeNumDesktops(long num)