[geary/wip/765516-gtk-widget-conversation-viewer: 81/174] Emulate browser-style scroll-on-spacebar.
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/wip/765516-gtk-widget-conversation-viewer: 81/174] Emulate browser-style scroll-on-spacebar.
- Date: Sun, 25 Sep 2016 13:12:51 +0000 (UTC)
commit e63e164c721e88d29462f8db891a0c6a8a4d7227
Author: Michael James Gratton <mike vee net>
Date: Fri Jul 8 18:21:52 2016 +1000
Emulate browser-style scroll-on-spacebar.
.../conversation-viewer/conversation-viewer.vala | 23 ++++++++++++++++++++
ui/conversation-viewer.ui | 2 +
2 files changed, 25 insertions(+), 0 deletions(-)
---
diff --git a/src/client/conversation-viewer/conversation-viewer.vala
b/src/client/conversation-viewer/conversation-viewer.vala
index 8c21b9a..74acfa7 100644
--- a/src/client/conversation-viewer/conversation-viewer.vala
+++ b/src/client/conversation-viewer/conversation-viewer.vala
@@ -705,6 +705,13 @@ public class ConversationViewer : Gtk.Stack {
return true;
});
+ // Capture key events on the email's web views to allow
+ // scrolling on Space, etc.
+ conversation_message.web_view.key_press_event.connect(on_conversation_key_press);
+ foreach (ConversationMessage attached in conversation_email.attached_messages) {
+ attached.web_view.key_press_event.connect(on_conversation_key_press);
+ }
+
Gtk.ListBoxRow row = new Gtk.ListBoxRow();
row.show();
row.add(conversation_email);
@@ -846,6 +853,22 @@ public class ConversationViewer : Gtk.Stack {
return SearchState.SEARCH_FOLDER;
}
+ [GtkCallback]
+ private bool on_conversation_key_press(Gtk.Widget widget, Gdk.EventKey event) {
+ // Override some key bindings to get something that works more
+ // like a browser page.
+ if (event.keyval == Gdk.Key.space) {
+ Gtk.ScrollType dir = Gtk.ScrollType.PAGE_DOWN;
+ if ((event.state & Gdk.ModifierType.SHIFT_MASK) ==
+ Gdk.ModifierType.SHIFT_MASK) {
+ dir = Gtk.ScrollType.PAGE_UP;
+ }
+ conversation_page.scroll_child(dir, false);
+ return true;
+ }
+ return false;
+ }
+
private ConversationEmail? conversation_email_for_id(Geary.EmailIdentifier id) {
return (ConversationEmail) email_to_row.get(id).get_child();
}
diff --git a/ui/conversation-viewer.ui b/ui/conversation-viewer.ui
index 75e3c00..d7e2bce 100644
--- a/ui/conversation-viewer.ui
+++ b/ui/conversation-viewer.ui
@@ -34,8 +34,10 @@
<object class="GtkScrolledWindow" id="conversation_page">
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <property name="events">GDK_KEY_PRESS_MASK | GDK_STRUCTURE_MASK</property>
<property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property>
+ <signal name="key-press-event" handler="on_conversation_key_press" swapped="no"/>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]