/* Session */ gboolean ev_application_load_session (EvApplication *application) { GKeyFile *state_file; gchar *uri; #ifdef WITH_SMCLIENT if (egg_sm_client_is_resumed (application->smclient)) { state_file = egg_sm_client_get_state_file (application->smclient); if (!state_file) return FALSE; } else #endif /* WITH_SMCLIENT */ return FALSE; uri = g_key_file_get_string (state_file, "Atril", "uri", NULL); if (!uri) return FALSE; ev_application_open_uri_at_dest (application, uri, gdk_screen_get_default (), NULL, 0, NULL, GDK_CURRENT_TIME); g_free (uri); g_key_file_free (state_file); return TRUE; }
static void fr_restore_session (EggSMClient *client) { GKeyFile *state = NULL; guint i; state = egg_sm_client_get_state_file (client); i = g_key_file_get_integer (state, "Session", "archives", NULL); for (; i > 0; i--) { GtkWidget *window; char *key; char *uri; key = g_strdup_printf ("archive%d", i); uri = g_key_file_get_string (state, "Session", key, NULL); window = fr_window_new (); if (strlen (uri) > 0) { GFile *file; file = g_file_new_for_uri (uri); fr_window_archive_open (FR_WINDOW (window), file, GTK_WINDOW (window)); g_object_unref (file); } g_free (uri); g_free (key); } }