]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Fix flickering on resizing
[evince.git] / shell / ev-window.c
index fe1c2263a049c44c68051d1b328ce5e80a6ec040..2a3783476e71fd723fb4284997cc5cbf854efa2d 100644 (file)
@@ -55,6 +55,7 @@
 #include "ev-application.h"
 #include "ev-stock-icons.h"
 #include "ev-file-helpers.h"
 #include "ev-application.h"
 #include "ev-stock-icons.h"
 #include "ev-file-helpers.h"
+#include <poppler.h>
 
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
 
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
@@ -70,9 +71,8 @@
 #include <string.h>
 
 typedef enum {
 #include <string.h>
 
 typedef enum {
-       PAGE_MODE_SINGLE_PAGE,
-       PAGE_MODE_CONTINUOUS_PAGE,
-       PAGE_MODE_PASSWORD,
+       PAGE_MODE_DOCUMENT,
+       PAGE_MODE_PASSWORD
 } EvWindowPageMode;
 
 typedef enum {
 } EvWindowPageMode;
 
 typedef enum {
@@ -226,7 +226,6 @@ update_action_sensitivity (EvWindow *ev_window)
                              has_pages && ev_view_can_zoom_in (view));
        set_action_sensitive (ev_window, "ViewZoomOut",
                              has_pages && ev_view_can_zoom_out (view));
                              has_pages && ev_view_can_zoom_in (view));
        set_action_sensitive (ev_window, "ViewZoomOut",
                              has_pages && ev_view_can_zoom_out (view));
-       set_action_sensitive (ev_window, "ViewNormalSize", has_pages);
        set_action_sensitive (ev_window, "ViewBestFit", has_pages);
        set_action_sensitive (ev_window, "ViewPageWidth", has_pages);
        set_action_sensitive (ev_window, "ViewReload", has_pages);
        set_action_sensitive (ev_window, "ViewBestFit", has_pages);
        set_action_sensitive (ev_window, "ViewPageWidth", has_pages);
        set_action_sensitive (ev_window, "ViewReload", has_pages);
@@ -244,15 +243,6 @@ update_action_sensitivity (EvWindow *ev_window)
                set_action_sensitive (ev_window, "GoLastPage", FALSE);
        }
 
                set_action_sensitive (ev_window, "GoLastPage", FALSE);
        }
 
-       /* Page View radio group */
-       if (document) {
-               set_action_sensitive (ev_window, "SinglePage", page_mode != PAGE_MODE_PASSWORD);
-               set_action_sensitive (ev_window, "ContinuousPage", page_mode != PAGE_MODE_PASSWORD);
-       } else {
-               set_action_sensitive (ev_window, "SinglePage", FALSE);
-               set_action_sensitive (ev_window, "ContinuousPage", FALSE);
-       }
-
        /* Toolbar-specific actions: */
        set_action_sensitive (ev_window, PAGE_SELECTOR_ACTION, has_pages);
        set_action_sensitive (ev_window, ZOOM_CONTROL_ACTION,  has_pages);
        /* Toolbar-specific actions: */
        set_action_sensitive (ev_window, PAGE_SELECTOR_ACTION, has_pages);
        set_action_sensitive (ev_window, ZOOM_CONTROL_ACTION,  has_pages);
@@ -468,11 +458,12 @@ update_sizing_buttons (EvWindow *window)
 }
 
 void
 }
 
 void
-ev_window_open_page (EvWindow *ev_window, int page)
+ev_window_open_page_label (EvWindow   *ev_window, 
+                          const char *label)
 {
        if (ev_window->priv->page_cache) {
 {
        if (ev_window->priv->page_cache) {
-           page = CLAMP (page, 0, ev_page_cache_get_n_pages (ev_window->priv->page_cache));
-           ev_page_cache_set_current_page (ev_window->priv->page_cache, page);
+               ev_page_cache_set_page_label (ev_window->priv->page_cache, 
+                                             label);
        }
 }
 
        }
 }
 
