Merge lp:~kiwinote/software-center/remember-scroll-position into lp:software-center

Proposed by Kiwinote
Status: Merged
Merged at revision: 2771
Proposed branch: lp:~kiwinote/software-center/remember-scroll-position
Merge into: lp:software-center
Diff against target: 159 lines (+36/-5)
6 files modified
debian/changelog (+10/-2)
softwarecenter/ui/gtk3/app.py (+4/-2)
softwarecenter/ui/gtk3/panes/availablepane.py (+5/-0)
softwarecenter/ui/gtk3/panes/softwarepane.py (+5/-1)
softwarecenter/ui/gtk3/session/viewmanager.py (+7/-0)
softwarecenter/ui/gtk3/views/appview.py (+5/-0)
To merge this branch: bzr merge lp:~kiwinote/software-center/remember-scroll-position
Reviewer Review Type Date Requested Status
software-store-developers Pending
Review via email: mp+93412@code.launchpad.net

Description of the change

first change in this branch is to make the backspace key no longer trigger a navigation back as it has started to cause many many odd side effects, the possible workarounds to keep this behaviour all seem a bit messy but perhaps i can come up with something at a later stage

the main change is to remember the list position when eg going from a list to details back to the list again. after much experimentation the code in this branch seems to work fairly reasonably, but there are a few oddities, ie the restored scroll position isn't pixel perfect, but can vary by up to roughly one item height - despite reading the value and restoring that pixel perfect value.. also for some odd reason we need to restore the vadjustment value to both set_value and set_lower, otherwise it doesn't work..
the scroll position is only remembered in the available pane

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/changelog'
--- debian/changelog 2012-02-16 13:40:21 +0000
+++ debian/changelog 2012-02-16 14:35:00 +0000
@@ -1,12 +1,20 @@
1software-center (5.1.10) UNRELEASED; urgency=low1software-center (5.1.10) precise; urgency=low
22
3 [ Michael Vogt ]
3 * revert again:4 * revert again:
4 lp:~gary-lasker/software-center/temp-disable-lobby-recommendations-view5 lp:~gary-lasker/software-center/temp-disable-lobby-recommendations-view
5 * softwarecenter/region.py:6 * softwarecenter/region.py:
6 - trivial change to make region tag prefix "iso3166::" to align7 - trivial change to make region tag prefix "iso3166::" to align
7 with the latest debtags upstream plans8 with the latest debtags upstream plans
89
9 -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 16 Feb 2012 12:30:20 +010010 [ Kiwinote ]
11 * softwarecenter/ui/gtk3/app.py:
12 - disable navigating back by pressing the backspace key because it has
13 started showing dodgy side effects - use ctrl+[ or alt+LEFT instead
14 * remember the scroll position when navigating back to a list view,
15 this only works in the available pane (LP: #852763)
16
17 -- Kiwinote <kiwinote@gmail.com> Thu, 16 Feb 2012 14:08:17 +0000
1018
11software-center (5.1.9) precise; urgency=low19software-center (5.1.9) precise; urgency=low
1220
1321
=== modified file 'softwarecenter/ui/gtk3/app.py'
--- softwarecenter/ui/gtk3/app.py 2012-02-16 11:30:57 +0000
+++ softwarecenter/ui/gtk3/app.py 2012-02-16 14:35:00 +0000
@@ -559,8 +559,10 @@
559 event.state == Gdk.ModifierType.CONTROL_MASK) or559 event.state == Gdk.ModifierType.CONTROL_MASK) or
560 ((event.keyval == Gdk.keyval_from_name("Left") or560 ((event.keyval == Gdk.keyval_from_name("Left") or
561 event.keyval == Gdk.keyval_from_name("KP_Left")) and561 event.keyval == Gdk.keyval_from_name("KP_Left")) and
562 event.state == Gdk.ModifierType.MOD1_MASK) or562 event.state == Gdk.ModifierType.MOD1_MASK)):
563 event.keyval == Gdk.keyval_from_name("BackSpace")):563 # using the backspace key to navigate back has been disabled as it
564 # has started to show dodgy side effects which I can't figure how
565 # to deal with
564 self.menuitem_view.activate()566 self.menuitem_view.activate()
565 if self.menuitem_go_back.get_sensitive():567 if self.menuitem_go_back.get_sensitive():
566 self.menuitem_go_back.activate()568 self.menuitem_go_back.activate()
567569
=== modified file 'softwarecenter/ui/gtk3/panes/availablepane.py'
--- softwarecenter/ui/gtk3/panes/availablepane.py 2012-01-19 16:39:15 +0000
+++ softwarecenter/ui/gtk3/panes/availablepane.py 2012-02-16 14:35:00 +0000
@@ -500,6 +500,7 @@
500 self.nonapps_visible = NonAppVisibility.ALWAYS_VISIBLE500 self.nonapps_visible = NonAppVisibility.ALWAYS_VISIBLE
501501
502 vm = get_viewmanager()502 vm = get_viewmanager()
503 self.app_view.tree_view_scroll.get_vadjustment().set_value(0.0)
503504
504 # yeah for special cases - as discussed on irc, mpt505 # yeah for special cases - as discussed on irc, mpt
505 # wants this to return to the category screen *if*506 # wants this to return to the category screen *if*
@@ -572,6 +573,8 @@
572 header_strings = self._get_header_for_view_state(view_state)573 header_strings = self._get_header_for_view_state(view_state)
573 self.app_view.set_header_labels(*header_strings)574 self.app_view.set_header_labels(*header_strings)
574575
576 self.app_view.vadj = view_state.vadjustment
577
575 self.refresh_apps()578 self.refresh_apps()
576 self.cat_view.stop_carousels()579 self.cat_view.stop_carousels()
577 return True580 return True
@@ -605,6 +608,8 @@
605 if view_state.search_term:608 if view_state.search_term:
606 self._clear_search()609 self._clear_search()
607610
611 self.app_view.vadj = view_state.vadjustment
612
608 self.refresh_apps()613 self.refresh_apps()
609 self.cat_view.stop_carousels()614 self.cat_view.stop_carousels()
610 return True615 return True
611616
=== modified file 'softwarecenter/ui/gtk3/panes/softwarepane.py'
--- softwarecenter/ui/gtk3/panes/softwarepane.py 2012-02-15 15:40:41 +0000
+++ softwarecenter/ui/gtk3/panes/softwarepane.py 2012-02-16 14:35:00 +0000
@@ -64,7 +64,8 @@
64 'application': (type(None), Application),64 'application': (type(None), Application),
65 'limit': (int,),65 'limit': (int,),
66 'filter': (type(None), AppFilter),66 'filter': (type(None), AppFilter),
67 'previous_purchases_query': (type(None), xapian.Query)67 'previous_purchases_query': (type(None), xapian.Query),
68 'vadjustment': (float, ),
68 }69 }
6970
70 def __init__(self):71 def __init__(self):
@@ -76,6 +77,7 @@
76 self.limit = 077 self.limit = 0
77 self.filter = None78 self.filter = None
78 self.previous_purchases_query = None79 self.previous_purchases_query = None
80 self.vadjustment = 0.0
79 return81 return
8082
81 def __setattr__(self, name, val):83 def __setattr__(self, name, val):
@@ -110,6 +112,7 @@
110 state.filter = self.filter.copy()112 state.filter = self.filter.copy()
111 else:113 else:
112 state.filter = None114 state.filter = None
115 state.vadjustment = self.vadjustment
113 return state116 return state
114117
115 def reset(self):118 def reset(self):
@@ -120,6 +123,7 @@
120 self.application = None123 self.application = None
121 self.limit = 0124 self.limit = 0
122 #~ self.filter = None125 #~ self.filter = None
126 self.vadjustment = 0.0
123 return127 return
124128
125class SoftwarePane(Gtk.VBox, BasePane):129class SoftwarePane(Gtk.VBox, BasePane):
126130
=== modified file 'softwarecenter/ui/gtk3/session/viewmanager.py'
--- softwarecenter/ui/gtk3/session/viewmanager.py 2012-01-12 19:16:29 +0000
+++ softwarecenter/ui/gtk3/session/viewmanager.py 2012-02-16 14:35:00 +0000
@@ -165,6 +165,13 @@
165 return self.navhistory.stack[-1]165 return self.navhistory.stack[-1]
166166
167 def display_page(self, pane, page, view_state, callback=None):167 def display_page(self, pane, page, view_state, callback=None):
168 # if previous page is a list view, then store the scroll positions
169 if self.navhistory.stack:
170 ni = self.navhistory.stack[self.navhistory.stack.cursor]
171 if ni.pane.is_applist_view_showing():
172 v = ni.pane.app_view.tree_view_scroll.get_vadjustment()
173 ni.view_state.vadjustment = v.get_value()
174
168 if callback is None:175 if callback is None:
169 callback = pane.get_callback_for_page(page, view_state)176 callback = pane.get_callback_for_page(page, view_state)
170177
171178
=== modified file 'softwarecenter/ui/gtk3/views/appview.py'
--- softwarecenter/ui/gtk3/views/appview.py 2011-10-26 12:19:26 +0000
+++ softwarecenter/ui/gtk3/views/appview.py 2012-02-16 14:35:00 +0000
@@ -92,6 +92,7 @@
92 self.tree_view_scroll.add(self.tree_view)92 self.tree_view_scroll.add(self.tree_view)
9393
94 self.appcount = None94 self.appcount = None
95 self.vadj = 0.0
9596
96 self.user_defined_sort_method = False97 self.user_defined_sort_method = False
97 self._handler = self.sort_methods_combobox.connect(98 self._handler = self.sort_methods_combobox.connect(
@@ -131,6 +132,7 @@
131132
132 def on_sort_method_changed(self, *args):133 def on_sort_method_changed(self, *args):
133 self.user_defined_sort_method = True134 self.user_defined_sort_method = True
135 self.vadj = 0.0
134 self.emit("sort-method-changed", self.sort_methods_combobox)136 self.emit("sort-method-changed", self.sort_methods_combobox)
135 return137 return
136138
@@ -206,6 +208,9 @@
206 if model:208 if model:
207 model.set_from_matches(matches)209 model.set_from_matches(matches)
208 self.user_defined_sort_method = False210 self.user_defined_sort_method = False
211
212 self.tree_view_scroll.get_vadjustment().set_lower(self.vadj)
213 self.tree_view_scroll.get_vadjustment().set_value(self.vadj)
209 return214 return
210215
211 def clear_model(self):216 def clear_model(self):

Subscribers

People subscribed via source and target branches