GtkWidget *sidebar_attachments;
GtkWidget *sidebar_layers;
+ /* Settings */
+ GSettings *settings;
+ GSettings *last_settings;
+
/* Menubar accels */
guint menubar_accel_keyval;
GdkModifierType menubar_accel_modifier;
#define GCONF_LOCKDOWN_PRINT "/desktop/gnome/lockdown/disable_printing"
#define GCONF_LOCKDOWN_PRINT_SETUP "/desktop/gnome/lockdown/disable_print_setup"
+#define GS_SCHEMA_NAME "org.gnome.Evince"
+#define GS_OVERRIDE_RESTRICTIONS "override_restrictions"
+
#define SIDEBAR_DEFAULT_SIZE 132
#define LINKS_SIDEBAR_ID "links"
#define THUMBNAILS_SIDEBAR_ID "thumbnails"
can_find = TRUE;
}
-#ifdef WITH_GCONF
- if (has_document)
- override_restrictions = gconf_client_get_bool (ev_window->priv->gconf_client,
- GCONF_OVERRIDE_RESTRICTIONS,
- NULL);
-#endif
+ if (has_document && ev_window->priv->settings) {
+ override_restrictions =
+ g_settings_get_boolean (ev_window->priv->settings,
+ GS_OVERRIDE_RESTRICTIONS);
+ }
+
if (!override_restrictions && info && info->fields_mask & EV_DOCUMENT_INFO_PERMISSIONS) {
ok_to_print = (info->permissions & EV_DOCUMENT_PERMISSIONS_OK_TO_PRINT);
ok_to_copy = (info->permissions & EV_DOCUMENT_PERMISSIONS_OK_TO_COPY);
fullscreen_toolbar = ((priv->chrome & EV_CHROME_FULLSCREEN_TOOLBAR) != 0 ||
(priv->chrome & EV_CHROME_RAISE_TOOLBAR) != 0) && fullscreen;
findbar = (priv->chrome & EV_CHROME_FINDBAR) != 0;
- sidebar = (priv->chrome & EV_CHROME_SIDEBAR) != 0 && !presentation;
+ sidebar = (priv->chrome & EV_CHROME_SIDEBAR) != 0 && priv->document && !presentation;
set_widget_visibility (priv->menubar, menubar);
set_widget_visibility (priv->toolbar, toolbar);
EvChrome chrome = EV_CHROME_NORMAL;
gboolean show_toolbar;
- if (window->priv->metadata &&
- ev_metadata_get_boolean (window->priv->metadata, "show_toolbar", &show_toolbar)) {
+ if (window->priv->document) {
+ if (!window->priv->metadata ||
+ !ev_metadata_get_boolean (window->priv->metadata, "show_toolbar", &show_toolbar)) {
+ show_toolbar = g_settings_get_boolean (window->priv->last_settings, "show-toolbar");
+ }
+
if (!show_toolbar)
chrome &= ~EV_CHROME_TOOLBAR;
}
+
window->priv->chrome = chrome;
}
}
}
- if (ev_metadata_get_boolean (window->priv->metadata, "sidebar_visibility", &sidebar_visibility)) {
- update_chrome_flag (window, EV_CHROME_SIDEBAR, sidebar_visibility);
- update_chrome_visibility (window);
- }
+ if (!ev_metadata_get_boolean (window->priv->metadata, "sidebar_visibility", &sidebar_visibility))
+ sidebar_visibility = g_settings_get_boolean (window->priv->last_settings, "show-sidebar");
+
+ update_chrome_flag (window, EV_CHROME_SIDEBAR, sidebar_visibility);
+ update_chrome_visibility (window);
}
static void
ev_metadata_get_int (window->priv->metadata, "window_height", &height))
return; /* size was already set in setup_size_from_metadata */
- if (ev_metadata_get_double (window->priv->metadata, "window_width_ratio", &width_ratio) &&
- ev_metadata_get_double (window->priv->metadata, "window_height_ratio", &height_ratio)) {
+ g_settings_get (window->priv->last_settings, "window-ratio", "(dd)", &width_ratio, &height_ratio);
+ if (width_ratio > 0. && height_ratio > 0.) {
gdouble document_width;
gdouble document_height;
GdkScreen *screen;
ev_job_scheduler_push_job (ev_window->priv->thumbnail_job, EV_JOB_PRIORITY_NONE);
}
+static void
+override_restrictions_changed (GSettings *settings,
+ gchar *key,
+ EvWindow *ev_window)
+{
+ ev_window_setup_action_sensitivity (ev_window);
+}
+
#ifdef WITH_GCONF
static void
lockdown_changed (GConfClient *client,
ev_window_title_set_document (ev_window->priv->title, document);
ev_window_title_set_uri (ev_window->priv->title, ev_window->priv->uri);
+ ev_window->priv->settings = g_settings_new (GS_SCHEMA_NAME);
+ g_signal_connect (ev_window->priv->settings,
+ "changed::"GS_OVERRIDE_RESTRICTIONS,
+ G_CALLBACK (override_restrictions_changed),
+ ev_window);
+
#ifdef WITH_GCONF
if (!ev_window->priv->gconf_client)
ev_window->priv->gconf_client = gconf_client_get_default ();
GCONF_LOCKDOWN_DIR,
GCONF_CLIENT_PRELOAD_ONELEVEL,
NULL);
- gconf_client_add_dir (ev_window->priv->gconf_client,
- GCONF_OVERRIDE_RESTRICTIONS,
- GCONF_CLIENT_PRELOAD_NONE,
- NULL);
gconf_client_notify_add (ev_window->priv->gconf_client,
GCONF_LOCKDOWN_DIR,
(GConfClientNotifyFunc)lockdown_changed,
ev_window, NULL, NULL);
- gconf_client_notify_add (ev_window->priv->gconf_client,
- GCONF_OVERRIDE_RESTRICTIONS,
- (GConfClientNotifyFunc)lockdown_changed,
- ev_window, NULL, NULL);
#endif /* WITH_GCONF */
ev_window_setup_action_sensitivity (ev_window);
update_chrome_visibility (ev_window);
if (ev_window->priv->metadata)
ev_metadata_set_boolean (ev_window->priv->metadata, "show_toolbar", active);
+ if (ev_window->priv->document)
+ g_settings_set_boolean (ev_window->priv->last_settings, "show-toolbar", active);
}
static void
if (ev_window->priv->metadata)
ev_metadata_set_boolean (ev_window->priv->metadata, "sidebar_visibility",
visible);
+ if (ev_window->priv->document)
+ g_settings_set_boolean (ev_window->priv->last_settings, "show-sidebar", visible);
}
}
priv->recent_manager = NULL;
}
+ if (priv->settings) {
+ g_object_unref (priv->settings);
+ priv->settings = NULL;
+ }
+
+ if (priv->last_settings) {
+ g_object_unref (priv->last_settings);
+ priv->last_settings = NULL;
+ }
+
priv->recent_ui_id = 0;
if (priv->model) {
if (!ev_window_is_empty (window) && window->priv->document) {
ev_document_get_max_page_size (window->priv->document,
&document_width, &document_height);
- ev_metadata_set_double (window->priv->metadata, "window_width_ratio",
- (double)event->width / document_width);
- ev_metadata_set_double (window->priv->metadata, "window_height_ratio",
- (double)event->height / document_height);
+ g_settings_set (window->priv->last_settings, "window-ratio", "(dd)",
+ (double)event->width / document_width,
+ (double)event->height / document_height);
+
ev_metadata_set_int (window->priv->metadata, "window_x", event->x);
ev_metadata_set_int (window->priv->metadata, "window_y", event->y);
ev_metadata_set_int (window->priv->metadata, "window_width", event->width);
/* Give focus to the document view */
gtk_widget_grab_focus (ev_window->priv->view);
+ ev_window->priv->last_settings = g_settings_new (GS_SCHEMA_NAME".Default");
+
/* Set it user interface params */
ev_window_setup_recent (ev_window);