@@ -608,7 +599,7 @@ ev_window_setup_document (EvWindow *ev_window)
                                         ev_window, 0);
        }
 
                                         ev_window, 0);
        }
 
-       ev_window_set_page_mode (ev_window, PAGE_MODE_SINGLE_PAGE);
+       ev_window_set_page_mode (ev_window, PAGE_MODE_DOCUMENT);
 
        ev_sidebar_set_document (sidebar, document);
 
 
        ev_sidebar_set_document (sidebar, document);
 
@@ -623,7 +614,7 @@ ev_window_setup_document (EvWindow *ev_window)
 
        info = ev_document_get_info (document);
        update_document_mode (ev_window, info->mode);
 
        info = ev_document_get_info (document);
        update_document_mode (ev_window, info->mode);
-       g_free (info);
+       ev_document_info_free (info);
 }
 
 static void
 }
 
 static void
@@ -1079,23 +1070,38 @@ using_postscript_printer (GnomePrintConfig *config)
 }
 
 static void
 }
 
 static void
-ev_window_print (EvWindow *ev_window)
+ev_window_print (EvWindow *window)
+{
+       EvPageCache *page_cache;
+       int last_page;
+
+       page_cache = ev_document_get_page_cache (window->priv->document);
+       last_page = ev_page_cache_get_n_pages (page_cache);
+
+       ev_window_print_range (window, 1, -1);
+}
+
+void
+ev_window_print_range (EvWindow *ev_window, int first_page, int last_page)
 {
        GnomePrintConfig *config;
        GnomePrintJob *job;
        GtkWidget *print_dialog;
 {
        GnomePrintConfig *config;
        GnomePrintJob *job;
        GtkWidget *print_dialog;
-       EvPageCache *page_cache;
        gchar *pages_label;
        EvPrintJob *print_job = NULL;
        gchar *pages_label;
        EvPrintJob *print_job = NULL;
+       EvPageCache *page_cache;
 
         g_return_if_fail (EV_IS_WINDOW (ev_window));
        g_return_if_fail (ev_window->priv->document != NULL);
 
 
         g_return_if_fail (EV_IS_WINDOW (ev_window));
        g_return_if_fail (ev_window->priv->document != NULL);
 
+       page_cache = ev_document_get_page_cache (ev_window->priv->document);
+       if (last_page == -1) {
+               last_page = ev_page_cache_get_n_pages (page_cache);
+       }
+
        config = gnome_print_config_default ();
        job = gnome_print_job_new (config);
 
        config = gnome_print_config_default ();
        job = gnome_print_job_new (config);
 
-       page_cache = ev_document_get_page_cache (ev_window->priv->document);
-
        print_dialog = gnome_print_dialog_new (job, (guchar *) _("Print"),
                                               (GNOME_PRINT_DIALOG_RANGE |
                                                GNOME_PRINT_DIALOG_COPIES));
        print_dialog = gnome_print_dialog_new (job, (guchar *) _("Print"),
                                               (GNOME_PRINT_DIALOG_RANGE |
                                                GNOME_PRINT_DIALOG_COPIES));
@@ -1104,8 +1110,7 @@ ev_window_print (EvWindow *ev_window)
        gnome_print_dialog_construct_range_page (GNOME_PRINT_DIALOG (print_dialog),
                                                 GNOME_PRINT_RANGE_ALL |
                                                 GNOME_PRINT_RANGE_RANGE,
        gnome_print_dialog_construct_range_page (GNOME_PRINT_DIALOG (print_dialog),
                                                 GNOME_PRINT_RANGE_ALL |
                                                 GNOME_PRINT_RANGE_RANGE,
-                                                1,
-                                                ev_page_cache_get_n_pages (page_cache),
+                                                first_page, last_page,
                                                 NULL, (const guchar *)pages_label);
        g_free (pages_label);
                                                 
                                                 NULL, (const guchar *)pages_label);
        g_free (pages_label);
                                                 
@@ -1649,15 +1654,12 @@ ev_window_set_page_mode (EvWindow         *window,
        window->priv->page_mode = page_mode;
 
        switch (page_mode) {
        window->priv->page_mode = page_mode;
 
        switch (page_mode) {
-       case PAGE_MODE_SINGLE_PAGE:
+       case PAGE_MODE_DOCUMENT:
                child = window->priv->view;
                break;
        case PAGE_MODE_PASSWORD:
                child = window->priv->password_view;
                break;
                child = window->priv->view;
                break;
        case PAGE_MODE_PASSWORD:
                child = window->priv->password_view;
                break;
-       case PAGE_MODE_CONTINUOUS_PAGE:
-               child = window->priv->page_view;
-               break;
        default:
                g_assert_not_reached ();
        }
        default:
                g_assert_not_reached ();
        }
@@ -1737,15 +1739,6 @@ ev_window_cmd_view_zoom_out (GtkAction *action, EvWindow *ev_window)
        update_action_sensitivity (ev_window);
 }
 
        update_action_sensitivity (ev_window);
 }
 
-static void
-ev_window_cmd_view_normal_size (GtkAction *action, EvWindow *ev_window)
-{
-        g_return_if_fail (EV_IS_WINDOW (ev_window));
-
-       ev_view_zoom_normal (EV_VIEW (ev_window->priv->view));
-       update_action_sensitivity (ev_window);
-}
-
 static void
 ev_window_cmd_go_previous_page (GtkAction *action, EvWindow *ev_window)
 {
 static void
 ev_window_cmd_go_previous_page (GtkAction *action, EvWindow *ev_window)
 {
@@ -1793,7 +1786,11 @@ ev_window_cmd_view_reload (GtkAction *action, EvWindow *ev_window)
        uri = g_strdup (ev_window->priv->uri);
 
        ev_window_open (ev_window, uri);
        uri = g_strdup (ev_window->priv->uri);
 
        ev_window_open (ev_window, uri);
-       ev_window_open_page (ev_window, page);
+
+       /* In case the number of pages in the document has changed. */
+       page = CLAMP (page, 0, ev_page_cache_get_n_pages (ev_window->priv->page_cache));
+
+       ev_page_cache_set_current_page (ev_window->priv->page_cache, page);
 
        g_free (uri);
 }
 
        g_free (uri);
 }
@@ -1847,7 +1844,7 @@ ev_window_cmd_escape (GtkAction *action, EvWindow *window)
 }
 
 static void
 }
 
 static void
