audio: Convert our MenuButton into a Gtk.MenuButton

The Gtk.MenuButton doesn't have the same issue with staying "pressed in"
after changing replaygain settings that our custom version does.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-09-15 11:01:47 -04:00
parent 9c5b409d02
commit e38ce61cf7
2 changed files with 9 additions and 19 deletions

View File

@ -135,22 +135,11 @@ class MenuIcon(Gtk.Overlay):
self.label.set_markup(f"<small>{text}</small>")
class MenuButton(Gtk.ToggleButton):
class MenuButton(Gtk.MenuButton):
def __init__(self, player, apscale):
Gtk.ToggleButton.__init__(self)
self.popover = ControlsPopover(player, apscale)
self.popover.set_parent(self)
self.popover.connect("closed", self.on_popover_closed)
self.set_child(MenuIcon(apscale))
def do_toggled(self):
if self.get_active():
self.popover.popup()
else:
self.popover.popdown()
def on_popover_closed(self, popover):
self.set_active(False)
Gtk.MenuButton.__init__(self)
self.set_popover(ControlsPopover(player, apscale))
self.get_first_child().set_child(MenuIcon(apscale))
class AudioControls(Gtk.Box):

View File

@ -214,10 +214,11 @@ class TestControlsMenuButton(unittest.TestCase):
apscale = scale.AutoPauseScale()
menu = controls.MenuButton(fake, apscale)
self.assertIsInstance(menu, Gtk.ToggleButton)
self.assertIsInstance(menu.popover, controls.ControlsPopover)
self.assertIsInstance(menu.get_child(), controls.MenuIcon)
self.assertEqual(menu.popover.get_parent(), menu)
self.assertIsInstance(menu, Gtk.MenuButton)
self.assertIsInstance(menu.get_popover(),
controls.ControlsPopover)
self.assertIsInstance(menu.get_first_child().get_child(),
controls.MenuIcon)
class TestAudioControls(unittest.TestCase):