]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Fix several history bugs
[evince.git] / shell / ev-window.c
index 5b1375cc78eaa77e34b15e1d38c12d7cecaabc9e..64b80c33abdd79d5002eea9572012af1d383b783 100644 (file)
@@ -32,7 +32,7 @@
 #include "ev-navigation-action.h"
 #include "ev-page-action.h"
 #include "ev-sidebar.h"
-#include "ev-sidebar-bookmarks.h"
+#include "ev-sidebar-links.h"
 #include "ev-sidebar-thumbnails.h"
 #include "ev-view.h"
 #include "ev-print-job.h"
@@ -190,6 +190,12 @@ update_action_sensitivity (EvWindow *ev_window)
        set_action_sensitive (ev_window, "GoLastPage", page < n_pages);
 }
 
+void
+ev_window_open_link (EvWindow *ev_window, EvLink *link)
+{
+       ev_view_go_to_link (EV_VIEW (ev_window->priv->view), link);
+}
+
 gboolean
 ev_window_is_empty (const EvWindow *ev_window)
 {
@@ -545,8 +551,10 @@ ev_window_print (EvWindow *ev_window)
                                
        gtk_widget_destroy (print_dialog);
 
-       if (print_job != NULL)
+       if (print_job != NULL) {
                ev_print_job_print (print_job, GTK_WINDOW (ev_window));
+               g_object_unref (print_job);
+       }
 }
 
 static void
@@ -583,6 +591,14 @@ find_not_supported_dialog (EvWindow   *ev_window)
        gtk_widget_destroy (dialog);
 }
 
+static void
+ev_window_cmd_edit_select_all (GtkAction *action, EvWindow *ev_window)
+{
+       g_return_if_fail (EV_IS_WINDOW (ev_window));
+
+       ev_view_select_all (EV_VIEW (ev_window->priv->view));
+}
+
 static void
 ev_window_cmd_edit_find (GtkAction *action, EvWindow *ev_window)
 {
@@ -607,7 +623,7 @@ ev_window_cmd_edit_copy (GtkAction *action, EvWindow *ev_window)
 {
         g_return_if_fail (EV_IS_WINDOW (ev_window));
 
-        /* FIXME */
+       ev_view_copy (EV_VIEW (ev_window->priv->view));
 }
 
 static void
@@ -856,7 +872,7 @@ ev_window_cmd_go_back (GtkAction *action, EvWindow *ev_window)
 {
         g_return_if_fail (EV_IS_WINDOW (ev_window));
 
-        /* FIXME */
+       ev_view_go_back (EV_VIEW (ev_window->priv->view));
 }
 
 static void
@@ -864,7 +880,7 @@ ev_window_cmd_go_forward (GtkAction *action, EvWindow *ev_window)
 {
         g_return_if_fail (EV_IS_WINDOW (ev_window));
 
-        /* FIXME */
+       ev_view_go_forward (EV_VIEW (ev_window->priv->view));
 }
 
 static void
@@ -1239,7 +1255,9 @@ static GtkActionEntry entries[] = {
         { "EditCopy", GTK_STOCK_COPY, N_("_Copy"), "<control>C",
           N_("Copy text from the document"),
           G_CALLBACK (ev_window_cmd_edit_copy) },
-        
+       { "EditSelectAll", NULL, N_("Select _All"), "<control>A",
+         N_("Select the entire page"),
+         G_CALLBACK (ev_window_cmd_edit_select_all) }, 
         { "EditFind", GTK_STOCK_FIND, N_("_Find"), "<control>F",
           N_("Find a word or phrase in the document"),
           G_CALLBACK (ev_window_cmd_edit_find) },
@@ -1311,8 +1329,11 @@ static GtkToggleActionEntry toggle_entries[] = {
 static void
 goto_page_cb (GtkAction *action, int page_number, EvWindow *ev_window)
 {
+       EvView *view = EV_VIEW (ev_window->priv->view);
 
-       ev_view_set_page (EV_VIEW (ev_window->priv->view), page_number);
+       if (ev_view_get_page (view) != page_number) {
+               ev_view_set_page (view, page_number);
+       }
 }
 
 static void
@@ -1329,6 +1350,8 @@ register_custom_actions (EvWindow *window, GtkActionGroup *group)
                               "direction", EV_NAVIGATION_DIRECTION_BACK,
                               "is_important", TRUE,
                               NULL);
+       g_signal_connect (action, "activate",
+                         G_CALLBACK (ev_window_cmd_go_back), window);
        gtk_action_group_add_action (group, action);
        g_object_unref (action);
 
@@ -1340,6 +1363,8 @@ register_custom_actions (EvWindow *window, GtkActionGroup *group)
                               "arrow-tooltip", _("Forward history"),
                               "direction", EV_NAVIGATION_DIRECTION_FORWARD,
                               NULL);
+       g_signal_connect (action, "activate",
+                         G_CALLBACK (ev_window_cmd_go_forward), window);
        gtk_action_group_add_action (group, action);
        g_object_unref (action);
 
@@ -1427,11 +1452,11 @@ ev_window_init (EvWindow *ev_window)
                        ev_window->priv->sidebar);
 
        /* Stub sidebar, for now */
-       sidebar_widget = ev_sidebar_bookmarks_new ();
+       sidebar_widget = ev_sidebar_links_new ();
        gtk_widget_show (sidebar_widget);
        ev_sidebar_add_page (EV_SIDEBAR (ev_window->priv->sidebar),
-                            "bookmarks",
-                            _("Bookmarks"),
+                            "index",
+                            _("Index"),
                             sidebar_widget);
 
        sidebar_widget = ev_sidebar_thumbnails_new ();