-update_view_size (EvWindow *window)
+update_view_size (EvView *view, EvWindow *window)
 {
        int width, height;
        GtkRequisition vsb_requisition;
 {
        int width, height;
        GtkRequisition vsb_requisition;
@@ -1878,14 +1875,6 @@ update_view_size (EvWindow *window)
                                   hsb_requisition.height + scrollbar_spacing);
 }
 
                                   hsb_requisition.height + scrollbar_spacing);
 }
 
-static void
-size_allocate_cb (GtkWidget     *scrolled_window,
-                 GtkAllocation *allocation,
-                 EvWindow      *window)
-{
-       update_view_size (window);
-}
-
 static void     
 ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec,
                                  EvWindow   *ev_window)
 static void     
 ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec,
                                  EvWindow   *ev_window)
@@ -1899,10 +1888,10 @@ ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec,
 
        scrolled_window = ev_window->priv->scrolled_window;
 
 
        scrolled_window = ev_window->priv->scrolled_window;
 
-       g_signal_handlers_disconnect_by_func (scrolled_window, size_allocate_cb, ev_window);
+       g_signal_handlers_disconnect_by_func (ev_window->priv->view, update_view_size, ev_window);
 
        if (sizing_mode != EV_SIZING_FREE)
 
        if (sizing_mode != EV_SIZING_FREE)
