From: Corey Thompson <cmt...@gmail.com> * client.c: Previous geometry as argument to property::geometry signal * client.lua: Initialize floating_geometry using the previous argumment
Signed-off-by: Corey Thompson <cmt...@gmail.com> --- client.c | 16 +++++++++++----- lib/awful/client.lua.in | 14 +++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/client.c b/client.c index 1d83c58..73e7dcc 100644 --- a/client.c +++ b/client.c @@ -929,6 +929,7 @@ client_resize(client_t *c, area_t geometry, bool hints) c->geometries.internal.height = values[3] = geometry_internal.height; /* Also store geometry including border and titlebar. */ + area_t geometry_prev = c->geometry; c->geometry = geometry; titlebar_update_geometry(c); @@ -949,12 +950,17 @@ client_resize(client_t *c, area_t geometry, bool hints) hook_property(c, "geometry"); luaA_object_push(globalconf.L, c); - luaA_object_emit_signal(globalconf.L, -1, "property::geometry", 0); + int nargs = luaA_pusharea(globalconf.L, geometry_prev); + luaA_object_emit_signal(globalconf.L, -1 - nargs, "property::geometry", nargs); /** \todo This need to be VERIFIED before it is emitted! */ - luaA_object_emit_signal(globalconf.L, -1, "property::x", 0); - luaA_object_emit_signal(globalconf.L, -1, "property::y", 0); - luaA_object_emit_signal(globalconf.L, -1, "property::width", 0); - luaA_object_emit_signal(globalconf.L, -1, "property::height", 0); + lua_pushnumber(globalconf.L, geometry_prev.x); + luaA_object_emit_signal(globalconf.L, -2, "property::x", 1); + lua_pushnumber(globalconf.L, geometry_prev.y); + luaA_object_emit_signal(globalconf.L, -2, "property::y", 1); + lua_pushnumber(globalconf.L, geometry_prev.width); + luaA_object_emit_signal(globalconf.L, -2, "property::width", 1); + lua_pushnumber(globalconf.L, geometry_prev.height); + luaA_object_emit_signal(globalconf.L, -2, "property::height", 1); lua_pop(globalconf.L, 1); return true; diff --git a/lib/awful/client.lua.in b/lib/awful/client.lua.in index cf78c9f..81b107f 100644 --- a/lib/awful/client.lua.in +++ b/lib/awful/client.lua.in @@ -578,11 +578,15 @@ end -- Store the initial client geometry. capi.client.add_signal("new", function(c) - local function store_init_geometry(c) - property.set(c, "floating_geometry", c:geometry()) - c:remove_signal("property::border_width", store_init_geometry) - end - c:add_signal("property::border_width", store_init_geometry) + local function store_init_geometry(c, p) + -- the first property::geometry signal is emitted before + -- borders and titlebar have been added, so hold off for + -- the second signal and then take the previous geometry + if not p then return end + property.set(c, "floating_geometry", p) + c:remove_signal("property::geometry", store_init_geometry) + end + c:add_signal("property::geometry", store_init_geometry) end) capi.client.add_signal("manage", function(c) -- 1.7.9.4 -- To unsubscribe, send mail to awesome-devel-unsubscr...@naquadah.org.