From 20bac8406dacba5512f116c91ab21b0ad20fabf5 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Sun, 30 Jan 2005 13:40:03 +0000 Subject: Yay! find works now... Now to find bugs... 2005-01-30 Marco Pesenti Gritti * 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... --- (limited to 'pdf') 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 */ -- cgit v0.9.1