-               update_view_size (ev_window);
+               update_view_size (NULL, ev_window);
 
        switch (sizing_mode) {
        case EV_SIZING_BEST_FIT:
 
        switch (sizing_mode) {
        case EV_SIZING_BEST_FIT:
@@ -1910,8 +1899,8 @@ ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec,
                              "hscrollbar-policy", GTK_POLICY_NEVER,
                              "vscrollbar-policy", GTK_POLICY_AUTOMATIC,
                              NULL);
                              "hscrollbar-policy", GTK_POLICY_NEVER,
                              "vscrollbar-policy", GTK_POLICY_AUTOMATIC,
                              NULL);
-               g_signal_connect (scrolled_window, "size-allocate",
-                                 G_CALLBACK (size_allocate_cb),
+               g_signal_connect (ev_window->priv->view, "zoom_invalid",
+                                 G_CALLBACK (update_view_size),
                                  ev_window);
                break;
        case EV_SIZING_FIT_WIDTH:
                                  ev_window);
                break;
        case EV_SIZING_FIT_WIDTH:
@@ -1919,8 +1908,8 @@ ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec,
                              "hscrollbar-policy", GTK_POLICY_NEVER,
                              "vscrollbar-policy", GTK_POLICY_AUTOMATIC,
                              NULL);
                              "hscrollbar-policy", GTK_POLICY_NEVER,
                              "vscrollbar-policy", GTK_POLICY_AUTOMATIC,
                              NULL);
-               g_signal_connect (scrolled_window, "size-allocate",
-                                 G_CALLBACK (size_allocate_cb),
+               g_signal_connect (ev_window->priv->view, "zoom_invalid",
+                                 G_CALLBACK (update_view_size),
                                  ev_window);
                break;
        case EV_SIZING_FREE:
                                  ev_window);
                break;
        case EV_SIZING_FREE:
@@ -1934,16 +1923,46 @@ ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec,
        update_sizing_buttons (ev_window);
 }
 
        update_sizing_buttons (ev_window);
 }
 
+static char *
+build_comments_string (void)
+{
+       PopplerBackend backend;
+       const char *backend_name;
+       const char *version;
+
+       backend = poppler_get_backend ();
+       version = poppler_get_version ();
+       switch (backend) {
+               case POPPLER_BACKEND_CAIRO:
+                       backend_name = "cairo";
+                       break;
+               case POPPLER_BACKEND_SPLASH:
+                       backend_name = "splash";
+                       break;
+               default:
+                       backend_name = "unknown";
+                       break;
+       }
+
+       return g_strdup_printf (_("PostScript and PDF File Viewer.\n"
+                                 "Using poppler %s (%s)"),
+                               version, backend_name);
+}
+
 static void
 ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window)
 {
        const char *authors[] = {
 static void
 ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window)
 {
        const char *authors[] = {
-               N_("Many..."),
+               "Martin Kretzschmar <m_kretzschmar@gmx.net>",
+               "Jonathan Blandford <jrb@gnome.org>",
+               "Marco Pesenti Gritti <marco@gnome.org>",
+               "Nickolay V. Shmyrev <nshmyrev@yandex.ru>",
+               "Bryan Clark <clarkbw@gnome.org>",
                NULL
        };
 
        const char *documenters[] = {
                NULL
        };
 
        const char *documenters[] = {
-               N_("Not so many..."),
+               "Nickolay V. Shmyrev <nshmyrev@yandex.ru>",
                NULL
        };
 
                NULL
        };
 
@@ -1962,6 +1981,7 @@ ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window)
        };
 
        char *license_trans;
        };
 
        char *license_trans;
+       char *comments;
 
 #ifdef ENABLE_NLS
        const char **p;
 
 #ifdef ENABLE_NLS
        const char **p;
@@ -1975,6 +1995,7 @@ ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window)
 
        license_trans = g_strconcat (_(license[0]), "\n", _(license[1]), "\n",
                                     _(license[2]), "\n", NULL);
 
        license_trans = g_strconcat (_(license[0]), "\n", _(license[1]), "\n",
                                     _(license[2]), "\n", NULL);
