-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Hi,
given that the "new" caused some problems, I wondered if it was necessary.
Looking at the attached patches, I think it isn't. :P
(Beware: Only some quick testing done)
IMHO this is the proper fix for the "c.screen == <some huge number>" bug I had
recently when I accidentally used the client in client::new.
@jd:
Please don't hurt me too badly for this, it's only a suggestion. *duck*
Uli
- --
"Do you know that books smell like nutmeg or some spice from a foreign land?"
-- Faber in Fahrenheit 451
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iQEcBAEBCAAGBQJKoQ+LAAoJECLkKOvLj8sGJjwIAIImsOtKQbSzCekvQaB1pXmE
SghP2TPx4/wYEZmoiVpYsSSpd3quIwjOiLAXCtXjykdzs6VErYlzxWQf+nn9I5nR
BGLdhjWl7lZagLjbi6+FmW7aFUM7BOeg9wWrkcHEv9UJfb5gI5EsI7JR8npaps6s
CvTdphsAR6MksOcxHzoMiHAlHiSrdruWCBPNqEDGAVWXvmVcrGZwDDcueulhg3x7
N4VhGx0LZa686rKIReLS7hZBFUfQ1vLsDBre28vbtGYuzOjinGKAfbc5laTSUh6B
mS2Gu1v3ZKAOtOd8LcRKAfxeIQv8I3rGb/6cy69ev6W7B8NOVb7NZzBQi8SMRzc=
=HUhj
-----END PGP SIGNATURE-----
>From 631287c27031623635f4f6a39a57c8fc5f70cad6 Mon Sep 17 00:00:00 2001
From: Uli Schlachter <[email protected]>
Date: Fri, 4 Sep 2009 14:48:12 +0200
Subject: [PATCH 1/2] awful: Use client::manage instead of client::new
This shouldn't cause any behavior changes.
Some explicit calls to the update functions were added, because e.g.
property::screen is emitted after client::new but before client::manage. At
worst this will cause spurious updates.
Signed-off-by: Uli Schlachter <[email protected]>
---
lib/awful/autofocus.lua.in | 2 +-
lib/awful/layout/init.lua.in | 3 ++-
lib/awful/widget/taglist.lua.in | 3 ++-
lib/awful/widget/tasklist.lua.in | 3 ++-
4 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/lib/awful/autofocus.lua.in b/lib/awful/autofocus.lua.in
index 923fabf..ac5e814 100644
--- a/lib/awful/autofocus.lua.in
+++ b/lib/awful/autofocus.lua.in
@@ -24,7 +24,7 @@ end
atag.attached_add_signal(nil, "property::selected", check_focus)
client.add_signal("unmanage", check_focus)
-client.add_signal("new", function(c)
+client.add_signal("manage", function(c)
c:add_signal("untagged", check_focus)
c:add_signal("property::hidden", check_focus)
c:add_signal("property::minimized", check_focus)
diff --git a/lib/awful/layout/init.lua.in b/lib/awful/layout/init.lua.in
index d30d7fe..2007621 100644
--- a/lib/awful/layout/init.lua.in
+++ b/lib/awful/layout/init.lua.in
@@ -88,7 +88,7 @@ end
local function arrange_prop(obj) arrange(obj.screen) end
-capi.client.add_signal("new", function(c)
+capi.client.add_signal("manage", function(c)
c:add_signal("property::size_hints_honor", arrange_prop)
c:add_signal("property::struts", arrange_prop)
c:add_signal("property::minimized", arrange_prop)
@@ -104,6 +104,7 @@ capi.client.add_signal("new", function(c)
-- let's arrange all screens :-(
c:add_signal("property::screen", function(c)
for screen = 1, capi.screen.count() do arrange(screen) end end)
+ arrange_prop(c)
end)
local function arrange_on_tagged(c, tag)
diff --git a/lib/awful/widget/taglist.lua.in b/lib/awful/widget/taglist.lua.in
index 5b283fc..57dfb2b 100644
--- a/lib/awful/widget/taglist.lua.in
+++ b/lib/awful/widget/taglist.lua.in
@@ -76,7 +76,7 @@ function new(screen, label, buttons)
capi.screen[screen]:add_signal("tag::detach", function(screen, tag)
u(screen.index)
end)
- capi.client.add_signal("new", function(c)
+ capi.client.add_signal("manage", function(c)
c:add_signal("property::urgent", uc)
c:add_signal("property::screen", function(c)
-- If client change screen, refresh it anyway since we don't from
@@ -85,6 +85,7 @@ function new(screen, label, buttons)
end)
c:add_signal("tagged", uc)
c:add_signal("untagged", uc)
+ uc(c)
end)
capi.client.add_signal("unmanage", uc)
u(screen)
diff --git a/lib/awful/widget/tasklist.lua.in b/lib/awful/widget/tasklist.lua.in
index 448a38d..504e05b 100644
--- a/lib/awful/widget/tasklist.lua.in
+++ b/lib/awful/widget/tasklist.lua.in
@@ -60,7 +60,7 @@ function new(label, buttons)
capi.screen[s]:add_signal("tag::attach", u)
capi.screen[s]:add_signal("tag::detach", u)
end
- capi.client.add_signal("new", function (c)
+ capi.client.add_signal("manage", function (c)
c:add_signal("property::urgent", u)
c:add_signal("property::floating", u)
c:add_signal("property::maximized_horizontal", u)
@@ -71,6 +71,7 @@ function new(label, buttons)
c:add_signal("property::hidden", u)
c:add_signal("tagged", u)
c:add_signal("untagged", u)
+ u()
end)
capi.client.add_signal("unmanage", u)
capi.client.add_signal("list", u)
--
1.6.3.3
>From fbccb41c78684130f7dcb3ac7800bd67e4d284d5 Mon Sep 17 00:00:00 2001
From: Uli Schlachter <[email protected]>
Date: Fri, 4 Sep 2009 14:49:42 +0200
Subject: [PATCH 2/2] luaobject: Remove the "new" signal
It's no longer used anywhere and the object on which it is emitted is in an
undefined state at this point which can cause hard to understand bugs (e.g. a
client being on screen 1735786).
Signed-off-by: Uli Schlachter <[email protected]>
---
common/luaobject.h | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/common/luaobject.h b/common/luaobject.h
index 19aca17..9cfa9bc 100644
--- a/common/luaobject.h
+++ b/common/luaobject.h
@@ -157,7 +157,6 @@ int luaA_object_emit_signal_simple(lua_State *);
lua_setmetatable(L, -2); \
lua_setfenv(L, -2); \
lua_pushvalue(L, -1); \
- luaA_class_emit_signal(L, &(lua_class), "new", 1); \
return p; \
}
--
1.6.3.3