Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2005-04-08 10:31:28 (GMT)
committer Marco Pesenti Gritti <marco@src.gnome.org>2005-04-08 10:31:28 (GMT)
commitf9df2040ea8d3d5814257a45c23461eda0532f4e (patch)
treedf312774c39d68696e6d85b10d629c1e31dad4b3
parentcf6c30c93ee2c79e90200b2316587aeb12dc2ee2 (diff)
Add Edit->Find Next
2005-04-08 Marco Pesenti Gritti <mpg@redhat.com> * 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
-rw-r--r--ChangeLog11
-rw-r--r--data/evince-ui.xml1
-rw-r--r--shell/ev-view.c16
-rw-r--r--shell/ev-view.h1
-rw-r--r--shell/ev-window.c25
5 files changed, 53 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 693f80b..de542fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
2005-04-08 Marco Pesenti Gritti <mpg@redhat.com>
+ * 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 <mpg@redhat.com>
+
* 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 @@
<menuitem name="EditSelectAllMenu" action="EditSelectAll"/>
<separator/>
<menuitem name="EditFindMenu" action="EditFind"/>
+ <menuitem name="EditFindNextMenu" action="EditFindNext"/>
</menu>
<menu name="ViewMenu" action="View">
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, "<control>F",
N_("Find a word or phrase in the document"),
G_CALLBACK (ev_window_cmd_edit_find) },
+ { "EditFindNext", NULL, N_("Find Ne_xt"), "<control>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, "<control>plus",