+       comments = build_comments_string ();
 
        gtk_show_about_dialog (
                GTK_WINDOW (ev_window),
 
        gtk_show_about_dialog (
                GTK_WINDOW (ev_window),
@@ -1984,12 +2005,13 @@ ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window)
                _("\xc2\xa9 1996-2004 The Evince authors"),
                "license", license_trans,
                "website", "http://www.gnome.org/projects/evince",
                _("\xc2\xa9 1996-2004 The Evince authors"),
                "license", license_trans,
                "website", "http://www.gnome.org/projects/evince",
-               "comments", _("PostScript and PDF File Viewer."),
+               "comments", comments,
                "authors", authors,
                "documenters", documenters,
                "translator-credits", _("translator-credits"),
                NULL);
 
                "authors", authors,
                "documenters", documenters,
                "translator-credits", _("translator-credits"),
                NULL);
 
+       g_free (comments);
        g_free (license_trans);
 }
 
        g_free (license_trans);
 }
 
@@ -2146,21 +2168,6 @@ find_bar_close_cb (EggFindBar *find_bar,
        update_chrome_flag (ev_window, EV_CHROME_FINDBAR, NULL, FALSE);
 }
 
        update_chrome_flag (ev_window, EV_CHROME_FINDBAR, NULL, FALSE);
 }
 
