X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-window.c;h=2aaff16108973edb7c8aed0e4c27b455ce5f526b;hb=87db0f592b3ffee3043b4e701be8c8c0132e3520;hp=7ece884f214d8467bcff4b5fdf1d91e941ef0c66;hpb=4094f85bec2a1f27274e42411555fc1ede846775;p=evince.git diff --git a/shell/ev-window.c b/shell/ev-window.c index 7ece884f..2aaff161 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -91,8 +91,6 @@ #include #include -#include "totem-scrsaver.h" - #include typedef enum { @@ -153,9 +151,6 @@ struct _EvWindowPrivate { GtkWidget *fullscreen_popup; guint fullscreen_timeout_id; - /* Screensaver */ - TotemScrsaver *screensaver; - /* Popup link */ GtkWidget *view_popup; EvLink *link; @@ -270,6 +265,20 @@ static gboolean fullscreen_leave_notify_cb (GtkWidget *widget, G_DEFINE_TYPE (EvWindow, ev_window, GTK_TYPE_WINDOW) +static gdouble +ev_window_get_screen_dpi (EvWindow *ev_window) +{ + GdkScreen *screen; + gdouble xdpi, ydpi; + + screen = gtk_window_get_screen (GTK_WINDOW (ev_window)); + + xdpi = 25.4 * gdk_screen_get_width (screen) / gdk_screen_get_width_mm (screen); + ydpi = 25.4 * gdk_screen_get_height (screen) / gdk_screen_get_height_mm (screen); + + return (xdpi + ydpi) / 2.0; +} + static void ev_window_set_action_sensitive (EvWindow *ev_window, const char *name, @@ -430,6 +439,7 @@ ev_window_update_actions (EvWindow *ev_window) ZOOM_CONTROL_ACTION); real_zoom = ev_view_get_zoom (EV_VIEW (ev_window->priv->view)); + real_zoom *= 72.0 / ev_window_get_screen_dpi (ev_window); zoom = ephy_zoom_get_nearest_zoom_level (real_zoom); ephy_zoom_action_set_zoom_level (EPHY_ZOOM_ACTION (action), zoom); @@ -815,7 +825,11 @@ setup_view_from_metadata (EvWindow *window) /* Zoom */ if (ev_metadata_manager_get (uri, "zoom", &zoom, FALSE) && ev_view_get_sizing_mode (view) == EV_SIZING_FREE) { - ev_view_set_zoom (view, g_value_get_double (&zoom), FALSE); + gdouble zoom_value; + + zoom_value = g_value_get_double (&zoom); + zoom_value *= ev_window_get_screen_dpi (window) / 72.0; + ev_view_set_zoom (view, zoom_value, FALSE); g_value_unset (&zoom); } @@ -2072,7 +2086,9 @@ ev_window_cmd_file_properties (GtkAction *action, EvWindow *ev_window) GTK_WINDOW (ev_window)); } + ev_document_fc_mutex_lock (); gtk_widget_show (ev_window->priv->properties); + ev_document_fc_mutex_unlock (); } static void @@ -2302,9 +2318,11 @@ fullscreen_timeout_cb (EvWindow *window) { EvView *view = EV_VIEW (window->priv->view); - if (!view || !ev_view_get_fullscreen (EV_VIEW (view))) + if (!view || + (!ev_view_get_fullscreen (EV_VIEW (view)) && + !ev_view_get_presentation (EV_VIEW (view)))) return FALSE; - + update_chrome_flag (window, EV_CHROME_FULLSCREEN_TOOLBAR, FALSE); ev_view_hide_cursor (EV_VIEW (window->priv->view)); window->priv->fullscreen_timeout_id = 0; @@ -2557,8 +2575,8 @@ ev_window_run_presentation (EvWindow *window) window); fullscreen_set_timeout (window); - totem_scrsaver_disable (window->priv->screensaver); - + ev_application_screensaver_disable (EV_APP); + if (!ev_window_is_empty (window)) ev_metadata_manager_set_boolean (window->priv->uri, "presentation", TRUE); } @@ -2585,7 +2603,7 @@ ev_window_stop_presentation (EvWindow *window) window); fullscreen_clear_timeout (window); - totem_scrsaver_enable (window->priv->screensaver); + ev_application_screensaver_enable (EV_APP); if (!ev_window_is_empty (window)) ev_metadata_manager_set_boolean (window->priv->uri, "presentation", FALSE); @@ -3028,8 +3046,11 @@ ev_window_zoom_changed_cb (EvView *view, GParamSpec *pspec, EvWindow *ev_window) ev_window_update_actions (ev_window); if (ev_view_get_sizing_mode (view) == EV_SIZING_FREE && !ev_window_is_empty (ev_window)) { - ev_metadata_manager_set_double (ev_window->priv->uri, "zoom", - ev_view_get_zoom (view)); + gdouble zoom; + + zoom = ev_view_get_zoom (view); + zoom *= 72.0 / ev_window_get_screen_dpi (ev_window); + ev_metadata_manager_set_double (ev_window->priv->uri, "zoom", zoom); } } @@ -3128,7 +3149,7 @@ build_comments_string (void) "Using poppler %s (%s)"), version, backend_name); #else - return g_strdup_printf (_("Document Viewer.")); + return g_strdup_printf (_("Document Viewer")); #endif } @@ -3462,7 +3483,9 @@ zoom_control_changed_cb (EphyZoomAction *action, ev_view_set_sizing_mode (EV_VIEW (ev_window->priv->view), mode); if (mode == EV_SIZING_FREE) { - ev_view_set_zoom (EV_VIEW (ev_window->priv->view), zoom, FALSE); + ev_view_set_zoom (EV_VIEW (ev_window->priv->view), + zoom * ev_window_get_screen_dpi (ev_window) / 72.0, + FALSE); } } @@ -3681,7 +3704,11 @@ static const GtkActionEntry entries[] = { /* Edit menu */ { "EditCopy", GTK_STOCK_COPY, NULL, "C", NULL, G_CALLBACK (ev_window_cmd_edit_copy) }, - { "EditSelectAll", NULL, N_("Select _All"), "A", NULL, +#ifdef HAVE_GTK_RECENT + { "EditSelectAll", GTK_STOCK_SELECT_ALL, N_("Select _All"), "A", NULL, +#else + { "EditSelectAll", NULL, N_("Select _All"), "A", NULL, +#endif /* HAVE_GTK_RECENT */ G_CALLBACK (ev_window_cmd_edit_select_all) }, { "EditFind", GTK_STOCK_FIND, N_("_Find..."), "F", N_("Find a word or phrase in the document"), @@ -3866,7 +3893,7 @@ activate_link_cb (EvPageAction *page_action, EvLink *link, EvWindow *window) } static gboolean -activate_label_cb (EvPageAction *page_action, char *label, EvWindow *window) +activate_label_cb (EvPageAction *page_action, const gchar *label, EvWindow *window) { g_return_val_if_fail (EV_IS_WINDOW (window), FALSE); @@ -4652,10 +4679,6 @@ ev_window_init (EvWindow *ev_window) G_CALLBACK (drag_data_received_cb), ev_window); - /* Screensaver */ - - ev_window->priv->screensaver = totem_scrsaver_new (); - /* Set it user interface params */ ev_window_setup_recent (ev_window);