]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Don't jump to find result when the findbar is shown with search text
[evince.git] / shell / ev-window.c
index 013ae3d36654d9dfc9b1278932388dcafa1de709..6d19c95d5733dd8436bbd9b6c2f93bc31bd5a152 100644 (file)
@@ -442,6 +442,7 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window)
        ev_window_set_action_sensitive (ev_window, "FileSaveAs", has_document && ok_to_copy);
        ev_window_set_action_sensitive (ev_window, "FilePrint", has_pages && ok_to_print);
        ev_window_set_action_sensitive (ev_window, "FileProperties", has_document && has_properties);
+       ev_window_set_action_sensitive (ev_window, "FileOpenContainingFolder", has_document);
 
         /* Edit menu */
        ev_window_set_action_sensitive (ev_window, "EditSelectAll", has_pages && can_get_text);
@@ -3975,6 +3976,22 @@ ev_window_view_presentation_finished (EvWindow *window)
        ev_window_stop_presentation (window, TRUE);
 }
 
+static gboolean
+ev_window_view_presentation_focus_in (EvWindow *window)
+{
+       ev_application_screensaver_disable (EV_APP);
+
+       return FALSE;
+}
+
+static gboolean
+ev_window_view_presentation_focus_out (EvWindow *window)
+{
+       ev_application_screensaver_enable (EV_APP);
+
+       return FALSE;
+}
+
 static void
 ev_window_run_presentation (EvWindow *window)
 {
@@ -4004,6 +4021,12 @@ ev_window_run_presentation (EvWindow *window)
        g_signal_connect_swapped (window->priv->presentation_view, "external-link",
                                  G_CALLBACK (view_external_link_cb),
                                  window);
+       g_signal_connect_swapped (window->priv->presentation_view, "focus-in-event",
+                                 G_CALLBACK (ev_window_view_presentation_focus_in),
+                                 window);
+       g_signal_connect_swapped (window->priv->presentation_view, "focus-out-event",
+                                 G_CALLBACK (ev_window_view_presentation_focus_out),
+                                 window);
 
        gtk_box_pack_start (GTK_BOX (window->priv->main_box),
                            window->priv->presentation_view,
@@ -4766,6 +4789,8 @@ ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window)
 
        const char *documenters[] = {
                "Nickolay V. Shmyrev <nshmyrev@yandex.ru>",
+               "Phil Bull <philbull@gmail.com>",
+               "Tiffany Antpolski <tiffany.antopolski@gmail.com>",
                NULL
        };
 
@@ -4873,6 +4898,8 @@ ev_window_sidebar_visibility_changed_cb (EvSidebar  *ev_sidebar,
                if (ev_window->priv->metadata)
                        ev_metadata_set_boolean (ev_window->priv->metadata, "sidebar_visibility",
                                                 visible);
+               if (!visible)
+                       gtk_widget_grab_focus (ev_window->priv->view);
        }
 }
 
@@ -5160,30 +5187,23 @@ find_bar_close_cb (EggFindBar *find_bar,
 }
 
 static void
-find_bar_search_changed_cb (EggFindBar *find_bar,
-                           GParamSpec *param,
-                           EvWindow   *ev_window)
+ev_window_search_start (EvWindow *ev_window)
 {
-       gboolean case_sensitive;
+       EggFindBar *find_bar = EGG_FIND_BAR (ev_window->priv->find_bar);
        const char *search_string;
 
        if (!ev_window->priv->document || !EV_IS_DOCUMENT_FIND (ev_window->priv->document))
                return;
-       
-       /* Either the string or case sensitivity could have changed. */
-       case_sensitive = egg_find_bar_get_case_sensitive (find_bar);
-       search_string = egg_find_bar_get_search_string (find_bar);
 
-       ev_view_find_search_changed (EV_VIEW (ev_window->priv->view));
+       search_string = egg_find_bar_get_search_string (find_bar);
 
        ev_window_clear_find_job (ev_window);
-
        if (search_string && search_string[0]) {
                ev_window->priv->find_job = ev_job_find_new (ev_window->priv->document,
                                                             ev_document_model_get_page (ev_window->priv->model),
                                                             ev_document_get_n_pages (ev_window->priv->document),
                                                             search_string,
-                                                            case_sensitive);
+                                                            egg_find_bar_get_case_sensitive (find_bar));
                g_signal_connect (ev_window->priv->find_job, "finished",
                                  G_CALLBACK (ev_window_find_job_finished_cb),
                                  ev_window);
@@ -5193,12 +5213,21 @@ find_bar_search_changed_cb (EggFindBar *find_bar,
                ev_job_scheduler_push_job (ev_window->priv->find_job, EV_JOB_PRIORITY_NONE);
        } else {
                ev_window_update_actions (ev_window);
-               egg_find_bar_set_status_text (EGG_FIND_BAR (ev_window->priv->find_bar),
-                                             NULL);
+               egg_find_bar_set_status_text (find_bar, NULL);
                gtk_widget_queue_draw (GTK_WIDGET (ev_window->priv->view));
        }
 }
 
+static void
+find_bar_search_changed_cb (EggFindBar *find_bar,
+                           GParamSpec *param,
+                           EvWindow   *ev_window)
+{
+       /* Either the string or case sensitivity could have changed. */
+       ev_view_find_search_changed (EV_VIEW (ev_window->priv->view));
+       ev_window_search_start (ev_window);
+}
+
 static void
 find_bar_visibility_changed_cb (EggFindBar *find_bar,
                                GParamSpec *param,
@@ -5211,11 +5240,10 @@ find_bar_visibility_changed_cb (EggFindBar *find_bar,
        if (ev_window->priv->document &&
            EV_IS_DOCUMENT_FIND (ev_window->priv->document)) {
                ev_view_find_set_highlight_search (EV_VIEW (ev_window->priv->view), visible);
-               ev_view_find_search_changed (EV_VIEW (ev_window->priv->view));
                ev_window_update_actions (ev_window);
 
                if (visible)
-                       find_bar_search_changed_cb (find_bar, NULL, ev_window);
+                       ev_window_search_start (ev_window);
                else
                        egg_find_bar_set_status_text (EGG_FIND_BAR (ev_window->priv->find_bar), NULL);
        }
@@ -7110,6 +7138,10 @@ ev_window_init (EvWindow *ev_window)
                               NULL));
        g_object_unref (toolbars_model);
 
+       gtk_style_context_add_class
+               (gtk_widget_get_style_context (GTK_WIDGET (ev_window->priv->toolbar)),
+                GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
+
        egg_editable_toolbar_show (EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar),
                                   "DefaultToolBar");
        gtk_box_pack_start (GTK_BOX (ev_window->priv->main_box),