From f9df2040ea8d3d5814257a45c23461eda0532f4e Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 08 Apr 2005 10:31:28 +0000 Subject: Add Edit->Find Next 2005-04-08 Marco Pesenti Gritti * data/evince-ui.xml: * shell/ev-view.c: (ev_view_can_find_next): * shell/ev-view.h: * shell/ev-window.c: (update_action_sensitivity), (find_changed_cb), (ev_window_setup_document), (ev_window_cmd_edit_find_next): Add Edit->Find Next --- diff --git a/ChangeLog b/ChangeLog index 693f80b..de542fb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2005-04-08 Marco Pesenti Gritti + * data/evince-ui.xml: + * shell/ev-view.c: (ev_view_can_find_next): + * shell/ev-view.h: + * shell/ev-window.c: (update_action_sensitivity), + (find_changed_cb), (ev_window_setup_document), + (ev_window_cmd_edit_find_next): + + Add Edit->Find Next + +2005-04-08 Marco Pesenti Gritti + * pdf/ev-poppler.cc: * shell/ev-print-job.c: (idle_print_handler): diff --git a/data/evince-ui.xml b/data/evince-ui.xml index a84697c..274075c 100644 --- a/data/evince-ui.xml +++ b/data/evince-ui.xml @@ -16,6 +16,7 @@ + diff --git a/shell/ev-view.c b/shell/ev-view.c index 2db1317..b94a317 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -1590,6 +1590,22 @@ ev_view_get_find_status (EvView *view) return view->find_status; } +gboolean +ev_view_can_find_next (EvView *view) +{ + int n_results = 0; + + if (view->document) { + EvDocumentFind *find = EV_DOCUMENT_FIND (view->document); + + g_mutex_lock (EV_DOC_MUTEX); + n_results = ev_document_find_get_n_results (find, view->current_page); + g_mutex_unlock (EV_DOC_MUTEX); + } + + return n_results > 0; +} + void ev_view_find_next (EvView *view) { diff --git a/shell/ev-view.h b/shell/ev-view.h index 8ba79f1..6cde705 100644 --- a/shell/ev-view.h +++ b/shell/ev-view.h @@ -56,6 +56,7 @@ void ev_view_set_size (EvView *view, int height); /* Find */ +gboolean ev_view_can_find_next (EvView *view); void ev_view_find_next (EvView *view); void ev_view_find_previous (EvView *view); diff --git a/shell/ev-window.c b/shell/ev-window.c index eb50e1c..3185e66 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -203,6 +203,9 @@ update_action_sensitivity (EvWindow *ev_window) else set_action_sensitive (ev_window, "EditFind", FALSE); + set_action_sensitive (ev_window, "EditFindNext", + ev_view_can_find_next (EV_VIEW (ev_window->priv->view))); + /* View menu */ set_action_sensitive (ev_window, "ViewZoomIn", document!=NULL); set_action_sensitive (ev_window, "ViewZoomOut", document!=NULL); @@ -519,6 +522,12 @@ hide_sidebar_and_actions (EvWindow *ev_window) } static void +find_changed_cb (EvDocument *document, int page, EvWindow *ev_window) +{ + update_action_sensitivity (ev_window); +} + +static void page_changed_cb (EvPageCache *page_cache, gint page, EvWindow *ev_window) @@ -526,7 +535,6 @@ page_changed_cb (EvPageCache *page_cache, update_action_sensitivity (ev_window); } - static void ev_window_setup_document (EvWindow *ev_window) { @@ -543,6 +551,10 @@ ev_window_setup_document (EvWindow *ev_window) "notify::title", G_CALLBACK (update_window_title), ev_window, 0); + g_signal_connect_object (G_OBJECT (document), + "find_changed", + G_CALLBACK (find_changed_cb), + ev_window, 0); ev_window_set_page_mode (ev_window, PAGE_MODE_SINGLE_PAGE); @@ -1147,6 +1159,14 @@ ev_window_cmd_edit_find (GtkAction *action, EvWindow *ev_window) } static void +ev_window_cmd_edit_find_next (GtkAction *action, EvWindow *ev_window) +{ + g_return_if_fail (EV_IS_WINDOW (ev_window)); + + ev_view_find_next (EV_VIEW (ev_window->priv->view)); +} + +static void ev_window_cmd_edit_copy (GtkAction *action, EvWindow *ev_window) { g_return_if_fail (EV_IS_WINDOW (ev_window)); @@ -2091,6 +2111,9 @@ static GtkActionEntry entries[] = { { "EditFind", GTK_STOCK_FIND, NULL, "F", N_("Find a word or phrase in the document"), G_CALLBACK (ev_window_cmd_edit_find) }, + { "EditFindNext", NULL, N_("Find Ne_xt"), "G", + N_("Find next occurrence of the word or phrase"), + G_CALLBACK (ev_window_cmd_edit_find_next) }, /* View menu */ { "ViewZoomIn", GTK_STOCK_ZOOM_IN, NULL, "plus", -- cgit v0.9.1