]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-pixbuf-cache.c
Disconnect also page-ready signal when removing a job because the page
[evince.git] / shell / ev-pixbuf-cache.c
index 951decb26ceacb005cbe7294f073bb2f7d405462..01eda4a10715d79584c61e013362a262b36423f9 100644 (file)
@@ -1,7 +1,6 @@
 #include "ev-pixbuf-cache.h"
 #include "ev-job-queue.h"
 #include "ev-page-cache.h"
-#include "ev-selection.h"
 #include "ev-document-images.h"
 #include "ev-document-forms.h"
 #include "ev-image.h"
@@ -26,9 +25,10 @@ typedef struct _CacheJobInfo
        /* Selection data. 
         * Selection_points are the coordinates encapsulated in selection.
         * target_points is the target selection size. */
-       EvRectangle selection_points;
-       EvRectangle target_points;
-       gboolean    points_set;
+       EvRectangle      selection_points;
+       EvRectangle      target_points;
+       EvSelectionStyle selection_style;
+       gboolean         points_set;
        
        cairo_surface_t *selection;
        GdkRegion *selection_region;
@@ -306,6 +306,9 @@ check_job_size_and_unref (EvPixbufCache *pixbuf_cache,
            height == EV_JOB_RENDER (job_info->job)->target_height)
                return;
 
+       g_signal_handlers_disconnect_by_func (job_info->job,
+                                             G_CALLBACK (job_page_ready_cb),
+                                             pixbuf_cache);
        g_signal_handlers_disconnect_by_func (job_info->job,
                                              G_CALLBACK (job_finished_cb),
                                              pixbuf_cache);
@@ -646,6 +649,7 @@ add_job (EvPixbufCache *pixbuf_cache,
                                           job_info->rc,
                                           width, height,
                                           &(job_info->target_points),
+                                          job_info->selection_style,
                                           text, base,
                                           include_forms,
                                           include_links,
@@ -1021,6 +1025,7 @@ ev_pixbuf_cache_get_selection_surface (EvPixbufCache  *pixbuf_cache,
                job_info->selection_region =
                        ev_selection_get_selection_region (EV_SELECTION (pixbuf_cache->document),
                                                           job_info->rc,
+                                                          job_info->selection_style,
                                                           &(job_info->target_points));
 
                gtk_widget_ensure_style (pixbuf_cache->view);
@@ -1031,6 +1036,7 @@ ev_pixbuf_cache_get_selection_surface (EvPixbufCache  *pixbuf_cache,
                                               job_info->rc, &(job_info->selection),
                                               &(job_info->target_points),
                                               old_points,
+                                              job_info->selection_style,
                                               text, base);
                job_info->selection_points = job_info->target_points;
                ev_document_doc_mutex_unlock ();
@@ -1046,6 +1052,7 @@ update_job_selection (CacheJobInfo    *job_info,
 {
        job_info->points_set = TRUE;            
        job_info->target_points = selection->rect;
+       job_info->selection_style = selection->style;
 }
 
 static void