]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
[windows] Make comics backend also compile on Windows
[evince.git] / shell / ev-window.c
index 337a587e553bf2b628dbb24a7c6f84de8226cea2..bee7d341b506e1543e6da22523c5c655f7343ac8 100644 (file)
@@ -431,6 +431,11 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window)
        ev_window_set_action_sensitive (ev_window, ZOOM_CONTROL_ACTION,  has_pages);
        ev_window_set_action_sensitive (ev_window, NAVIGATION_ACTION,  FALSE);
 
+        /* Help menu */
+#ifdef G_OS_WIN32
+       ev_window_set_action_sensitive (ev_window, "HelpContents", FALSE);
+#endif
+
         ev_window_update_actions (ev_window);
 }
 
@@ -1153,10 +1158,11 @@ ev_window_set_icon_from_thumbnail (EvJobThumbnail *job,
 }
 
 static void
-ev_window_refresh_window_thumbnail (EvWindow *ev_window, int rotation)
+ev_window_refresh_window_thumbnail (EvWindow *ev_window)
 {
        gdouble page_width;
        gdouble scale;
+       gint rotation;
        EvDocument *document = ev_window->priv->document;
 
        if (!EV_IS_DOCUMENT_THUMBNAILS (document) ||
@@ -1169,6 +1175,7 @@ ev_window_refresh_window_thumbnail (EvWindow *ev_window, int rotation)
 
        ev_document_get_page_size (document, 0, &page_width, NULL);
        scale = 128. / page_width;
+       rotation = ev_document_model_get_rotation (ev_window->priv->model);
 
        ev_window->priv->thumbnail_job = ev_job_thumbnail_new (document, 0, rotation, scale);
        g_signal_connect (ev_window->priv->thumbnail_job, "finished",
@@ -1197,7 +1204,7 @@ ev_window_setup_document (EvWindow *ev_window)
 
        ev_window->priv->setup_document_idle = 0;
        
-       ev_window_refresh_window_thumbnail (ev_window, 0);
+       ev_window_refresh_window_thumbnail (ev_window);
 
        ev_window_set_page_mode (ev_window, PAGE_MODE_DOCUMENT);
        ev_window_title_set_document (ev_window->priv->title, document);
@@ -4181,7 +4188,7 @@ ev_window_rotation_changed_cb (EvDocumentModel *model,
                ev_metadata_set_int (window->priv->metadata, "rotation",
                                     rotation);
 
-       ev_window_refresh_window_thumbnail (window, rotation);
+       ev_window_refresh_window_thumbnail (window);
 }
 
 static void
@@ -4204,7 +4211,6 @@ ev_window_inverted_colors_changed_cb (EvDocumentModel *model,
                                      EvWindow        *window)
 {
        gboolean inverted_colors = ev_document_model_get_inverted_colors (model);
-       gint rotation = ev_document_model_get_rotation (model);
 
        ev_window_update_inverted_colors_action (window);
 
@@ -4212,7 +4218,7 @@ ev_window_inverted_colors_changed_cb (EvDocumentModel *model,
                ev_metadata_set_boolean (window->priv->metadata, "inverted-colors",
                                         inverted_colors);
 
-       ev_window_refresh_window_thumbnail (window, rotation);
+       ev_window_refresh_window_thumbnail (window);
 }
 
 static void
@@ -5593,18 +5599,35 @@ launch_external_uri (EvWindow *window, EvLinkAction *action)
 
        if (!g_strstr_len (uri, strlen (uri), "://") &&
            !g_str_has_prefix (uri, "mailto:")) {
-               gchar *http;
-               
-               /* Not a valid uri, assuming it's http */
-               http = g_strdup_printf ("http://%s", uri);
-               ret = g_app_info_launch_default_for_uri (http, context, &error);
-               g_free (http);
+               gchar *new_uri;
+
+               /* Not a valid uri, assume http if it starts with www */
+               if (g_str_has_prefix (uri, "www.")) {
+                       new_uri = g_strdup_printf ("http://%s", uri);
+               } else {
+                       GFile *file, *parent;
+
+                       file = g_file_new_for_uri (window->priv->uri);
+                       parent = g_file_get_parent (file);
+                       g_object_unref (file);
+                       if (parent) {
+                               gchar *parent_uri = g_file_get_uri (parent);
+
+                               new_uri = g_build_filename (parent_uri, uri, NULL);
+                               g_free (parent_uri);
+                               g_object_unref (parent);
+                       } else {
+                               new_uri = g_strdup_printf ("file:///%s", uri);
+                       }
+               }
+               ret = g_app_info_launch_default_for_uri (new_uri, context, &error);
+               g_free (new_uri);
        } else {
                ret = g_app_info_launch_default_for_uri (uri, context, &error);
        }
-       
+
        if (ret == FALSE) {
-               ev_window_error_message (window, error, 
+               ev_window_error_message (window, error,
                                         "%s", _("Unable to open external link"));
                g_error_free (error);
        }
@@ -6121,6 +6144,7 @@ ev_window_init (EvWindow *ev_window)
        GtkAccelGroup *accel_group;
        GError *error = NULL;
        GtkWidget *sidebar_widget;
+       GtkWidget *menuitem;
        EggToolbarsModel *toolbars_model;
        GObject *mpkeys;
        gchar *ui_path;
@@ -6215,6 +6239,12 @@ ev_window_init (EvWindow *ev_window)
        gtk_box_pack_start (GTK_BOX (ev_window->priv->main_box),
                            ev_window->priv->menubar,
                            FALSE, FALSE, 0);
+       menuitem = gtk_ui_manager_get_widget (ev_window->priv->ui_manager,
+                                             "/MainMenu/EditMenu/EditRotateLeftMenu");
+       gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
+       menuitem = gtk_ui_manager_get_widget (ev_window->priv->ui_manager,
+                                             "/MainMenu/EditMenu/EditRotateRightMenu");
+       gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
 
        toolbars_model = get_toolbars_model ();
        ev_window->priv->toolbar = GTK_WIDGET