Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2004-12-23 05:12:59 (GMT)
committer Havoc Pennington <hp@src.gnome.org>2004-12-23 05:12:59 (GMT)
commit5cea5eb0365ac715463c4d6fc893ed4154821e42 (patch)
tree3999b0248e36fa2ae9065bf347912761a53f693d /shell
parentec2aa10ab1ec9246d6c35b90f5d1df372f39c732 (diff)
make search find stuff on other pages, sort of (only returns one result on
2004-12-22 Havoc Pennington <hp@redhat.com> * pdf/xpdf/pdf-document.cc (pdf_document_find_begin): make search find stuff on other pages, sort of (only returns one result on invisible pages, to show they have results; updates full results for a page when you view it). Currently repaints the current page every time a new result is found on any page, which isn't so nice.
Diffstat (limited to 'shell')
-rw-r--r--shell/ev-view.c48
1 files changed, 33 insertions, 15 deletions
diff --git a/shell/ev-view.c b/shell/ev-view.c
index 8f8f068..d095093 100644
--- a/shell/ev-view.c
+++ b/shell/ev-view.c
@@ -295,32 +295,36 @@ expose_bin_window (GtkWidget *widget,
{
EvView *view = EV_VIEW (widget);
int i;
+ int current_page;
const EvFindResult *results;
- if (view->document)
- ev_document_render (view->document,
- event->area.x, event->area.y,
- event->area.width, event->area.height);
+ if (view->document == NULL)
+ return;
+
+ ev_document_render (view->document,
+ event->area.x, event->area.y,
+ event->area.width, event->area.height);
results = (EvFindResult*) view->find_results->data;
+ current_page = ev_document_get_page (view->document);
i = 0;
while (i < view->find_results->len) {
#if 0
- g_printerr ("highlighting result %d at %d,%d %dx%d\n",
- i,
+ g_printerr ("highlighting result %d page %d at %d,%d %dx%d\n",
+ i, results[i].page_num,
results[i].highlight_area.x,
results[i].highlight_area.y,
results[i].highlight_area.width,
results[i].highlight_area.height);
-#endif
- // if (results[i].page_num == current_page) FIXME
- gdk_draw_rectangle (view->bin_window,
- widget->style->base_gc[GTK_STATE_SELECTED],
- FALSE,
- results[i].highlight_area.x,
- results[i].highlight_area.y,
- results[i].highlight_area.width,
- results[i].highlight_area.height);
+#endif
+ if (results[i].page_num == current_page)
+ gdk_draw_rectangle (view->bin_window,
+ widget->style->base_gc[GTK_STATE_SELECTED],
+ FALSE,
+ results[i].highlight_area.x,
+ results[i].highlight_area.y,
+ results[i].highlight_area.width,
+ results[i].highlight_area.height);
++i;
}
}
@@ -485,6 +489,20 @@ found_results_callback (EvDocument *document,
if (n_results > 0)
g_array_append_vals (view->find_results,
results, n_results);
+
+#if 0
+ {
+ int i;
+
+ g_printerr ("%d results: ", n_results);
+ i = 0;
+ while (i < n_results) {
+ g_printerr ("%d ", results[i].page_num);
+ ++i;
+ }
+ g_printerr ("\n");
+ }
+#endif
gtk_widget_queue_draw (GTK_WIDGET (view));
}