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>") self.label.set_markup(f"<small>{text}</small>")
class MenuButton(Gtk.ToggleButton): class MenuButton(Gtk.MenuButton):
def __init__(self, player, apscale): def __init__(self, player, apscale):
Gtk.ToggleButton.__init__(self) Gtk.MenuButton.__init__(self)
self.popover = ControlsPopover(player, apscale) self.set_popover(ControlsPopover(player, apscale))
self.popover.set_parent(self) self.get_first_child().set_child(MenuIcon(apscale))
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)
class AudioControls(Gtk.Box): class AudioControls(Gtk.Box):

View File

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