Navigate back from episodes with 'edge-overshot' signal

But only do so if on mobile. Compensates for lack of swipes in
TreeViews.
This commit is contained in:
Teemu Ikonen 2022-08-15 18:56:22 +03:00
parent b685022a8c
commit df3a093462
2 changed files with 12 additions and 2 deletions

View File

@ -347,10 +347,11 @@
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<object class="GtkScrolledWindow" id="episodes_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="treeAvailable">

View File

@ -52,7 +52,7 @@ from .draw import (cake_size_from_widget, draw_cake_pixbuf,
draw_iconcell_scale, draw_text_box_centered)
from .interface.addpodcast import gPodderAddPodcast
from .interface.common import (BuilderWidget, Dummy, ExtensionMenuHelper,
TreeViewHelper)
TreeViewHelper, is_on_mobile_screen)
from .interface.progress import ProgressIndicator
from .interface.searchtree import SearchTreeBar
from .model import EpisodeListModel, PodcastChannelProxy, PodcastListModel
@ -299,6 +299,11 @@ class gPodder(BuilderWidget, dbus.service.Object):
self.treeChannels.grab_focus()
# Swipe up to go back hack for episodes leaflet page
if is_on_mobile_screen(self.main_window):
self.episodes_scrolled_window.connect(
'edge-overshot', self.on_episodes_scrolled_window_edge_overshot)
# First-time users should be asked if they want to see the OPML
if self.options.subscribe:
util.idle_add(self.subscribe_to_url, self.options.subscribe)
@ -818,6 +823,10 @@ class gPodder(BuilderWidget, dbus.service.Object):
ev = Dummy(x=x, y=y, button=3)
return self.treeview_available_show_context_menu(ev)
def on_episodes_scrolled_window_edge_overshot(self, scrolled_window, pos, *args):
if pos == Gtk.PositionType.TOP:
self.leaflet.navigate(Handy.NavigationDirection.BACK)
def on_treeview_downloads_button_released(self, treeview, event):
if event.window != treeview.get_bin_window():
return False