diff options
author | Marco Pesenti Gritti <marco@gnome.org> | 2005-01-30 13:40:03 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-01-30 13:40:03 (GMT) |
commit | 20bac8406dacba5512f116c91ab21b0ad20fabf5 (patch) | |
tree | 0aa749d34b92039a78f49ff930a6f0431fb4c3f0 /pdf | |
parent | a521d16eb7f59cbda6881b66e0e7a00125377cd8 (diff) |
Yay! find works now... Now to find bugs...
2005-01-30 Marco Pesenti Gritti <marco@gnome.org>
* pdf/xpdf/pdf-document.cc:
* shell/ev-view.c: (draw_rubberband), (highlight_find_results),
(expose_bin_window), (find_changed_cb):
Yay! find works now... Now to find bugs...
Diffstat (limited to 'pdf')
-rw-r--r-- | pdf/xpdf/pdf-document.cc | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/pdf/xpdf/pdf-document.cc b/pdf/xpdf/pdf-document.cc index 5a7304c..b913be8 100644 --- a/pdf/xpdf/pdf-document.cc +++ b/pdf/xpdf/pdf-document.cc @@ -399,6 +399,24 @@ pdf_document_render (EvDocument *document, draw.width, draw.height); } +double +pdf_document_find_get_progress (EvDocumentFind *document_find) +{ + PdfDocumentSearch *search = PDF_DOCUMENT (document_find)->search; + int n_pages, pages_done; + + n_pages = ev_document_get_n_pages (EV_DOCUMENT (document_find)); + if (search->search_page > search->start_page) { + pages_done = search->search_page - search->start_page; + } else if (search->search_page == search->start_page) { + pages_done = n_pages; + } else { + pages_done = n_pages - search->start_page + search->search_page; + } + + return pages_done / (double) n_pages; +} + int pdf_document_find_page_has_results (EvDocumentFind *document_find, int page) @@ -427,15 +445,16 @@ pdf_document_find_get_result (EvDocumentFind *document_find, int n_result, GdkRectangle *rectangle) { - PdfDocumentSearch *search = PDF_DOCUMENT (document_find)->search; + PdfDocument *pdf_document = PDF_DOCUMENT (document_find); + PdfDocumentSearch *search = pdf_document->search; GdkRectangle r; if (search != NULL) { r = g_array_index (search->current_page_results, GdkRectangle, n_result); - rectangle->x = r.x; - rectangle->y = r.y; + rectangle->x = r.x + pdf_document->page_x_offset; + rectangle->y = r.y + pdf_document->page_y_offset; rectangle->width = r.width; rectangle->height = r.height; @@ -498,7 +517,7 @@ pdf_document_search_idle_callback (void *data) { PdfDocumentSearch *search = (PdfDocumentSearch*) data; PdfDocument *pdf_document = search->document; - int n_pages; + int n_pages, changed_page; double xMin, yMin, xMax, yMax; /* Note that PDF page count is 1 through n_pages INCLUSIVE @@ -533,11 +552,7 @@ pdf_document_search_idle_callback (void *data) search->other_page_flags[search->search_page] = 0; } - if (search->search_page != search->start_page) { - ev_document_find_changed (EV_DOCUMENT_FIND (pdf_document), - search->search_page); - return TRUE; - } + changed_page = search->start_page; search->search_page += 1; if (search->search_page > n_pages) { @@ -545,6 +560,12 @@ pdf_document_search_idle_callback (void *data) search->search_page = 1; } + if (search->search_page != search->start_page) { + ev_document_find_changed (EV_DOCUMENT_FIND (pdf_document), + changed_page); + return TRUE; + } + end_search: /* We're done. */ search->idle = 0; /* will return FALSE to remove */ |