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:
parent
9c5b409d02
commit
e38ce61cf7
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue