From e04c00ac5c7cd964879380d9e9f9f6bf8e2dfa8e Mon Sep 17 00:00:00 2001 From: Aylur Date: Wed, 11 Sep 2024 23:39:47 +0000 Subject: lua: fix hook --- core/lua/astal/widget.lua | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'core/lua/astal/widget.lua') diff --git a/core/lua/astal/widget.lua b/core/lua/astal/widget.lua index 23b045f..2383dbb 100644 --- a/core/lua/astal/widget.lua +++ b/core/lua/astal/widget.lua @@ -115,18 +115,20 @@ end local function astalify(ctor) function ctor:hook(object, signalOrCallback, callback) - if type(object.subscribe) == "function" then + if GObject.Object:is_type_of(object) and type(signalOrCallback) == "string" then + local id = object["on_" .. signalOrCallback]:connect(function(_, ...) + callback(self, ...) + end) + self.on_destroy = function() + GObject.signal_handler_disconnect(object, id) + end + elseif type(object.subscribe) == "function" then local unsub = object.subscribe(function(...) signalOrCallback(self, ...) end) self.on_destroy = unsub - return - end - local id = object["on_" .. signalOrCallback](function(_, ...) - callback(self, ...) - end) - self.on_destroy = function() - GObject.signal_handler_disconnect(object, id) + else + error("can not hook: not gobject+signal or subscribable") end end -- cgit v1.2.3