]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-view.c
Add GtkMountOperation (renamed to avoid conflicts) to be able to open
[evince.git] / shell / ev-view.c
index fa9fbd8dc65f9ab894e0bef07ee14268ce07bd98..f984396c861ea96a6f64d9c197dc14820dc07d0b 100644 (file)
@@ -1658,9 +1658,9 @@ ev_view_form_field_get_region (EvView      *view,
        GList       *forms_mapping;
 
        forms_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache,
-                                                               field->page);
+                                                               field->page->index);
        ev_form_field_mapping_get_area (forms_mapping, field, &field_area);
-       doc_rect_to_view_rect (view, field->page, &field_area, &view_area);
+       doc_rect_to_view_rect (view, field->page->index, &field_area, &view_area);
        view_area.x -= view->scroll_x;
        view_area.y -= view->scroll_y;
 
@@ -1711,7 +1711,7 @@ ev_view_form_field_button_create_widget (EvView      *view,
                         * we need to update also the region for the current selected item
                         */
                        forms_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache,
-                                                                               field->page);
+                                                                               field->page->index);
                        for (l = forms_mapping; l; l = g_list_next (l)) {
                                EvFormField *button = ((EvFormFieldMapping *)(l->data))->field;
                                GdkRegion   *button_region;
@@ -1739,7 +1739,7 @@ ev_view_form_field_button_create_widget (EvView      *view,
 
        ev_pixbuf_cache_reload_page (view->pixbuf_cache,
                                     field_region,
-                                    field->page,
+                                    field->page->index,
                                     view->rotation,
                                     view->scale);
        gdk_region_destroy (field_region);
@@ -1769,7 +1769,7 @@ ev_view_form_field_text_save (EvView    *view,
                field->changed = FALSE;
                ev_pixbuf_cache_reload_page (view->pixbuf_cache,
                                             field_region,
-                                            field->page,
+                                            field->page->index,
                                             view->rotation,
                                             view->scale);
                gdk_region_destroy (field_region);
@@ -1890,7 +1890,7 @@ ev_view_form_field_choice_save (EvView    *view,
                field->changed = FALSE;
                ev_pixbuf_cache_reload_page (view->pixbuf_cache,
                                             field_region,
-                                            field->page,
+                                            field->page->index,
                                             view->rotation,
                                             view->scale);
                gdk_region_destroy (field_region);
@@ -1907,7 +1907,8 @@ ev_view_form_field_choice_changed (GtkWidget   *widget,
                gint item;
                
                item = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
-               if (GPOINTER_TO_INT (field_choice->selected_items->data) != item) {
+               if (!field_choice->selected_items ||
+                   GPOINTER_TO_INT (field_choice->selected_items->data) != item) {
                        g_list_free (field_choice->selected_items);
                        field_choice->selected_items = NULL;
                        field_choice->selected_items = g_list_prepend (field_choice->selected_items,
@@ -2106,10 +2107,10 @@ ev_view_handle_form_field (EvView      *view,
                                g_object_ref (field),
                                (GDestroyNotify)g_object_unref);
 
-       form_field_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache, field->page);
+       form_field_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache, field->page->index);
        ev_form_field_mapping_get_area (form_field_mapping, field, &field_area);
        
-       doc_rect_to_view_rect (view, field->page, &field_area, &view_area);
+       doc_rect_to_view_rect (view, field->page->index, &field_area, &view_area);
        view_area.x -= view->scroll_x;
        view_area.y -= view->scroll_y;
 
@@ -2309,10 +2310,10 @@ ev_view_size_allocate (GtkWidget      *widget,
                        continue;
 
                form_field_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache,
-                                                                            field->page);
+                                                                            field->page->index);
                ev_form_field_mapping_get_area (form_field_mapping, field, &field_area);
 
-               doc_rect_to_view_rect (view, field->page, &field_area, &view_area);
+               doc_rect_to_view_rect (view, field->page->index, &field_area, &view_area);
                view_area.x -= view->scroll_x;
                view_area.y -= view->scroll_y;
 
@@ -2482,7 +2483,7 @@ ev_view_expose_event (GtkWidget      *widget,
        cairo_t *cr;
        gint     i;
 
-       if (view->animation) {
+       if (view->animation && ev_transition_animation_ready (view->animation)) {
                GdkRectangle page_area;
                GtkBorder    border;
 
@@ -3738,9 +3739,12 @@ draw_one_page (EvView       *view,
                page_surface = ev_pixbuf_cache_get_surface (view->pixbuf_cache, page);
 
                if (!page_surface) {
-                       draw_loading_text (view,
-                                          &real_page_area,
-                                          expose_area);
+                       if (!view->presentation) {
+                               draw_loading_text (view,
+                                                  &real_page_area,
+                                                  expose_area);
+                       }
+
                        *page_ready = FALSE;
 
                        return;
@@ -4759,17 +4763,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
        }
 }
 
@@ -5336,18 +5333,30 @@ ev_view_find_previous (EvView *view)
        }
 }
 
-void ev_view_search_changed (EvView *view)
+void
+ev_view_search_changed (EvView *view)
 {
        /* search string has changed, focus on new search result */
        view->jump_to_find_result = TRUE;
 }
 
-void ev_view_set_highlight_search (EvView *view, gboolean value)
+void
+ev_view_set_highlight_search (EvView *view, gboolean value)
 {
        view->highlight_find_results = value;
        gtk_widget_queue_draw (GTK_WIDGET (view));
 }
 
+void
+ev_view_find_cancel (EvView *view)
+{
+       if (EV_IS_DOCUMENT_FIND (view->document)) {
+               EvDocumentFind *find = EV_DOCUMENT_FIND (view->document);
+
+               ev_document_find_cancel (find);
+       }
+}
+
 /*** Selections ***/
 
 /* compute_new_selection_rect/text calculates the area currently selected by
@@ -5707,15 +5716,19 @@ get_selected_text (EvView *view)
        EvRenderContext *rc;
 
        text = g_string_new (NULL);
-       rc = ev_render_context_new (view->rotation, 1, view->scale);
+       rc = ev_render_context_new (NULL, view->rotation, view->scale);
 
        ev_document_doc_mutex_lock ();
 
        for (l = view->selection_info.selections; l != NULL; l = l->next) {
                EvViewSelection *selection = (EvViewSelection *)l->data;
+               EvPage *page;
                gchar *tmp;
 
-               ev_render_context_set_page (rc, selection->page);
+               page = ev_document_get_page (view->document, selection->page);
+               ev_render_context_set_page (rc, page);
+               g_object_unref (page);
+               
                tmp = ev_selection_get_selected_text (EV_SELECTION (view->document),
                                                      rc, selection->style,
                                                      &(selection->rect));
@@ -5724,10 +5737,10 @@ get_selected_text (EvView *view)
                g_free (tmp);
        }
 
-       ev_document_doc_mutex_unlock ();
-
        g_object_unref (rc);
        
+       ev_document_doc_mutex_unlock ();
+       
        normalized_text = g_utf8_normalize (text->str, text->len, G_NORMALIZE_NFKC);
        g_string_free (text, TRUE);
        return normalized_text;