From e38ce61cf7fb2f24e14f8c5a73280ecb56797319 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Wed, 15 Sep 2021 11:01:47 -0400 Subject: [PATCH] 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 --- audio/controls.py | 19 ++++--------------- audio/test_controls.py | 9 +++++---- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/audio/controls.py b/audio/controls.py index ea77986..0150990 100644 --- a/audio/controls.py +++ b/audio/controls.py @@ -135,22 +135,11 @@ class MenuIcon(Gtk.Overlay): self.label.set_markup(f"{text}") -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): diff --git a/audio/test_controls.py b/audio/test_controls.py index 5ac0ffa..d8953aa 100644 --- a/audio/test_controls.py +++ b/audio/test_controls.py @@ -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):