]> www.fi.muni.cz Git - evince.git/blobdiff - backend/pdf/ev-poppler.cc
Give priority to form fields over images when deciding whether a button
[evince.git] / backend / pdf / ev-poppler.cc
index 65c2884fa5d0c2c85d0b5fa347a4d402b7bf6db6..fa669fa170cc30dd48e072267ed1dcc227de0cd3 100644 (file)
 
 #include "config.h"
 
 
 #include "config.h"
 
-#ifdef HAVE_POPPLER_FORM_FIELD_BUTTON_GET_BUTTON_TYPE
-#define HAVE_FORMS
-#endif
-
 #include <math.h>
 #include <string.h>
 #include <gtk/gtk.h>
 #include <math.h>
 #include <string.h>
 #include <gtk/gtk.h>
@@ -127,7 +123,6 @@ static EvLink     *ev_link_from_action      (PdfDocument       *pdf_document,
 static void        pdf_document_search_free (PdfDocumentSearch *search);
 static void        pdf_print_context_free   (PdfPrintContext   *ctx);
 
 static void        pdf_document_search_free (PdfDocumentSearch *search);
 static void        pdf_print_context_free   (PdfPrintContext   *ctx);
 
-#ifdef HAVE_FORMS
 G_DEFINE_TYPE_WITH_CODE (PdfDocument, pdf_document, G_TYPE_OBJECT,
                          {
                                 G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT,
 G_DEFINE_TYPE_WITH_CODE (PdfDocument, pdf_document, G_TYPE_OBJECT,
                          {
                                 G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT,
@@ -153,31 +148,6 @@ G_DEFINE_TYPE_WITH_CODE (PdfDocument, pdf_document, G_TYPE_OBJECT,
                                 G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_TRANSITION,
                                                        pdf_document_page_transition_iface_init);
                         });
                                 G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_TRANSITION,
                                                        pdf_document_page_transition_iface_init);
                         });
-#else /* !HAVE_FORMS */
-G_DEFINE_TYPE_WITH_CODE (PdfDocument, pdf_document, G_TYPE_OBJECT,
-                         {
-                                G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT,
-                                                       pdf_document_document_iface_init);
-                                G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_SECURITY,
-                                                       pdf_document_security_iface_init);
-                                G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_THUMBNAILS,
-                                                       pdf_document_document_thumbnails_iface_init);
-                                G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_LINKS,
-                                                       pdf_document_document_links_iface_init);
-                                G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_IMAGES,
-                                                       pdf_document_document_images_iface_init);
-                                G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_FONTS,
-                                                       pdf_document_document_fonts_iface_init);
-                                G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_FIND,
-                                                       pdf_document_find_iface_init);
-                                G_IMPLEMENT_INTERFACE (EV_TYPE_FILE_EXPORTER,
-                                                       pdf_document_file_exporter_iface_init);
-                                G_IMPLEMENT_INTERFACE (EV_TYPE_SELECTION,
-                                                       pdf_selection_iface_init);
-                                G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_TRANSITION,
-                                                       pdf_document_page_transition_iface_init);
-                        });
-#endif /* HAVE_FORMS */
 
 static void
 set_rc_data (PdfDocument     *pdf_document,
 
 static void
 set_rc_data (PdfDocument     *pdf_document,
@@ -1060,8 +1030,11 @@ build_tree (PdfDocument      *pdf_document,
                                break;
                }
                
                                break;
                }
                
-               if (!link) {
+               if (!link || strlen (ev_link_get_title (link)) <= 0) {
                        poppler_action_free (action);
                        poppler_action_free (action);
+                       if (link)
+                               g_object_unref (link);
+                       
                        continue;
                }
 
                        continue;
                }
 
@@ -1980,7 +1953,6 @@ pdf_document_get_crop_box (EvDocument  *document,
        rect->y2 = poppler_rect.y2;
 }
 
        rect->y2 = poppler_rect.y2;
 }
 
-#ifdef HAVE_FORMS
 static EvFormField *
 ev_form_field_from_poppler_field (PopplerFormField *poppler_field)
 {
 static EvFormField *
 ev_form_field_from_poppler_field (PopplerFormField *poppler_field)
 {
@@ -2017,10 +1989,7 @@ ev_form_field_from_poppler_field (PopplerFormField *poppler_field)
                        field_text->do_scroll = poppler_form_field_text_do_scroll (poppler_field);
                        field_text->is_rich_text = poppler_form_field_text_is_rich_text (poppler_field);
                        field_text->is_password = poppler_form_field_text_is_password (poppler_field);
                        field_text->do_scroll = poppler_form_field_text_do_scroll (poppler_field);
                        field_text->is_rich_text = poppler_form_field_text_is_rich_text (poppler_field);
                        field_text->is_password = poppler_form_field_text_is_password (poppler_field);
-                       
-#ifdef HAVE_POPPLER_FORM_FIELD_TEXT_GET_MAX_LEN
                        field_text->max_len = poppler_form_field_text_get_max_len (poppler_field);
                        field_text->max_len = poppler_form_field_text_get_max_len (poppler_field);
-#endif
                        field_text->text = poppler_form_field_text_get_text (poppler_field);
 
                }
                        field_text->text = poppler_form_field_text_get_text (poppler_field);
 
                }
@@ -2349,4 +2318,4 @@ pdf_document_document_forms_iface_init (EvDocumentFormsIface *iface)
        iface->form_field_choice_set_text = pdf_document_forms_form_field_choice_set_text;
        iface->form_field_choice_get_text = pdf_document_forms_form_field_choice_get_text;
 }
        iface->form_field_choice_set_text = pdf_document_forms_form_field_choice_set_text;
        iface->form_field_choice_get_text = pdf_document_forms_form_field_choice_get_text;
 }
-#endif /* HAVE_FORMS */
+