X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-view.c;h=b615b6c4b0bc92ea6f4a4cbc9d5acbcf8956266b;hb=0a98d7368e225a9867acd04ea0c64094c22ba621;hp=636e0f566b4dfe04b163fc666d6efccfa35a7176;hpb=fafa1cef81fe708fa734a004bfa1ed0e5dfecd56;p=evince.git diff --git a/shell/ev-view.c b/shell/ev-view.c index 636e0f56..b615b6c4 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -620,6 +620,10 @@ ev_view_copy (EvView *ev_view) GtkClipboard *clipboard; char *text; + if (!ev_document_can_get_text (ev_view->document)) { + return; + } + g_mutex_lock (EV_DOC_MUTEX); text = ev_document_get_text (ev_view->document, ev_view->current_page, @@ -641,6 +645,10 @@ ev_view_primary_get_cb (GtkClipboard *clipboard, EvView *ev_view = EV_VIEW (data); char *text; + if (!ev_document_can_get_text (ev_view->document)) { + return; + } + g_mutex_lock (EV_DOC_MUTEX); text = ev_document_get_text (ev_view->document, ev_view->current_page, @@ -969,10 +977,10 @@ ev_view_set_scroll_adjustments (EvView *view, } static void -add_scroll_binding (GtkBindingSet *binding_set, - guint keyval, - GtkScrollType scroll, - gboolean horizontal) +add_scroll_binding_keypad (GtkBindingSet *binding_set, + guint keyval, + GtkScrollType scroll, + gboolean horizontal) { guint keypad_keyval = keyval - GDK_Left + GDK_KP_Left; @@ -986,6 +994,23 @@ add_scroll_binding (GtkBindingSet *binding_set, G_TYPE_BOOLEAN, horizontal); } +static void +add_scroll_binding_shifted (GtkBindingSet *binding_set, + guint keyval, + GtkScrollType scroll_normal, + GtkScrollType scroll_shifted, + gboolean horizontal) +{ + gtk_binding_entry_add_signal (binding_set, keyval, 0, + "scroll_view", 2, + GTK_TYPE_SCROLL_TYPE, scroll_normal, + G_TYPE_BOOLEAN, horizontal); + gtk_binding_entry_add_signal (binding_set, keyval, GDK_SHIFT_MASK, + "scroll_view", 2, + GTK_TYPE_SCROLL_TYPE, scroll_shifted, + G_TYPE_BOOLEAN, horizontal); +} + static void ev_view_jump (EvView *view, GtkScrollType scroll) @@ -1178,16 +1203,16 @@ ev_view_class_init (EvViewClass *class) binding_set = gtk_binding_set_by_class (class); - add_scroll_binding (binding_set, GDK_Left, GTK_SCROLL_STEP_BACKWARD, TRUE); - add_scroll_binding (binding_set, GDK_Right, GTK_SCROLL_STEP_FORWARD, TRUE); - add_scroll_binding (binding_set, GDK_Up, GTK_SCROLL_STEP_BACKWARD, FALSE); - add_scroll_binding (binding_set, GDK_Down, GTK_SCROLL_STEP_FORWARD, FALSE); + add_scroll_binding_keypad (binding_set, GDK_Left, GTK_SCROLL_STEP_BACKWARD, TRUE); + add_scroll_binding_keypad (binding_set, GDK_Right, GTK_SCROLL_STEP_FORWARD, TRUE); + add_scroll_binding_keypad (binding_set, GDK_Up, GTK_SCROLL_STEP_BACKWARD, FALSE); + add_scroll_binding_keypad (binding_set, GDK_Down, GTK_SCROLL_STEP_FORWARD, FALSE); - add_scroll_binding (binding_set, GDK_Page_Up, GTK_SCROLL_PAGE_BACKWARD, FALSE); - add_scroll_binding (binding_set, GDK_Page_Down, GTK_SCROLL_PAGE_FORWARD, FALSE); + add_scroll_binding_keypad (binding_set, GDK_Page_Up, GTK_SCROLL_PAGE_BACKWARD, FALSE); + add_scroll_binding_keypad (binding_set, GDK_Page_Down, GTK_SCROLL_PAGE_FORWARD, FALSE); - add_scroll_binding (binding_set, GDK_space, EV_SCROLL_PAGE_FORWARD, FALSE); - add_scroll_binding (binding_set, GDK_BackSpace, EV_SCROLL_PAGE_BACKWARD, FALSE); + add_scroll_binding_shifted (binding_set, GDK_space, EV_SCROLL_PAGE_FORWARD, EV_SCROLL_PAGE_BACKWARD, FALSE); + add_scroll_binding_shifted (binding_set, GDK_BackSpace, EV_SCROLL_PAGE_BACKWARD, EV_SCROLL_PAGE_FORWARD, FALSE); } static void