made popover_button a MenuButton

This commit is contained in:
Martin Wagner 2022-03-04 16:18:53 +01:00
parent 8f3f954602
commit 211d88fc67

View File

@ -2436,6 +2436,7 @@ class PlaylistsPopover(Gtk.Popover):
self._scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) self._scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
# connect # connect
self.connect("show", self._on_show)
self._entry.connect("activate", self._add) self._entry.connect("activate", self._add)
self._entry.connect("changed", self._on_entry_changed) self._entry.connect("changed", self._on_entry_changed)
self._add_button.connect("clicked", self._add) self._add_button.connect("clicked", self._add)
@ -2454,13 +2455,6 @@ class PlaylistsPopover(Gtk.Popover):
self.add(vbox) self.add(vbox)
vbox.show_all() vbox.show_all()
def open(self, widget):
window=self.get_toplevel()
self._scroll.set_max_content_height(window.get_size()[1]//2)
self._playlists_view.refresh()
self.popup()
self._playlists_view.columns_autosize()
def _add(self, *args): def _add(self, *args):
if self._add_button.get_sensitive(): if self._add_button.get_sensitive():
self._playlists_view.add(self._entry.get_text()) self._playlists_view.add(self._entry.get_text())
@ -2470,6 +2464,12 @@ class PlaylistsPopover(Gtk.Popover):
name=self._entry.get_text() name=self._entry.get_text()
self._add_button.set_sensitive(name and not name in (x["playlist"] for x in self._client.listplaylists())) self._add_button.set_sensitive(name and not name in (x["playlist"] for x in self._client.listplaylists()))
def _on_show(self, *args):
window=self.get_toplevel()
self._scroll.set_max_content_height(window.get_size()[1]//2)
self._playlists_view.refresh()
self._playlists_view.columns_autosize()
class PlaylistView(TreeView): class PlaylistView(TreeView):
selected_path=GObject.Property(type=Gtk.TreePath, default=None) # currently marked song (bold text) selected_path=GObject.Property(type=Gtk.TreePath, default=None) # currently marked song (bold text)
def __init__(self, client, settings): def __init__(self, client, settings):
@ -2700,14 +2700,12 @@ class PlaylistWindow(Gtk.Overlay):
) )
self._treeview=PlaylistView(client, settings) self._treeview=PlaylistView(client, settings)
scroll=Gtk.ScrolledWindow(child=self._treeview) scroll=Gtk.ScrolledWindow(child=self._treeview)
self.popover_button=Gtk.Button(image=AutoSizedIcon("view-list-symbolic", "icon-size", settings), self.popover_button=Gtk.MenuButton(image=AutoSizedIcon("view-list-symbolic", "icon-size", settings),
popover=PlaylistsPopover(client, self._treeview.label),
tooltip_text=_("Playlists"), can_focus=False) tooltip_text=_("Playlists"), can_focus=False)
popover=PlaylistsPopover(client, self._treeview.label)
popover.set_relative_to(self.popover_button)
# connect # connect
self._back_to_current_song_button.connect("clicked", self._on_back_to_current_song_button_clicked) self._back_to_current_song_button.connect("clicked", self._on_back_to_current_song_button_clicked)
self.popover_button.connect("clicked", popover.open)
scroll.get_vadjustment().connect("value-changed", self._on_show_hide_back_button) scroll.get_vadjustment().connect("value-changed", self._on_show_hide_back_button)
self._treeview.connect("notify::selected-path", self._on_show_hide_back_button) self._treeview.connect("notify::selected-path", self._on_show_hide_back_button)
settings.bind("mini-player", self, "no-show-all", Gio.SettingsBindFlags.GET) settings.bind("mini-player", self, "no-show-all", Gio.SettingsBindFlags.GET)