-static void
-ev_window_page_mode_cb (GtkRadioAction *action,
-                       GtkRadioAction *activated_action,
-                       EvWindow       *window)
-{
-       int mode;
-
-       mode = gtk_radio_action_get_current_value (action);
-
-       g_assert (mode == PAGE_MODE_CONTINUOUS_PAGE ||
-                 mode == PAGE_MODE_SINGLE_PAGE);
-
-       ev_window_set_page_mode (window, (EvWindowPageMode) mode);
-}
-
 static void
 find_bar_search_changed_cb (EggFindBar *find_bar,
                            GParamSpec *param,
 static void
 find_bar_search_changed_cb (EggFindBar *find_bar,
                            GParamSpec *param,
@@ -2356,18 +2363,15 @@ static const GtkActionEntry entries[] = {
         { "ViewZoomOut", GTK_STOCK_ZOOM_OUT, NULL, "<control>minus",
           N_("Shrink the document"),
           G_CALLBACK (ev_window_cmd_view_zoom_out) },
         { "ViewZoomOut", GTK_STOCK_ZOOM_OUT, NULL, "<control>minus",
           N_("Shrink the document"),
           G_CALLBACK (ev_window_cmd_view_zoom_out) },
-        { "ViewNormalSize", GTK_STOCK_ZOOM_100, NULL, "<control>0",
-          N_("Reset the zoom level to the default value"),
-          G_CALLBACK (ev_window_cmd_view_normal_size) },
         { "ViewReload", GTK_STOCK_REFRESH, N_("_Reload"), "<control>R",
           N_("Reload the document"),
           G_CALLBACK (ev_window_cmd_view_reload) },
 
         /* Go menu */
         { "ViewReload", GTK_STOCK_REFRESH, N_("_Reload"), "<control>R",
           N_("Reload the document"),
           G_CALLBACK (ev_window_cmd_view_reload) },
 
         /* Go menu */
-        { "GoPreviousPage", GTK_STOCK_GO_BACK, N_("_Previous Page"), "Page_Up",
+        { "GoPreviousPage", GTK_STOCK_GO_BACK, N_("_Previous Page"), "<control>Page_Up",
           N_("Go to the previous page"),
           G_CALLBACK (ev_window_cmd_go_previous_page) },
           N_("Go to the previous page"),
           G_CALLBACK (ev_window_cmd_go_previous_page) },
-        { "GoNextPage", GTK_STOCK_GO_FORWARD, N_("_Next Page"), "Page_Down",
+        { "GoNextPage", GTK_STOCK_GO_FORWARD, N_("_Next Page"), "<control>Page_Down",
           N_("Go to the next page"),
           G_CALLBACK (ev_window_cmd_go_next_page) },
         { "GoFirstPage", GTK_STOCK_GOTO_FIRST, N_("_First Page"), "<control>Home",
           N_("Go to the next page"),
           G_CALLBACK (ev_window_cmd_go_next_page) },
         { "GoFirstPage", GTK_STOCK_GOTO_FIRST, N_("_First Page"), "<control>Home",
@@ -2397,6 +2401,12 @@ static const GtkActionEntry entries[] = {
         { "Slash", GTK_STOCK_FIND, NULL, "slash",
           N_("Find a word or phrase in the document"),
           G_CALLBACK (ev_window_cmd_edit_find) },
         { "Slash", GTK_STOCK_FIND, NULL, "slash",
           N_("Find a word or phrase in the document"),
           G_CALLBACK (ev_window_cmd_edit_find) },
+        { "PageDown", NULL, "", "Page_Down",
+          N_("Scroll one page forward"),
+          G_CALLBACK (ev_window_cmd_scroll_forward) },
+        { "PageUp", NULL, "", "Page_Up",
+          N_("Scroll one page backward"),
+          G_CALLBACK (ev_window_cmd_scroll_backward) },
         { "Space", NULL, "", "space",
           N_("Scroll one page forward"),
           G_CALLBACK (ev_window_cmd_scroll_forward) },
         { "Space", NULL, "", "space",
           N_("Scroll one page forward"),
           G_CALLBACK (ev_window_cmd_scroll_forward) },
@@ -2446,15 +2456,6 @@ static const GtkToggleActionEntry toggle_entries[] = {
           G_CALLBACK (ev_window_cmd_view_page_width) },
 };
 
           G_CALLBACK (ev_window_cmd_view_page_width) },
 };
 
-static const GtkRadioActionEntry page_view_entries[] = {
-       { "SinglePage", GTK_STOCK_DND, N_("Single"), NULL,
-         N_("Show the document one page at a time"),
-         PAGE_MODE_SINGLE_PAGE },
-       { "ContinuousPage", GTK_STOCK_DND_MULTIPLE, N_("Multi"), NULL,
-         N_("Show the full document at once"),
-         PAGE_MODE_CONTINUOUS_PAGE }
-};
-
 static void
 drag_data_received_cb (GtkWidget *widget, GdkDragContext *context,
                       gint x, gint y, GtkSelectionData *selection_data,
 static void
 drag_data_received_cb (GtkWidget *widget, GdkDragContext *context,
                       gint x, gint y, GtkSelectionData *selection_data,
@@ -2473,6 +2474,25 @@ drag_data_received_cb (GtkWidget *widget, GdkDragContext *context,
        }
 }
 
        }
 }
 
+static void
+activate_link_cb (EvPageAction *page_action, EvLink *link, EvWindow *window)
+{
+       g_return_if_fail (EV_IS_WINDOW (window));
+
+       ev_page_cache_set_link (window->priv->page_cache, link);
+       gtk_widget_grab_focus (window->priv->view);
+}
+
+static gboolean
+activate_label_cb (EvPageAction *page_action, char *label, EvWindow *window)
+{
+       g_return_val_if_fail (EV_IS_WINDOW (window), FALSE);
+
+       gtk_widget_grab_focus (window->priv->view);
+
+       return ev_page_cache_set_page_label (window->priv->page_cache, label);
+}
+
 static void
 register_custom_actions (EvWindow *window, GtkActionGroup *group)
 {
 static void
 register_custom_actions (EvWindow *window, GtkActionGroup *group)
 {
@@ -2484,6 +2504,10 @@ register_custom_actions (EvWindow *window, GtkActionGroup *group)
                               "tooltip", _("Select Page"),
                               "visible_overflown", FALSE,
                               NULL);
                               "tooltip", _("Select Page"),
                               "visible_overflown", FALSE,
                               NULL);
+       g_signal_connect (action, "activate_link",
+                         G_CALLBACK (activate_link_cb), window);
+       g_signal_connect (action, "activate_label",
+                         G_CALLBACK (activate_label_cb), window);
        gtk_action_group_add_action (group, action);
        g_object_unref (action);
 
        gtk_action_group_add_action (group, action);
        g_object_unref (action);
 
@@ -2630,6 +2654,8 @@ static void
 set_view_actions_sensitivity (EvWindow *window, gboolean sensitive)
 {
        if (window->priv->action_group) {
 set_view_actions_sensitivity (EvWindow *window, gboolean sensitive)
 {
        if (window->priv->action_group) {
+               set_action_sensitive (window, "PageDown", sensitive);
+               set_action_sensitive (window, "PageUp", sensitive);
                set_action_sensitive (window, "Space", sensitive);
                set_action_sensitive (window, "ShiftSpace", sensitive);
                set_action_sensitive (window, "BackSpace", sensitive);
                set_action_sensitive (window, "Space", sensitive);
                set_action_sensitive (window, "ShiftSpace", sensitive);
                set_action_sensitive (window, "BackSpace", sensitive);
@@ -2673,7 +2699,7 @@ ev_window_init (EvWindow *ev_window)
 
        ev_window->priv = EV_WINDOW_GET_PRIVATE (ev_window);
 
 
        ev_window->priv = EV_WINDOW_GET_PRIVATE (ev_window);
 
-       ev_window->priv->page_mode = PAGE_MODE_SINGLE_PAGE;
+       ev_window->priv->page_mode = PAGE_MODE_DOCUMENT;
        update_window_title (NULL, NULL, ev_window);
 
        ev_window->priv->main_box = gtk_vbox_new (FALSE, 0);
        update_window_title (NULL, NULL, ev_window);
 
        ev_window->priv->main_box = gtk_vbox_new (FALSE, 0);
@@ -2688,11 +2714,6 @@ ev_window_init (EvWindow *ev_window)
        gtk_action_group_add_toggle_actions (action_group, toggle_entries,
                                             G_N_ELEMENTS (toggle_entries),
                                             ev_window);
        gtk_action_group_add_toggle_actions (action_group, toggle_entries,
                                             G_N_ELEMENTS (toggle_entries),
                                             ev_window);
-       gtk_action_group_add_radio_actions (action_group, page_view_entries,
-                                           G_N_ELEMENTS (page_view_entries),
-                                           ev_window->priv->page_mode,
-                                           G_CALLBACK (ev_window_page_mode_cb),
-                                           ev_window);
        set_action_properties (action_group);
        register_custom_actions (ev_window, action_group);
 
        set_action_properties (action_group);
        register_custom_actions (ev_window, action_group);
 
@@ -2714,7 +2735,7 @@ ev_window_init (EvWindow *ev_window)
        if (!gtk_ui_manager_add_ui_from_file (ev_window->priv->ui_manager,
                                              DATADIR"/evince-ui.xml",
                                              &error)) {
        if (!gtk_ui_manager_add_ui_from_file (ev_window->priv->ui_manager,
                                              DATADIR"/evince-ui.xml",
                                              &error)) {
-               g_message ("building menus failed: %s", error->message);
+               g_warning ("building menus failed: %s", error->message);
                g_error_free (error);
        }
 
                g_error_free (error);
        }
 
@@ -2903,8 +2924,8 @@ ev_window_init (EvWindow *ev_window)
                          G_CALLBACK (find_bar_search_changed_cb),
                          ev_window);
 
                          G_CALLBACK (find_bar_search_changed_cb),
                          ev_window);
 
-       /* Give focus to the scrolled window */
-       gtk_widget_grab_focus (ev_window->priv->scrolled_window);
+       /* Give focus to the document view */
+       gtk_widget_grab_focus (ev_window->priv->view);
 
        /* Drag and Drop */
        gtk_drag_dest_unset (GTK_WIDGET (ev_window));
 
        /* Drag and Drop */
        gtk_drag_dest_unset (GTK_WIDGET (ev_window));