i3-companion: ensure variables are captured when wrapping event

This commit is contained in:
Vincent Bernat 2021-07-11 22:46:53 +02:00
parent 83ba6b5a23
commit d56b44114a

View file

@ -456,21 +456,23 @@ async def main(options):
if isinstance(event, DBusSignal): if isinstance(event, DBusSignal):
for bus in {i3.session_bus, i3.system_bus}: for bus in {i3.session_bus, i3.system_bus}:
@ravel.signal( def wrapping(fn, event):
name=event.member, @ravel.signal(
in_signature=event.signature, name=event.member,
path_keyword="path", in_signature=event.signature,
args_keyword="args", path_keyword="path",
) args_keyword="args",
async def wrapped(path, args): )
return await fn(i3, event, path, *args) async def wrapped(path, args):
return await fn(i3, event, path, *args)
return wrapped
bus.listen_signal( bus.listen_signal(
path=event.path, path=event.path,
fallback=True, fallback=True,
interface=event.interface, interface=event.interface,
name=event.member, name=event.member,
func=wrapped, func=wrapping(fn, event),
) )
await i3.main() await i3.main()