X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-view.c;h=dc1d190f5749b6ba982fcd7c2ac0a6deea3d337f;hb=0966dd9fbb4a8a60972382910c850a610bc40686;hp=28a21393b7ba3c4738815a8a097aa8bed5453a03;hpb=27933bd8ac338f3735413bd142a6f90d91e03b6d;p=evince.git diff --git a/shell/ev-view.c b/shell/ev-view.c index 28a21393..dc1d190f 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -3132,31 +3132,30 @@ ev_view_button_release_event (GtkWidget *widget, EvView *view = EV_VIEW (widget); EvLink *link = NULL; - view->drag_info.in_drag = FALSE; view->image_dnd_info.in_drag = FALSE; if (view->scroll_info.autoscrolling) { - view->scroll_info.autoscrolling = FALSE; - if (view->scroll_info.timeout_id) { - g_source_remove (view->scroll_info.timeout_id); - view->scroll_info.timeout_id = 0; - } - ev_view_handle_cursor_over_xy (view, event->x, event->y); + ev_view_autoscroll_stop (view); view->pressed_button = -1; return TRUE; } - - view->drag_info.release_timeout_id = g_timeout_add (20, - (GSourceFunc)ev_view_scroll_drag_release, view); - if (view->pressed_button == 2) { - ev_view_handle_cursor_over_xy (view, event->x, event->y); + if (view->drag_info.in_drag) { + view->drag_info.release_timeout_id = + g_timeout_add (20, + (GSourceFunc)ev_view_scroll_drag_release, view); } - if (view->document && view->pressed_button != 3) { + if (view->document && !view->drag_info.in_drag && view->pressed_button != 3) { link = ev_view_get_link_at_location (view, event->x, event->y); } + + view->drag_info.in_drag = FALSE; + + if (view->pressed_button == 2) { + ev_view_handle_cursor_over_xy (view, event->x, event->y); + } view->pressed_button = -1; @@ -4463,10 +4462,42 @@ ev_view_autoscroll_cb (EvView *view) } void -ev_view_autoscroll (EvView *view) +ev_view_autoscroll_start (EvView *view) { + gint x, y; + + g_return_if_fail (EV_IS_VIEW (view)); + + if (view->scroll_info.autoscrolling) + return; + view->scroll_info.autoscrolling = TRUE; - view->scroll_info.timeout_id = g_timeout_add (20, (GSourceFunc)(ev_view_autoscroll_cb), view); + view->scroll_info.timeout_id = + g_timeout_add (20, (GSourceFunc)ev_view_autoscroll_cb, + view); + + gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y); + ev_view_handle_cursor_over_xy (view, x, y); +} + +void +ev_view_autoscroll_stop (EvView *view) +{ + gint x, y; + + g_return_if_fail (EV_IS_VIEW (view)); + + if (!view->scroll_info.autoscrolling) + return; + + view->scroll_info.autoscrolling = FALSE; + if (view->scroll_info.timeout_id) { + g_source_remove (view->scroll_info.timeout_id); + view->scroll_info.timeout_id = 0; + } + + gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y); + ev_view_handle_cursor_over_xy (view, x, y); } void @@ -4728,17 +4759,10 @@ ev_view_presentation_transition_start (EvView *view) duration = ev_document_transition_get_page_duration (EV_DOCUMENT_TRANSITION (view->document), view->current_page); if (duration > 0) { -#if GLIB_CHECK_VERSION (2, 13, 0) view->trans_timeout_id = g_timeout_add_seconds (duration, (GSourceFunc) transition_next_page, view); -#else - view->trans_timeout_id = - g_timeout_add (duration * 1000, - (GSourceFunc) transition_next_page, - view); -#endif } }