Merge lp:~mmcg069/software-center/bug635994-again into lp:software-center

Proposed by Matthew Paul Thomas
Status: Merged
Merged at revision: 2407
Proposed branch: lp:~mmcg069/software-center/bug635994-again
Merge into: lp:software-center
Diff against target: 264 lines (+93/-52) (has conflicts)
4 files modified
softwarecenter/ui/gtk3/views/appdetailsview_gtk.py (+3/-36)
softwarecenter/ui/gtk3/views/catview_gtk.py (+3/-2)
softwarecenter/ui/gtk3/widgets/description.py (+41/-14)
softwarecenter/ui/gtk3/widgets/viewport.py (+46/-0)
Text conflict in softwarecenter/ui/gtk3/widgets/description.py
To merge this branch: bzr merge lp:~mmcg069/software-center/bug635994-again
Reviewer Review Type Date Requested Status
Michael Vogt Pending
Review via email: mp+76402@code.launchpad.net

Description of the change

Fixes bug 635994.

I have tested this branch on the home screen, search results, subcategorized category screen, unsubcategorized category screen, and software item screen. It seems to work well with all of them.

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
1=== modified file 'softwarecenter/ui/gtk3/views/appdetailsview_gtk.py'
2--- softwarecenter/ui/gtk3/views/appdetailsview_gtk.py 2011-09-19 23:35:54 +0000
3+++ softwarecenter/ui/gtk3/views/appdetailsview_gtk.py 2011-09-21 12:54:02 +0000
4@@ -53,6 +53,7 @@
5 from softwarecenter.ui.gtk3.em import StockEms, em
6 from softwarecenter.ui.gtk3.drawing import color_to_hex
7 from softwarecenter.ui.gtk3.widgets.separators import HBar
8+from softwarecenter.ui.gtk3.widgets.viewport import Viewport
9 from softwarecenter.ui.gtk3.widgets.reviews import UIReviewsList
10 from softwarecenter.ui.gtk3.widgets.containers import SmallBorderRadiusFrame
11 from softwarecenter.ui.gtk3.widgets.stars import Star, StarRatingsWidget
12@@ -638,7 +639,7 @@
13
14
15 _asset_cache = {}
16-class AppDetailsViewGtk(Gtk.Viewport, AppDetailsViewBase):
17+class AppDetailsViewGtk(Viewport, AppDetailsViewBase):
18
19 """ The view that shows the application details """
20
21@@ -669,7 +670,7 @@
22
23 def __init__(self, db, distro, icons, cache, datadir, pane):
24 AppDetailsViewBase.__init__(self, db, distro, icons, cache, datadir)
25- GObject.GObject.__init__(self)
26+ Viewport.__init__(self)
27 self.set_shadow_type(Gtk.ShadowType.NONE)
28
29 self.set_name("view")
30@@ -1063,43 +1064,9 @@
31 self.show_all()
32
33 # signals!
34- #~ vb.connect('draw', self._on_draw, alignment)
35- vb.connect('key-press-event', self._on_key_press)
36 self.connect('size-allocate', lambda w,a: w.queue_draw())
37 return
38
39- def _on_key_press(self, widget, event):
40- kv = event.keyval
41-
42- # key values we want to respond to
43- uppers = (Gdk.KEY_KP_Up, Gdk.KEY_Up)
44- downers = (Gdk.KEY_KP_Down, Gdk.KEY_Down)
45-
46- if kv in uppers or kv in downers:
47- # get the ScrolledWindow adjustments and tweak them appropriately
48- if not self.get_parent(): return False
49-
50- # the ScrolledWindow vertical-adjustment
51- v_adj = self.get_parent().get_vadjustment()
52-
53- # scroll up
54- if kv in uppers:
55- v = max(v_adj.get_value() - v_adj.get_step_increment(),
56- v_adj.get_lower())
57-
58- # scroll down
59- elif kv in downers:
60- v = min(v_adj.get_value() + v_adj.get_step_increment(),
61- v_adj.get_upper() - v_adj.get_page_size())
62-
63- # set our new value
64- v_adj.set_value(v)
65-
66- # do not share the event with other widgets
67- return True
68- # share the event with other widgets
69- return False
70-
71 def _on_review_new(self, button):
72 self._review_write_new()
73
74
75=== modified file 'softwarecenter/ui/gtk3/views/catview_gtk.py'
76--- softwarecenter/ui/gtk3/views/catview_gtk.py 2011-09-20 12:22:29 +0000
77+++ softwarecenter/ui/gtk3/views/catview_gtk.py 2011-09-21 12:54:02 +0000
78@@ -34,6 +34,7 @@
79 TOP_RATED_CAROUSEL_LIMIT)
80 from softwarecenter.utils import wait_for_apt_cache_ready
81 from softwarecenter.ui.gtk3.models.appstore2 import AppPropertiesHelper
82+from softwarecenter.ui.gtk3.widgets.viewport import Viewport
83 from softwarecenter.ui.gtk3.widgets.containers import (
84 FramedHeaderBox, FramedBox, FlowableGrid)
85 from softwarecenter.ui.gtk3.widgets.exhibits import (
86@@ -56,7 +57,7 @@
87
88
89 _asset_cache = {}
90-class CategoriesViewGtk(Gtk.Viewport, CategoriesParser):
91+class CategoriesViewGtk(Viewport, CategoriesParser):
92
93 __gsignals__ = {
94 "category-selected" : (GObject.SignalFlags.RUN_LAST,
95@@ -109,7 +110,7 @@
96 self.icons = icons
97 self.section = None
98
99- Gtk.Viewport.__init__(self)
100+ Viewport.__init__(self)
101 CategoriesParser.__init__(self, db)
102
103 self.set_name("category-view")
104
105=== modified file 'softwarecenter/ui/gtk3/widgets/description.py'
106--- softwarecenter/ui/gtk3/widgets/description.py 2011-09-20 21:30:20 +0000
107+++ softwarecenter/ui/gtk3/widgets/description.py 2011-09-21 12:54:02 +0000
108@@ -387,7 +387,7 @@
109 self.set_size_request(200, -1)
110 #~ self.set_redraw_on_allocate(False)
111
112- self.set_can_focus(True)
113+ #~ self.set_can_focus(True)
114 self.set_events(Gdk.EventMask.KEY_PRESS_MASK|
115 Gdk.EventMask.ENTER_NOTIFY_MASK|
116 Gdk.EventMask.LEAVE_NOTIFY_MASK|
117@@ -395,25 +395,18 @@
118 Gdk.EventMask.POINTER_MOTION_MASK)
119
120 self._is_new = False
121- self._bullet = self._new_layout()
122- self._bullet.set_markup(self.BULLET_POINT)
123- font_desc = Pango.FontDescription()
124-
125- font_desc.set_weight(Pango.Weight.BOLD)
126- self._bullet.set_font_description(font_desc)
127-
128- event_helper = EventHelper()
129-
130- e = self._bullet.get_pixel_extents()
131- self.indent, self.line_height = e.width, e.height
132
133 self.order = []
134 self.cursor = cur = PrimaryCursor(self)
135 self.selection = sel = SelectionCursor(self.cursor)
136 self.clipboard = None
137
138+ #~ event_helper = EventHelper()
139+ self._update_cached_layouts()
140 self._test_layout = self.create_pango_layout('')
141+
142 #self._xterm = Gdk.Cursor.new(Gdk.XTERM)
143+<<<<<<< TREE
144
145 # popup menu and menuitem's
146 self.copy_menuitem = Gtk.ImageMenuItem.new_from_stock(
147@@ -434,6 +427,15 @@
148
149 self.connect('key-press-event', self._on_key_press, cur, sel)
150 self.connect('key-release-event', self._on_key_release, cur, sel)
151+=======
152+#~
153+ #~ self.connect('button-press-event', self._on_press, event_helper, cur, sel)
154+ #~ self.connect('button-release-event', self._on_release, event_helper, cur, sel)
155+ #~ self.connect('motion-notify-event', self._on_motion, event_helper, cur, sel)
156+
157+ #~ self.connect('key-press-event', self._on_key_press, cur, sel)
158+ #~ self.connect('key-release-event', self._on_key_release, cur, sel)
159+>>>>>>> MERGE-SOURCE
160
161 #~ Gtk.drag_source_set(self, Gdk.ModifierType.BUTTON1_MASK,
162 #~ None, Gdk.DragAction.COPY)
163@@ -441,8 +443,8 @@
164 #~ self.connect('drag-begin', self._on_drag_begin)
165 #~ self.connect('drag-data-get', self._on_drag_data_get, sel)
166
167- self.connect('focus-in-event', self._on_focus_in)
168- self.connect('focus-out-event', self._on_focus_out)
169+ #~ self.connect('focus-in-event', self._on_focus_in)
170+ #~ self.connect('focus-out-event', self._on_focus_out)
171
172 self.connect("size-allocate", self.on_size_allocate)
173 self.connect('style-updated', self._on_style_updated)
174@@ -503,7 +505,20 @@
175 return
176
177 def _on_style_updated(self, widget):
178+<<<<<<< TREE
179 self._config_colors()
180+=======
181+ print 'description style-updated'
182+ #style = self.get_style()
183+ #~ if self.has_focus():
184+ #~ self._bg = self._color_parse('red')
185+ #~ self._fg = self._color_parse('#000')
186+ #~ else:
187+ #~ _, self._bg = Gdk.color_parse('#E5E3E1')
188+ #~ self._bg = self._color_parse('red')
189+ #~ self._fg = self._color_parse('#000')
190+ self._update_cached_layouts()
191+>>>>>>> MERGE-SOURCE
192 return
193
194 # def _on_drag_begin(self, widgets, context, event_helper):
195@@ -995,6 +1010,18 @@
196 layout.set_wrap(Pango.WrapMode.WORD_CHAR)
197 return layout
198
199+ def _update_cached_layouts(self):
200+ self._bullet = self._new_layout()
201+ self._bullet.set_markup(self.BULLET_POINT)
202+ font_desc = Pango.FontDescription()
203+
204+ font_desc.set_weight(Pango.Weight.BOLD)
205+ self._bullet.set_font_description(font_desc)
206+
207+ e = self._bullet.get_pixel_extents()
208+ self.indent, self.line_height = e.width, e.height
209+ return
210+
211 def _selection_highlight(self, layout, sel, bg, fg):
212 i = layout.index
213 start, end = sel.get_range()
214
215=== added file 'softwarecenter/ui/gtk3/widgets/viewport.py'
216--- softwarecenter/ui/gtk3/widgets/viewport.py 1970-01-01 00:00:00 +0000
217+++ softwarecenter/ui/gtk3/widgets/viewport.py 2011-09-21 12:54:02 +0000
218@@ -0,0 +1,46 @@
219+from gi.repository import Gtk, Gdk
220+
221+# key values we want to respond to
222+_uppers = (Gdk.KEY_KP_Up, Gdk.KEY_Up)
223+_downers = (Gdk.KEY_KP_Down, Gdk.KEY_Down)
224+
225+
226+
227+class Viewport(Gtk.Viewport):
228+
229+ def __init__(self):
230+ Gtk.Viewport.__init__(self)
231+ self.connect("key-press-event", self.on_key_press_event)
232+ return
233+
234+ def on_key_press_event(self, widget, event):
235+ global _uppers, _downers
236+ kv = event.keyval
237+
238+ if kv in _uppers or kv in _downers:
239+ # get the ScrolledWindow adjustments and tweak them appropriately
240+ if not self.get_parent(): return False
241+
242+ # the ScrolledWindow vertical-adjustment
243+ scroll = self.get_ancestor('GtkScrolledWindow')
244+ if not scroll: return False
245+
246+ v_adj = scroll.get_vadjustment()
247+
248+ # scroll up
249+ if kv in _uppers:
250+ v = max(v_adj.get_value() - v_adj.get_step_increment(),
251+ v_adj.get_lower())
252+
253+ # scroll down
254+ elif kv in _downers:
255+ v = min(v_adj.get_value() + v_adj.get_step_increment(),
256+ v_adj.get_upper() - v_adj.get_page_size())
257+
258+ # set our new value
259+ v_adj.set_value(v)
260+
261+ # do not share the event with other widgets
262+ return True
263+ # share the event with other widgets
264+ return False