diff options
author | Manuel Kaufmann <humitos@gmail.com> | 2012-04-11 17:08:19 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2012-04-12 05:15:11 (GMT) |
commit | 1d91e6b46bbf0002cb055f409b6347303e726b4d (patch) | |
tree | c80e24b9f67bfc47424b334d30bf46ac5b34b63a | |
parent | ba9522de428301ba82bc96c6bd3055da89fc375c (diff) |
Scroll the chat log #2782
Check if the user pressed (Control +) Page Up, (Control +) Page Down,
Control + Home or Control + End and scroll the window according the
pressed key.
Auto scroll again if the user entry a new message in the ChatBox.
This commit solves http://bugs.sugarlabs.org/ticket/2782
Signed-off-by: Manuel Kaufmann <humitos@gmail.com>
-rw-r--r-- | activity.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/activity.py b/activity.py index 297d57b..a673912 100644 --- a/activity.py +++ b/activity.py @@ -264,6 +264,7 @@ class Chat(activity.Activity): style.COLOR_WHITE.get_gdk_color()) entry.set_sensitive(False) entry.connect('activate', self.entry_activate_cb) + entry.connect('key-press-event', self.entry_key_press_cb) self.entry = entry self.chatbox = ChatBox() @@ -277,7 +278,30 @@ class Chat(activity.Activity): return box + def entry_key_press_cb(self, widget, event): + """Check for scrolling keys. + + Check if the user pressed Page Up, Page Down, Home or End and + scroll the window according the pressed key. + """ + vadj = self.chatbox.get_vadjustment() + if event.keyval == gtk.keysyms.Page_Down: + value = vadj.get_value() + vadj.page_size + if value > vadj.upper - vadj.page_size: + value = vadj.upper - vadj.page_size + vadj.set_value(value) + elif event.keyval == gtk.keysyms.Page_Up: + vadj.set_value(vadj.get_value() - vadj.page_size) + elif event.keyval == gtk.keysyms.Home and \ + event.state == gtk.gdk.CONTROL_MASK: + vadj.set_value(vadj.lower) + elif event.keyval == gtk.keysyms.End and \ + event.state == gtk.gdk.CONTROL_MASK: + vadj.set_value(vadj.upper - vadj.page_size) + def entry_activate_cb(self, entry): + self.chatbox._scroll_auto = True + text = entry.props.text logger.debug('Entry: %s' % text) if text: |