diff --git a/awesome.c b/awesome.c index 05bd4b2e9..743010b75 100644 --- a/awesome.c +++ b/awesome.c @@ -65,6 +65,12 @@ awesome_atexit(bool restart) lua_pushboolean(globalconf.L, restart); signal_object_emit(globalconf.L, &global_signals, "exit", 1); + /* TODO: Reparent windows back to root window, placing them according to + * their window gravity. Right now we pretend to use static gravity and that + * works automatically thanks to xcb_change_save_set(). See + * titlebar_resize(). + */ + a_dbus_cleanup(); systray_cleanup(); diff --git a/objects/client.c b/objects/client.c index bdbcaaeb6..4dd318c11 100644 --- a/objects/client.c +++ b/objects/client.c @@ -1558,16 +1558,23 @@ titlebar_resize(client_t *c, client_titlebar_t bar, int size) return; /* Now resize the client (and titlebars!) suitably (the client without - * titlebars should keep its current size!) */ + * titlebars should keep its current size!) + * TODO: I guess that this should honor the client's window gravity, right + * now we pretend to have static gravity. See awesome_atexit(). + */ area_t geometry = c->geometry; int change = size - c->titlebar[bar].size; switch (bar) { case CLIENT_TITLEBAR_TOP: + geometry.y -= change; + /* fall through */; case CLIENT_TITLEBAR_BOTTOM: geometry.height += change; break; - case CLIENT_TITLEBAR_RIGHT: case CLIENT_TITLEBAR_LEFT: + geometry.x -= change; + /* fall through */; + case CLIENT_TITLEBAR_RIGHT: geometry.width += change; break; default: