EvWindowPageMode page_mode;
EvWindowTitle *title;
EvMetadata *metadata;
+ EvMetadata *last_settings;
/* Load params */
EvLinkDest *dest;
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->metadata &&
+ ev_metadata_get_boolean (window->priv->metadata, "show_toolbar", &show_toolbar)) ||
+ ev_metadata_get_boolean (window->priv->last_settings, "show_toolbar", &show_toolbar)) {
if (!show_toolbar)
chrome &= ~EV_CHROME_TOOLBAR;
}
}
}
- if (ev_metadata_get_boolean (window->priv->metadata, "sidebar_visibility", &sidebar_visibility)) {
+ if (ev_metadata_get_boolean (window->priv->metadata, "sidebar_visibility", &sidebar_visibility) ||
+ ev_metadata_get_boolean (window->priv->last_settings, "sidebar_visibility", &sidebar_visibility)) {
update_chrome_flag (window, EV_CHROME_SIDEBAR, sidebar_visibility);
update_chrome_visibility (window);
}
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)) {
+ if (ev_metadata_get_double (window->priv->last_settings, "window_width_ratio", &width_ratio) &&
+ ev_metadata_get_double (window->priv->last_settings, "window_height_ratio", &height_ratio)) {
gdouble document_width;
gdouble document_height;
GdkScreen *screen;
update_chrome_visibility (ev_window);
if (ev_window->priv->metadata)
ev_metadata_set_boolean (ev_window->priv->metadata, "show_toolbar", active);
+ ev_metadata_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",
GTK_WIDGET_VISIBLE (ev_sidebar));
+ ev_metadata_set_boolean (ev_window->priv->last_settings, "sidebar_visibility",
+ GTK_WIDGET_VISIBLE (ev_sidebar));
}
}
priv->metadata = NULL;
}
+ if (priv->last_settings) {
+ g_object_unref (priv->last_settings);
+ priv->last_settings = NULL;
+ }
+
if (priv->setup_document_idle > 0) {
g_source_remove (priv->setup_document_idle);
priv->setup_document_idle = 0;
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",
+ ev_metadata_set_double (window->priv->last_settings, "window_width_ratio",
(double)event->width / document_width);
- ev_metadata_set_double (window->priv->metadata, "window_height_ratio",
+ ev_metadata_set_double (window->priv->last_settings, "window_height_ratio",
(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);
return toolbars_model;
}
+static void
+ev_window_create_last_settings_metadata (EvWindow *window)
+{
+ GFile *file;
+ gchar *path;
+
+ path = g_build_filename (ev_application_get_dot_dir (EV_APP, FALSE), "last_settings", NULL);
+ file = g_file_new_for_path (path);
+ g_free (path);
+
+ if (!g_file_query_exists (file, NULL)) {
+ GFileOutputStream *out;
+ GError *error = NULL;
+
+ out = g_file_create (file, G_FILE_CREATE_NONE, NULL, &error);
+ if (error) {
+ g_warning ("Error creating last_settings file: %s\n", error->message);
+ g_error_free (error);
+ g_object_unref (file);
+
+ return;
+ }
+
+ g_output_stream_close (G_OUTPUT_STREAM (out), NULL, NULL);
+ }
+
+ window->priv->last_settings = ev_metadata_new (file);
+ g_object_unref (file);
+}
+
static void
ev_window_init (EvWindow *ev_window)
{
/* Give focus to the document view */
gtk_widget_grab_focus (ev_window->priv->view);
+ /* This a workaround for regression caused by migration to
+ * gio metadata that made us loose the last used settings.
+ * We use a dummy file just to store last used settings */
+ ev_window_create_last_settings_metadata (ev_window);
+
/* Set it user interface params */
ev_window_setup_recent (ev_window);