diff --git a/src/main.py b/src/main.py index 376c286..6c0b780 100644 --- a/src/main.py +++ b/src/main.py @@ -62,6 +62,10 @@ class Application(Gtk.Application): self.add_action(action) self.set_accels_for_action('app.newpost',["n"]) + action = Gio.SimpleAction.new('top', None) + action.connect('activate', self.on_top) + self.add_action(action) + action = Gio.SimpleAction.new('refresh', None) action.connect('activate', self.on_refresh) self.add_action(action) @@ -196,6 +200,10 @@ class Application(Gtk.Application): timeline = self.stack.get_visible_child() timeline.emit('refresh') + def on_top(self, action, param): + timeline = self.stack.get_visible_child() + timeline.emit('top') + def on_preferences(self, action, param): pass diff --git a/src/menu.ui b/src/menu.ui index bd357d5..627463b 100644 --- a/src/menu.ui +++ b/src/menu.ui @@ -2,6 +2,10 @@
+ + app.top + To Top + app.refresh Refresh diff --git a/src/widgets.py b/src/widgets.py index bc7081d..13219de 100644 --- a/src/widgets.py +++ b/src/widgets.py @@ -187,6 +187,7 @@ class Timeline(Gtk.Box): __gsignals__ = { 'refresh': (GObject.SIGNAL_RUN_FIRST, None, ()), + 'top': (GObject.SIGNAL_RUN_FIRST, None, ()), 'reply': (GObject.SIGNAL_RUN_FIRST, None, (int,str,)) } @@ -197,21 +198,21 @@ class Timeline(Gtk.Box): self.max_id = 0 self.min_id = 0 - scroller = Gtk.ScrolledWindow( + self.scroller = Gtk.ScrolledWindow( halign='fill', kinetic_scrolling=True ) self.view = Gtk.ListBox( selection_mode=Gtk.SelectionMode.NONE ) - scroller.add(self.view) - self.pack_start(scroller, True, True, 0) + self.scroller.add(self.view) + self.pack_start(self.scroller, True, True, 0) self.stream = stream self.load_timeline() self.view.connect('button-press-event', self.on_button_pressed) - scroller.connect('edge-reached', self.on_edge_reached) + self.scroller.connect('edge-reached', self.on_edge_reached) action_group = Gio.SimpleActionGroup() @@ -274,12 +275,17 @@ class Timeline(Gtk.Box): self.show_all() def do_refresh(self): + self.do_top() rows = self.view.get_children() for item in rows: self.view.remove(item) self.load_timeline() self.show_all() + def do_top(self): + vadjustment = self.scroller.get_vadjustment() + vadjustment.set_value(0) + def on_edge_reached(self, widget, pos): if pos == Gtk.PositionType.BOTTOM: self.load_timeline(True)