~boulabiar/oif/evince-drag-fixes

« back to all changes in this revision

Viewing changes to backend/pdf/ev-poppler.cc

  • Committer: Carlos Garcia Campos
  • Date: 2010-09-15 15:05:09 UTC
  • Revision ID: git-v1:08993c59369086fa8916236f580438d656ccb8f7
Do not cache layers in the backends

Use g_object_set_data instead, to attach the backend object to the
evince layer.

Show diffs side-by-side

added added

removed removed

Lines of Context:
109
109
 
110
110
        PdfPrintContext *print_ctx;
111
111
 
112
 
        GList *layers;
113
112
        GHashTable *annots;
114
113
};
115
114
 
198
197
                poppler_fonts_iter_free (pdf_document->fonts_iter);
199
198
        }
200
199
 
201
 
        if (pdf_document->layers) {
202
 
                g_list_foreach (pdf_document->layers, (GFunc)g_object_unref, NULL);
203
 
                g_list_free (pdf_document->layers);
204
 
        }
205
 
 
206
200
        G_OBJECT_CLASS (pdf_document_parent_class)->dispose (object);
207
201
}
208
202
 
3149
3143
                        markup = g_markup_escape_text (poppler_layer_get_title (layer), -1);
3150
3144
                        visible = poppler_layer_is_visible (layer);
3151
3145
                        rb_group = poppler_layer_get_radio_button_group_id (layer);
3152
 
                        pdf_document->layers = g_list_append (pdf_document->layers,
3153
 
                                                              g_object_ref (layer));
3154
 
                        ev_layer = ev_layer_new (g_list_length (pdf_document->layers) - 1,
3155
 
                                                 poppler_layer_is_parent (layer),
 
3146
                        ev_layer = ev_layer_new (poppler_layer_is_parent (layer),
3156
3147
                                                 rb_group);
 
3148
                        g_object_set_data_full (G_OBJECT (ev_layer),
 
3149
                                                "poppler-layer",
 
3150
                                                g_object_ref (layer),
 
3151
                                                (GDestroyNotify) g_object_unref);
3157
3152
                } else {
3158
3153
                        gchar *title;
3159
3154
 
3211
3206
pdf_document_layers_show_layer (EvDocumentLayers *document,
3212
3207
                                EvLayer          *layer)
3213
3208
{
3214
 
        PdfDocument *pdf_document = PDF_DOCUMENT (document);
3215
 
        guint        layer_id = ev_layer_get_id (layer);
 
3209
        PdfDocument  *pdf_document = PDF_DOCUMENT (document);
 
3210
        PopplerLayer *poppler_layer;
3216
3211
 
3217
 
        poppler_layer_show (POPPLER_LAYER (g_list_nth_data (pdf_document->layers, layer_id)));
 
3212
        poppler_layer = POPPLER_LAYER (g_object_get_data (G_OBJECT (layer), "poppler-layer"));
 
3213
        poppler_layer_show (poppler_layer);
3218
3214
}
3219
3215
 
3220
3216
static void
3221
3217
pdf_document_layers_hide_layer (EvDocumentLayers *document,
3222
3218
                                EvLayer          *layer)
3223
3219
{
3224
 
        PdfDocument *pdf_document = PDF_DOCUMENT (document);
3225
 
        guint        layer_id = ev_layer_get_id (layer);
 
3220
        PdfDocument  *pdf_document = PDF_DOCUMENT (document);
 
3221
        PopplerLayer *poppler_layer;
3226
3222
 
3227
 
        poppler_layer_hide (POPPLER_LAYER (g_list_nth_data (pdf_document->layers, layer_id)));
 
3223
        poppler_layer = POPPLER_LAYER (g_object_get_data (G_OBJECT (layer), "poppler-layer"));
 
3224
        poppler_layer_hide (poppler_layer);
3228
3225
}
3229
3226
 
3230
3227
static gboolean
3231
3228
pdf_document_layers_layer_is_visible (EvDocumentLayers *document,
3232
3229
                                      EvLayer          *layer)
3233
3230
{
3234
 
        PdfDocument *pdf_document = PDF_DOCUMENT (document);
3235
 
        guint        layer_id = ev_layer_get_id (layer);
 
3231
        PdfDocument  *pdf_document = PDF_DOCUMENT (document);
 
3232
        PopplerLayer *poppler_layer;
3236
3233
 
3237
 
        return poppler_layer_is_visible (POPPLER_LAYER (g_list_nth_data (pdf_document->layers, layer_id)));
 
3234
        poppler_layer = POPPLER_LAYER (g_object_get_data (G_OBJECT (layer), "poppler-layer"));
 
3235
        return poppler_layer_is_visible (poppler_layer);
3238
3236
}
3239
3237
 
3240
3238
static void