Improve textview keypress handling for scrolling. (PgUp/Down, Space, Backspace)
authorAndrej Kacian <ticho@claws-mail.org>
Sun, 15 Jul 2018 18:49:15 +0000 (20:49 +0200)
committerAndrej Kacian <ticho@claws-mail.org>
Fri, 27 Jul 2018 08:26:48 +0000 (10:26 +0200)
src/textview.c

index 6d0e8524dbbee3ef141f494448353d0847c312c7..fb72094e8c1a8df68be6ee818fcfabadb0a1aad2 100644 (file)
@@ -2402,6 +2402,7 @@ static gint textview_key_pressed(GtkWidget *widget, GdkEventKey *event,
        GdkWindow *window = NULL;
        SummaryView *summaryview = NULL;
        MessageView *messageview = textview->messageview;
+       gboolean mod_pressed;
 
        if (!event) return FALSE;
        if (messageview->mainwin)
@@ -2413,8 +2414,6 @@ static gint textview_key_pressed(GtkWidget *widget, GdkEventKey *event,
        case GDK_KEY_Up:
        case GDK_KEY_Right:
        case GDK_KEY_Down:
-       case GDK_KEY_Page_Up:
-       case GDK_KEY_Page_Down:
        case GDK_KEY_Control_L:
        case GDK_KEY_Control_R:
                return FALSE;
@@ -2423,14 +2422,19 @@ static gint textview_key_pressed(GtkWidget *widget, GdkEventKey *event,
                textview_scroll_max(textview,(event->keyval == GDK_KEY_Home));
                return TRUE;
        case GDK_KEY_space:
-               if (summaryview)
-                       summary_pass_key_press_event(summaryview, event);
-               else
-                       mimeview_scroll_page
-                               (messageview->mimeview,
-                                (event->state &
-                                 (GDK_SHIFT_MASK|GDK_MOD1_MASK)) != 0);
+               mod_pressed = ((event->state & (GDK_SHIFT_MASK|GDK_MOD1_MASK)) != 0);
+               if (!mimeview_scroll_page(messageview->mimeview, mod_pressed) &&
+                               summaryview != NULL) {
+                       if (mod_pressed)
+                               summary_select_prev_unread(summaryview);
+                       else
+                               summary_select_next_unread(summaryview);
+               }
                break;
+       case GDK_KEY_Page_Down:
+               mimeview_scroll_page(messageview->mimeview, FALSE);
+               break;
+       case GDK_KEY_Page_Up:
        case GDK_KEY_BackSpace:
                mimeview_scroll_page(messageview->mimeview, TRUE);
                break;