From cc16be5d1a81f6ed6d216189ab7669b942b8403d Mon Sep 17 00:00:00 2001 From: Tim Keller Date: Fri, 18 Apr 2025 23:48:39 -0500 Subject: destroy old menus and hide/destroy on visibility change --- widgets/volumedropdown.lua | 14 +++++++++++--- 1 file 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 -- cgit v1.2.3