X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-window.c;h=d5d876b2aba984e55b29178926cf1db153414339;hb=464f9eb8489a4b5882d20b8603d5f2fb38e61ddb;hp=c351502a1fb316aadd4492b8022f81d92efbbc68;hpb=c3e1500a4815225f08e1b20dd066559e8c92c280;p=evince.git diff --git a/shell/ev-window.c b/shell/ev-window.c index c351502a..d5d876b2 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); @@ -518,6 +521,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, @@ -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,12 @@ ev_window_setup_document (EvWindow *ev_window) "notify::title", G_CALLBACK (update_window_title), ev_window, 0); + if (EV_IS_DOCUMENT_FIND (document)) { + 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); @@ -1146,6 +1160,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) { @@ -2091,6 +2113,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", @@ -2291,6 +2316,22 @@ load_chrome (void) return chrome; } +static void +sidebar_widget_model_set (EvSidebarLinks *ev_sidebar_links, + GParamSpec *pspec, + EvWindow *ev_window) +{ + GtkTreeModel *model; + GtkAction *action; + + g_object_get (G_OBJECT (ev_sidebar_links), + "model", &model, + NULL); + + action = gtk_action_group_get_action (ev_window->priv->action_group, PAGE_SELECTOR_ACTION); + ev_page_action_set_model (EV_PAGE_ACTION (action), model); +} + static void ev_window_init (EvWindow *ev_window) { @@ -2404,6 +2445,10 @@ ev_window_init (EvWindow *ev_window) /* Stub sidebar, for now */ sidebar_widget = ev_sidebar_links_new (); + g_signal_connect (sidebar_widget, + "notify::model", + G_CALLBACK (sidebar_widget_model_set), + ev_window); gtk_widget_show (sidebar_widget); ev_sidebar_add_page (EV_SIDEBAR (ev_window->priv->sidebar), "index",