Show a header (pulley) menu on channel list 'edge-overshot'
This commit is contained in:
parent
b6ac9776d8
commit
3d678927f2
|
@ -73,10 +73,11 @@
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<object class="GtkScrolledWindow" id="channels_scrolled_window">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="vscrollbar-policy">always</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="treeChannels">
|
||||
|
@ -514,6 +515,65 @@
|
|||
<headerbar name="details_header_bar"/>
|
||||
</headerbars>
|
||||
</object>
|
||||
<object class="GtkPopover" id="header_popover">
|
||||
<property name="width-request">300</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="border-width">10</property>
|
||||
<property name="relative-to">header_bar</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">8</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="hbutton1">
|
||||
<property name="label" translatable="yes">Preferences</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="action-name">app.preferences</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="hbutton2">
|
||||
<property name="label" translatable="yes">Download new episodes</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="action-name">win.downloadAllNew</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="hbutton3">
|
||||
<property name="label" translatable="yes">Update channels</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="action-name">win.update</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="menu"/>
|
||||
</style>
|
||||
</object>
|
||||
<object class="GtkWindow" id="progress_window">
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
|
|
|
@ -303,6 +303,16 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
if is_on_mobile_screen(self.main_window):
|
||||
self.episodes_scrolled_window.connect(
|
||||
'edge-overshot', self.on_episodes_scrolled_window_edge_overshot)
|
||||
self.channels_scrolled_window.connect(
|
||||
'edge-overshot', self.on_channels_scrolled_window_edge_overshot)
|
||||
|
||||
# FIXME:
|
||||
def _hmenu_popdown(button):
|
||||
self.header_popover.popdown()
|
||||
|
||||
self.hbutton1.connect('clicked', _hmenu_popdown)
|
||||
self.hbutton2.connect('clicked', _hmenu_popdown)
|
||||
self.hbutton3.connect('clicked', _hmenu_popdown)
|
||||
|
||||
# First-time users should be asked if they want to see the OPML
|
||||
if self.options.subscribe:
|
||||
|
@ -811,6 +821,10 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
ev = Dummy(x=x, y=y, button=3)
|
||||
return self.treeview_channels_show_context_menu(ev)
|
||||
|
||||
def on_channels_scrolled_window_edge_overshot(self, scrolled_window, pos, *args):
|
||||
if pos == Gtk.PositionType.TOP:
|
||||
self.header_popover.popup()
|
||||
|
||||
def on_treeview_episodes_button_released(self, treeview, event):
|
||||
if event.window != treeview.get_bin_window():
|
||||
return False
|
||||
|
|
Loading…
Reference in New Issue