EWMH: Handle _NET_WM_DESKTOP in lua
We now handle all "important" EWMH messages in lua and lua can decide to do different things than the current obvious one. Consistency! Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
parent
9e4270f2e7
commit
873358a0b8
15
ewmh.c
15
ewmh.c
|
@ -366,18 +366,19 @@ ewmh_process_desktop(client_t *c, uint32_t desktop)
|
|||
if(desktop == 0xffffffff)
|
||||
{
|
||||
luaA_object_push(globalconf.L, c);
|
||||
client_set_sticky(globalconf.L, -1, true);
|
||||
lua_pushnil(globalconf.L);
|
||||
luaA_object_emit_signal(globalconf.L, -2, "request::tag", 1);
|
||||
/* Pop the client, arguments are already popped */
|
||||
lua_pop(globalconf.L, 1);
|
||||
}
|
||||
else if (idx >= 0 && idx < globalconf.tags.len)
|
||||
for(int i = 0; i < globalconf.tags.len; i++)
|
||||
if(idx == i)
|
||||
{
|
||||
luaA_object_push(globalconf.L, globalconf.tags.tab[i]);
|
||||
tag_client(c);
|
||||
luaA_object_push(globalconf.L, c);
|
||||
luaA_object_push(globalconf.L, globalconf.tags.tab[idx]);
|
||||
luaA_object_emit_signal(globalconf.L, -2, "request::tag", 1);
|
||||
/* Pop the client, arguments are already popped */
|
||||
lua_pop(globalconf.L, 1);
|
||||
}
|
||||
else
|
||||
untag_client(c, globalconf.tags.tab[i]);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
@ -142,7 +142,17 @@ function ewmh.activate(c)
|
|||
end
|
||||
end
|
||||
|
||||
-- Tag a window with its requested tag
|
||||
function ewmh.tag(c, t)
|
||||
if not t then
|
||||
c.sticky = true
|
||||
else
|
||||
c:tags({ t })
|
||||
end
|
||||
end
|
||||
|
||||
client.connect_signal("request::activate", ewmh.activate)
|
||||
client.connect_signal("request::tag", ewmh.tag)
|
||||
client.connect_signal("request::maximized_horizontal", maximized_horizontal)
|
||||
client.connect_signal("request::maximized_vertical", maximized_vertical)
|
||||
client.connect_signal("request::fullscreen", fullscreen)
|
||||
|
|
|
@ -2398,6 +2398,7 @@ luaA_class_add_property(&client_class, "startup_id",
|
|||
signal_add(&client_class.signals, "request::fullscreen");
|
||||
signal_add(&client_class.signals, "request::maximized_horizontal");
|
||||
signal_add(&client_class.signals, "request::maximized_vertical");
|
||||
signal_add(&client_class.signals, "request::tag");
|
||||
signal_add(&client_class.signals, "tagged");
|
||||
signal_add(&client_class.signals, "unfocus");
|
||||
signal_add(&client_class.signals, "unmanage");
|
||||
|
|
Loading…
Reference in New Issue