X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=shell%2Fev-view.c;h=40223a4dc2cf1cd04836385504d572314917b94c;hb=57df208de1acaf93c60bd8401ec72a7d39f6ad9a;hp=072ca0822336eb1439dbd257f5ea4c674bb6a244;hpb=b8f97c954e2e3c9b40f46dc55f3727cb7b35137c;p=evince.git diff --git a/shell/ev-view.c b/shell/ev-view.c index 072ca082..40223a4d 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -1348,7 +1348,6 @@ ev_view_handle_link (EvView *view, EvLink *link) if (!action) return; - type = ev_link_action_get_action_type (action); switch (type) { @@ -1518,7 +1517,6 @@ handle_link_over_xy (EvView *view, gint x, gint y) view->cursor == EV_VIEW_CURSOR_IBEAM) ev_view_set_cursor (view, EV_VIEW_CURSOR_NORMAL); } - return; } /*** Images ***/ @@ -1983,6 +1981,9 @@ ev_view_button_press_event (GtkWidget *widget, GdkEventButton *event) { EvView *view = EV_VIEW (widget); + + if (!view->document) + return FALSE; if (!GTK_WIDGET_HAS_FOCUS (widget)) { gtk_widget_grab_focus (widget); @@ -2005,7 +2006,8 @@ ev_view_button_press_event (GtkWidget *widget, } gtk_widget_queue_draw (widget); - } else if ((image = ev_view_get_image_at_location (view, event->x, event->y))) { + } else if (!location_in_text (view, event->x + view->scroll_x, event->y + view->scroll_y) && + (image = ev_view_get_image_at_location (view, event->x, event->y))) { if (view->image_dnd_info.image) g_object_unref (view->image_dnd_info.image); view->image_dnd_info.image = g_object_ref (image); @@ -2447,6 +2449,8 @@ ev_view_goto_window_key_press_event (GtkWidget *widget, case GDK_Return: case GDK_KP_Enter: case GDK_ISO_Enter: + case GDK_BackSpace: + case GDK_Delete: return FALSE; default: if (!key_is_numeric (event->keyval)) @@ -2584,6 +2588,9 @@ ev_view_key_press_event (GtkWidget *widget, EvView *view = EV_VIEW (widget); EvPresentationState current; + if (!view->document) + return FALSE; + if (!view->presentation || view->presentation_state == EV_PRESENTATION_END) return gtk_bindings_activate_event (GTK_OBJECT (widget), event); @@ -3398,10 +3405,17 @@ page_changed_cb (EvPageCache *page_cache, EvView *view) { if (view->current_page != new_page) { + gint x, y; + view->current_page = new_page; view->pending_scroll = SCROLL_TO_PAGE_POSITION; + if (view->presentation) ev_view_presentation_transition_start (view); + + gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y); + handle_link_over_xy (view, x, y); + gtk_widget_queue_resize (GTK_WIDGET (view)); } else { gtk_widget_queue_draw (GTK_WIDGET (view)); @@ -3413,10 +3427,12 @@ page_changed_cb (EvPageCache *page_cache, } } -static void on_adjustment_value_changed (GtkAdjustment *adjustment, - EvView *view) +static void +on_adjustment_value_changed (GtkAdjustment *adjustment, + EvView *view) { int dx = 0, dy = 0; + gint x, y; if (! GTK_WIDGET_REALIZED (view)) return; @@ -3435,13 +3451,14 @@ static void on_adjustment_value_changed (GtkAdjustment *adjustment, view->scroll_y = 0; } - if (view->pending_resize) gtk_widget_queue_draw (GTK_WIDGET (view)); else gdk_window_scroll (GTK_WIDGET (view)->window, dx, dy); - + gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y); + handle_link_over_xy (view, x, y); + if (view->document) view_update_range_and_current_page (view); } @@ -3463,6 +3480,9 @@ setup_caches (EvView *view) g_signal_connect (view->page_cache, "page-changed", G_CALLBACK (page_changed_cb), view); view->pixbuf_cache = ev_pixbuf_cache_new (GTK_WIDGET (view), view->document); g_signal_connect (view->pixbuf_cache, "job-finished", G_CALLBACK (job_finished_cb), view); + page_changed_cb (view->page_cache, + ev_page_cache_get_current_page (view->page_cache), + view); } static void @@ -3782,6 +3802,9 @@ ev_view_zoom_in (EvView *view) { g_return_if_fail (view->sizing_mode == EV_SIZING_FREE); + if (view->presentation) + return; + view->pending_scroll = SCROLL_TO_CENTER; ev_view_set_zoom (view, ZOOM_IN_FACTOR, TRUE); } @@ -3791,6 +3814,9 @@ ev_view_zoom_out (EvView *view) { g_return_if_fail (view->sizing_mode == EV_SIZING_FREE); + if (view->presentation) + return; + view->pending_scroll = SCROLL_TO_CENTER; ev_view_set_zoom (view, ZOOM_OUT_FACTOR, TRUE); } @@ -4729,8 +4755,10 @@ ev_view_primary_get_cb (GtkClipboard *clipboard, } text = get_selected_text (ev_view); - gtk_selection_data_set_text (selection_data, text, -1); - g_free (text); + if (text) { + gtk_selection_data_set_text (selection_data, text, -1); + g_free (text); + } } static void