diff options
author | Aylur <[email protected]> | 2024-06-10 03:02:05 +0200 |
---|---|---|
committer | Aylur <[email protected]> | 2024-06-10 03:02:05 +0200 |
commit | 27883173a9c540a17bc144af3c2dde710be03fc3 (patch) | |
tree | c72d978ba177524cf6f77ed83f8be5dd4aede564 | |
parent | 721f9c8b067d1a119d5379086e3d2cfdd84a97f9 (diff) |
fix: avoid unnecessary Binding.get calls
-rw-r--r-- | gjs/src/astalify.ts | 9 | ||||
-rw-r--r-- | lua/astal/binding.lua | 2 | ||||
-rw-r--r-- | lua/astal/widget.lua | 13 |
3 files changed, 17 insertions, 7 deletions
diff --git a/gjs/src/astalify.ts b/gjs/src/astalify.ts index b97d730..d7f52fa 100644 --- a/gjs/src/astalify.ts +++ b/gjs/src/astalify.ts @@ -44,7 +44,14 @@ function setChildren(parent: Gtk.Widget, children: Gtk.Widget[]) { } function mergeBindings(array: any[]) { - const getValues = () => array.map(i => i instanceof Binding ? i.get() : i) + function getValues(...args: any[]) { + let i = 0 + return array.map(value => value instanceof Binding + ? args[i++] + : value, + ) + } + const bindings = array.filter(i => i instanceof Binding) if (bindings.length === 0) diff --git a/lua/astal/binding.lua b/lua/astal/binding.lua index c9929ea..50509d1 100644 --- a/lua/astal/binding.lua +++ b/lua/astal/binding.lua @@ -21,7 +21,7 @@ function Binding.new(emitter, property) end function Binding:__tostring() - local str = "Binding<" .. tostring(self:get()) + local str = "Binding<" .. tostring(self.emitter) if self.property ~= nil then str = str .. ", " .. self.property end diff --git a/lua/astal/widget.lua b/lua/astal/widget.lua index 8cbb9b9..f9a7800 100644 --- a/lua/astal/widget.lua +++ b/lua/astal/widget.lua @@ -83,12 +83,15 @@ local function set_children(parent, children) end local function merge_bindings(array) - local function get_values() - return map(array, function(v) - if getmetatable(v) == Binding then - return v:get() + local function get_values(...) + local args = { ... } + local i = 0 + return map(array, function(value) + if getmetatable(value) == Binding then + i = i + 1 + return args[i] else - return v + return value end end) end |