]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-view.c
Fix memory leak.
[evince.git] / shell / ev-view.c
index a7641f84e18b5fea5eed6634ff5f7468234d9f77..513ba871bae2407f4dcdd3b23a61e6dc41764e8e 100644 (file)
@@ -1517,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 ***/
@@ -2857,7 +2856,7 @@ draw_loading_text (EvView       *view,
                ev_document_fc_mutex_unlock ();
        }
 
-       width = cairo_image_surface_get_width (view->loading_text) / 2;
+       width = (page_area->width - cairo_image_surface_get_width (view->loading_text)) / 2;
        height = (page_area->height - cairo_image_surface_get_height (view->loading_text)) / 2;
        
        cr = gdk_cairo_create (GTK_WIDGET (view)->window);
@@ -3406,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));
@@ -3421,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;
@@ -3443,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);
 }
@@ -3471,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