From 99126d46e61ce19a72acb3dd8498729b025339ec Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 26 Jun 2009 17:09:11 -0400 Subject: Partial fix for bug #587014. Cursor now moves to the correct row, but row is not selected. --- modules/mail/e-mail-shell-view-private.c | 54 ++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'modules/mail/e-mail-shell-view-private.c') diff --git a/modules/mail/e-mail-shell-view-private.c b/modules/mail/e-mail-shell-view-private.c index f3b3b5a513..d410abb9c2 100644 --- a/modules/mail/e-mail-shell-view-private.c +++ b/modules/mail/e-mail-shell-view-private.c @@ -141,6 +141,54 @@ mail_shell_view_reader_status_message_cb (EMailShellView *mail_shell_view, e_shell_taskbar_set_message (shell_taskbar, status_message); } +static void +mail_shell_view_scroll_cb (EMailShellView *mail_shell_view, + GtkOrientation orientation, + GtkScrollType scroll_type, + gfloat position, + GtkHTML *html) +{ + EShell *shell; + EShellView *shell_view; + EShellWindow *shell_window; + EShellSettings *shell_settings; + EMailReader *reader; + MessageList *message_list; + gboolean magic_spacebar; + + if (html->binding_handled) + return; + + if (orientation != GTK_ORIENTATION_VERTICAL) + return; + + shell_view = E_SHELL_VIEW (mail_shell_view); + shell_window = e_shell_view_get_shell_window (shell_view); + shell = e_shell_window_get_shell (shell_window); + shell_settings = e_shell_get_shell_settings (shell); + + magic_spacebar = e_shell_settings_get_boolean ( + shell_settings, "mail-magic-spacebar"); + + if (!magic_spacebar) + return; + + reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content); + message_list = e_mail_reader_get_message_list (reader); + + if (scroll_type == GTK_SCROLL_PAGE_FORWARD) { + gtk_widget_grab_focus (GTK_WIDGET (message_list)); + message_list_select ( + message_list, MESSAGE_LIST_SELECT_NEXT, + 0, CAMEL_MESSAGE_SEEN); + } else { + gtk_widget_grab_focus (GTK_WIDGET (message_list)); + message_list_select ( + message_list, MESSAGE_LIST_SELECT_PREVIOUS, + 0, CAMEL_MESSAGE_SEEN); + } +} + static void mail_shell_view_load_view_collection (EShellViewClass *shell_view_class) { @@ -317,6 +365,12 @@ e_mail_shell_view_private_constructed (EMailShellView *mail_shell_view) G_CALLBACK (mail_shell_view_key_press_event_cb), mail_shell_view); + g_signal_connect_data ( + html, "scroll", + G_CALLBACK (mail_shell_view_scroll_cb), + mail_shell_view, (GClosureNotify) NULL, + G_CONNECT_AFTER | G_CONNECT_SWAPPED); + g_signal_connect_swapped ( html, "status-message", G_CALLBACK (mail_shell_view_reader_status_message_cb), -- cgit v1.2.3