Hi,

this new patch uses key-press-event.

Thanks,

Tomeu

On Thu, May 15, 2008 at 5:08 PM, Eben Eliason <[EMAIL PROTECTED]> wrote:
> On Thu, May 15, 2008 at 7:04 AM, Tomeu Vizoso <[EMAIL PROTECTED]> wrote:
>> On Thu, May 15, 2008 at 12:56 PM, Marco Pesenti Gritti
>>  <[EMAIL PROTECTED]> wrote:
>>  > Any reason to not use key_press events or similar? I don't think we
>>  > should "patch" gtk.ScrolledWindow behavior.
>>
>>  Well, I guess that Eben will want this behavior in all the list views
>>  (mesh, group, activity, more?).
>
> Confirmation on that.  All list views should behave the same.
>
> - Eben
>
From e3ff1c398a20d0000019b6da49fdd61b0d8d1ed1 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <[EMAIL PROTECTED]>
Date: Thu, 15 May 2008 18:55:50 +0200
Subject: [PATCH] Make arrows scroll up and down in scroll views.

---
 src/view/home/activitieslist.py |   22 +++++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/src/view/home/activitieslist.py b/src/view/home/activitieslist.py
index f638738..ebdf1ec 100644
--- a/src/view/home/activitieslist.py
+++ b/src/view/home/activitieslist.py
@@ -15,6 +15,7 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 import gobject
+import gtk
 import hippo
 
 from sugar import profile
@@ -31,7 +32,8 @@ class ActivitiesList(hippo.CanvasScrollbars):
     def __init__(self):
         hippo.CanvasScrollbars.__init__(self)
         self.set_policy(hippo.ORIENTATION_HORIZONTAL, hippo.SCROLLBAR_NEVER)
-        
+        self.props.widget.connect('key-press-event', self.__key_press_event_cb)
+
         self._box = hippo.CanvasBox( \
                 background_color=style.COLOR_WHITE.get_int())
         self.set_root(self._box)
@@ -59,6 +61,24 @@ class ActivitiesList(hippo.CanvasScrollbars):
     def _add_activity(self, activity_info):
         self._box.append(ActivityEntry(activity_info))
 
+    def __key_press_event_cb(self, widget, event):
+        keyname = gtk.gdk.keyval_name(event.keyval)
+
+        vadjustment = self.props.widget.props.vadjustment
+        if keyname == 'Up':
+            if vadjustment.props.value > vadjustment.props.lower:
+                vadjustment.props.value -= vadjustment.props.step_increment
+        elif keyname == 'Down':
+            max_value = vadjustment.props.upper - vadjustment.props.page_size
+            if vadjustment.props.value < max_value:
+                vadjustment.props.value = min(
+                    vadjustment.props.value + vadjustment.props.step_increment,
+                    max_value)
+        else:
+            return False
+
+        return True
+
 class ActivityEntry(hippo.CanvasBox, hippo.CanvasItem):
     __gtype_name__ = 'SugarActivityEntry'
 
-- 
1.5.2.5

_______________________________________________
Sugar mailing list
[email protected]
http://lists.laptop.org/listinfo/sugar

Reply via email to