summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Keller <tjkeller.xyz>2025-04-18 23:48:39 -0500
committerTim Keller <tjkeller.xyz>2025-04-18 23:48:39 -0500
commitcc16be5d1a81f6ed6d216189ab7669b942b8403d (patch)
tree02ef1eed1f54461926bb0a79ee0e7da3fea2a6bd
parent428ce27f3004a8d7d367e87594da1b8d93241823 (diff)
downloadawesome-cc16be5d1a81f6ed6d216189ab7669b942b8403d.tar.xz
awesome-cc16be5d1a81f6ed6d216189ab7669b942b8403d.zip
destroy old menus and hide/destroy on visibility change
-rw-r--r--widgets/volumedropdown.lua14
1 files changed, 11 insertions, 3 deletions
diff --git a/widgets/volumedropdown.lua b/widgets/volumedropdown.lua
index d669b46..a25db70 100644
--- a/widgets/volumedropdown.lua
+++ b/widgets/volumedropdown.lua
@@ -149,7 +149,7 @@ end)
default_sink_scrollbox:connect_signal("button::press", function()
widget.dropdown.visible = true -- make sure widget isn't hidden
- local g = mouse.current_widget_geometry
+ local g = mouse.current_widget_geometry -- relative to widget.dropdown
local menugeo = {
x = widget.dropdown.x + g.x - beautiful.margin_topbottom,
y = widget.dropdown.y + g.y + g.height + beautiful.margin_topbottom + (beautiful.border_width * 2),
@@ -163,8 +163,16 @@ default_sink_scrollbox:connect_signal("button::press", function()
})
end
- if widget._menu then widget._menu:hide() end
- widget._menu = awful.menu(menuopts):show({ coords = menugeo })
+ if widget.menu then widget.menu:hide() end
+ widget.menu = awful.menu(menuopts) -- old menu dereferenced, should be cleaned up by gc
+ widget.menu:show({ coords = menugeo })
+end)
+
+widget.dropdown:connect_signal("property::visible", function()
+ if widget.menu then
+ widget.menu:hide()
+ widget.menu = nil
+ end
end)
-- mute button