[Xfce4-commits] [xfce/xfce4-session] 01/08: Show saved sessions in settings dialog
noreply at xfce.org
noreply at xfce.org
Mon May 13 22:10:40 CEST 2019
This is an automated email from the git hooks/post-receive script.
o c h o s i p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository xfce/xfce4-session.
commit 38b5353a1b682cb5d88a779e3d46fa24d852db69
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date: Sat May 11 00:12:01 2019 +0200
Show saved sessions in settings dialog
---
libxfsm/xfsm-util.c | 181 +++++++++++++++++++++++++++++++++++++
libxfsm/xfsm-util.h | 32 +++++++
settings/main.c | 34 ++++++-
settings/session-editor.c | 33 ++++++-
settings/xfce4-session-settings.ui | 50 +++++++++-
xfce4-session/xfsm-chooser.c | 67 +-------------
xfce4-session/xfsm-chooser.h | 8 --
xfce4-session/xfsm-global.c | 25 -----
xfce4-session/xfsm-global.h | 2 -
xfce4-session/xfsm-manager.c | 40 +-------
10 files changed, 326 insertions(+), 146 deletions(-)
diff --git a/libxfsm/xfsm-util.c b/libxfsm/xfsm-util.c
index 48f77fe..c418920 100644
--- a/libxfsm/xfsm-util.c
+++ b/libxfsm/xfsm-util.c
@@ -201,3 +201,184 @@ xfsm_gdk_display_get_fullname (GdkDisplay *display)
return g_strdup (buffer);
}
+
+GdkPixbuf *
+xfsm_load_session_preview (const gchar *name)
+{
+ GdkDisplay *display;
+ GdkPixbuf *pb = NULL;
+ gchar *display_name;
+ gchar *filename;
+ gchar *path;
+
+ /* determine thumb file */
+ display = gdk_display_get_default ();
+ display_name = xfsm_gdk_display_get_fullname (display);
+ path = g_strconcat ("sessions/thumbs-", display_name, "/", name, ".png", NULL);
+ filename = xfce_resource_lookup (XFCE_RESOURCE_CACHE, path);
+ g_free (display_name);
+ g_free (path);
+
+ if (filename != NULL)
+ pb = gdk_pixbuf_new_from_file (filename, NULL);
+ g_free (filename);
+
+ return pb;
+}
+
+XfceRc *
+settings_list_sessions_open_rc (void)
+{
+ XfceRc *rc;
+ gchar *display_name;
+ gchar *resource_name;
+ gchar *session_file;
+
+ display_name = xfsm_gdk_display_get_fullname (gdk_display_get_default ());
+ resource_name = g_strconcat ("sessions/xfce4-session-", display_name, NULL);
+ session_file = xfce_resource_save_location (XFCE_RESOURCE_CACHE, resource_name, TRUE);
+ g_free (resource_name);
+ g_free (display_name);
+
+ if (!g_file_test (session_file, G_FILE_TEST_IS_REGULAR))
+ {
+ g_warning ("xfsm_manager_load_session: Something wrong with %s, Does it exist? Permissions issue?", session_file);
+ return FALSE;
+ }
+
+ rc = xfce_rc_simple_open (session_file, FALSE);
+ if (G_UNLIKELY (rc == NULL))
+ {
+ g_warning ("xfsm_manager_load_session: unable to open %s", session_file);
+ return FALSE;
+ }
+ return rc;
+}
+
+GList *
+settings_list_sessions (XfceRc *rc)
+{
+ XfsmSessionInfo *session;
+ GdkPixbuf *preview_default = NULL;
+ GList *sessions = NULL;
+ gchar **groups;
+ gint n;
+
+ groups = xfce_rc_get_groups (rc);
+ for (n = 0; groups[n] != NULL; ++n)
+ {
+ if (strncmp (groups[n], "Session: ", 9) == 0)
+ {
+ xfce_rc_set_group (rc, groups[n]);
+ session = g_new0 (XfsmSessionInfo, 1);
+ session->name = g_strdup (groups[n] + 9);
+ session->atime = xfce_rc_read_int_entry (rc, "LastAccess", 0);
+ session->preview = xfsm_load_session_preview (session->name);
+
+ if (session->preview == NULL)
+ {
+ if (G_UNLIKELY (preview_default == NULL))
+ {
+ preview_default = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
+ "xfce4-logo", 64,
+ GTK_ICON_LOOKUP_GENERIC_FALLBACK, NULL);
+ }
+
+ session->preview = GDK_PIXBUF (g_object_ref (preview_default));
+ }
+
+ sessions = g_list_append (sessions, session);
+ }
+ }
+
+ if (preview_default != NULL)
+ g_object_unref (preview_default);
+
+ g_strfreev (groups);
+
+ return sessions;
+}
+
+void
+settings_list_sessions_treeview_init (GtkTreeView *treeview)
+{
+ GtkTreeSelection *selection;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+ GtkListStore *model;
+
+ model = gtk_list_store_new (N_COLUMNS,
+ GDK_TYPE_PIXBUF,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_INT);
+
+ gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), GTK_TREE_MODEL (model));
+ g_object_unref (G_OBJECT (model));
+
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), TRUE);
+ column = gtk_tree_view_column_new ();
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "pixbuf", PREVIEW_COLUMN,
+ NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+ column = gtk_tree_view_column_new ();
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_set_title (column, _("Session"));
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_expand (column, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "markup", TITLE_COLUMN,
+ NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+ column = gtk_tree_view_column_new ();
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_set_alignment (column, 1.0);
+ gtk_tree_view_column_set_title (column, _("Last accessed"));
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "text", ACCESSED_COLUMN,
+ NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+}
+
+void
+settings_list_sessions_populate (GtkTreeModel *model,
+ GList *sessions)
+{
+ XfsmSessionInfo *session;
+ GtkTreeIter iter;
+ gchar *accessed;
+ gchar *title;
+ GList *lp;
+
+ gtk_list_store_clear (GTK_LIST_STORE (model));
+
+ for (lp = sessions; lp != NULL; lp = lp->next)
+ {
+ session = (XfsmSessionInfo *) lp->data;
+
+ title = g_strdup_printf ("<b>%s</b>", session->name);
+ accessed = g_strstrip (g_strdup (ctime (&session->atime)));
+
+ gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ PREVIEW_COLUMN, session->preview,
+ NAME_COLUMN, session->name,
+ TITLE_COLUMN, title,
+ ACCESSED_COLUMN, accessed,
+ ATIME_COLUMN, session->atime,
+ -1);
+
+ g_free (accessed);
+ g_free (title);
+ }
+}
diff --git a/libxfsm/xfsm-util.h b/libxfsm/xfsm-util.h
index 9d545fc..86d7668 100644
--- a/libxfsm/xfsm-util.h
+++ b/libxfsm/xfsm-util.h
@@ -31,6 +31,28 @@
G_BEGIN_DECLS;
+#define DEFAULT_SESSION_NAME "Default"
+
+typedef struct _XfsmSessionInfo XfsmSessionInfo;
+
+struct _XfsmSessionInfo
+{
+ gchar *name; /* name of the session */
+ time_t atime; /* last access time */
+ GdkPixbuf *preview; /* preview icon (52x42) */
+};
+
+enum
+{
+ PREVIEW_COLUMN,
+ NAME_COLUMN,
+ TITLE_COLUMN,
+ ACCESSED_COLUMN,
+ ATIME_COLUMN,
+ N_COLUMNS,
+};
+
+
gboolean xfsm_start_application (gchar **command,
gchar **environment,
GdkScreen *screen,
@@ -49,6 +71,16 @@ XfconfChannel *xfsm_open_config (void);
gchar *xfsm_gdk_display_get_fullname (GdkDisplay *display);
+GdkPixbuf *xfsm_load_session_preview (const gchar *name);
+
+XfceRc *settings_list_sessions_open_rc (void);
+
+GList *settings_list_sessions (XfceRc *rc);
+
+void settings_list_sessions_treeview_init (GtkTreeView *treeview);
+
+void settings_list_sessions_populate (GtkTreeModel *model,
+ GList *sessions);
G_END_DECLS;
diff --git a/settings/main.c b/settings/main.c
index cd488c7..720cec1 100644
--- a/settings/main.c
+++ b/settings/main.c
@@ -33,6 +33,8 @@
#include <libxfce4util/libxfce4util.h>
#include <libxfce4ui/libxfce4ui.h>
+#include <libxfsm/xfsm-util.h>
+
#include "xfae-window.h"
#include "xfce4-session-settings-common.h"
#include "xfce4-session-settings_ui.h"
@@ -49,6 +51,26 @@ static void xfce4_session_settings_dialog_response (GtkDialog *dialog, gint resp
}
}
+static void
+xfce4_session_settings_show_saved_sessions (GtkBuilder *builder,
+ XfceRc *rc,
+ gboolean visible)
+{
+ GtkWidget *notebook = GTK_WIDGET (gtk_builder_get_object (builder, "plug-child"));
+ GtkWidget *sessions_treeview = GTK_WIDGET (gtk_builder_get_object (builder, "saved-sessions-list"));
+ GtkTreeModel *model;
+ GList *sessions;
+
+ gtk_widget_set_visible (gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 3), visible);
+ if (visible == FALSE)
+ return;
+
+ settings_list_sessions_treeview_init (GTK_TREE_VIEW (sessions_treeview));
+ sessions = settings_list_sessions (rc);
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (sessions_treeview));
+ settings_list_sessions_populate (model, sessions);
+}
+
int
main(int argc,
char **argv)
@@ -59,6 +81,8 @@ main(int argc,
GtkWidget *lbl;
GError *error = NULL;
XfconfChannel *channel;
+ XfceRc *rc;
+ gboolean visible;
Window opt_socket_id = 0;
gboolean opt_version = FALSE;
@@ -125,6 +149,8 @@ main(int argc,
session_editor_init(builder);
+ channel = xfconf_channel_get (SETTINGS_CHANNEL);
+
/* FIXME: someday, glade-ify this, maybe. */
xfae_page = xfae_window_new();
gtk_widget_show(xfae_page);
@@ -133,7 +159,13 @@ main(int argc,
gtk_widget_show(lbl);
gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), xfae_page, lbl, 1);
- channel = xfconf_channel_get(SETTINGS_CHANNEL);
+ /* Check if there are saved sessions and if so, show the "Saved Sessions" tab */
+ rc = settings_list_sessions_open_rc ();
+ if (rc)
+ visible = TRUE;
+ else
+ visible = FALSE;
+ xfce4_session_settings_show_saved_sessions (builder, rc, visible);
/* bind widgets to xfconf */
xfconf_g_property_bind(channel, "/chooser/AlwaysDisplay", G_TYPE_BOOLEAN,
diff --git a/settings/session-editor.c b/settings/session-editor.c
index 8d3b809..b9dd193 100644
--- a/settings/session-editor.c
+++ b/settings/session-editor.c
@@ -33,6 +33,8 @@
#include <libxfce4util/libxfce4util.h>
#include <libxfce4ui/libxfce4ui.h>
+#include <libxfsm/xfsm-util.h>
+
#include "xfce4-session-settings-common.h"
#include "xfce4-session-marshal.h"
#include "xfsm-client-dbus-client.h"
@@ -113,9 +115,16 @@ pulse_session_save_dialog(gpointer data)
static void
session_editor_save_session(GtkWidget *btn,
- GtkWidget *dialog)
+ GtkBuilder *builder)
{
+ GtkWidget *dialog = GTK_WIDGET (gtk_builder_get_object (builder, "dialog_saving"));
+ GtkWidget *treeview = GTK_WIDGET (gtk_builder_get_object (builder, "saved-sessions-list"));
+ GtkWidget *notebook = GTK_WIDGET (gtk_builder_get_object (builder, "plug-child"));
+ GtkWidget *btn_clear = GTK_WIDGET (gtk_builder_get_object(builder, "btn_clear_sessions"));
GtkWidget *pbar = g_object_get_data(G_OBJECT(dialog), "pbar");
+ GtkTreeModel *model;
+ GList *sessions;
+ XfceRc *rc;
guint pulse_id;
guint sig_id;
GError *error = NULL;
@@ -147,6 +156,17 @@ session_editor_save_session(GtkWidget *btn,
g_signal_handler_disconnect(manager_dbus_proxy, sig_id);
gtk_widget_hide(dialog);
gtk_widget_set_sensitive(btn, TRUE);
+ /* After saving the session we ensure the clear button is sensitive */
+ gtk_widget_set_sensitive (btn_clear, TRUE);
+ /* Always make sure the "Saved Sessions" tab is visible and the treeview is populated after saving a session */
+ rc = settings_list_sessions_open_rc ();
+ if (rc)
+ {
+ gtk_widget_show (gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 3));
+ sessions = settings_list_sessions (rc);
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+ settings_list_sessions_populate (model, sessions);
+ }
}
static void
@@ -160,8 +180,10 @@ session_editor_sel_changed_btn(GtkTreeSelection *sel,
static void
session_editor_clear_sessions(GtkWidget *btn,
- GtkWidget *treeview)
+ GtkBuilder *builder)
{
+ GtkWidget *treeview = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_clients"));
+ GtkWidget *notebook = GTK_WIDGET (gtk_builder_get_object (builder, "plug-child"));
TRACE("entering");
gtk_widget_set_sensitive(btn, FALSE);
@@ -218,6 +240,9 @@ session_editor_clear_sessions(GtkWidget *btn,
g_dir_close(cache_dir);
g_free(cache_dir_path);
+
+ /* Always make sure the "Saved Sessions" tab is hidden after deleting all sessions */
+ gtk_widget_hide (gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 3));
}
else {
gtk_widget_set_sensitive(btn, TRUE);
@@ -833,11 +858,11 @@ session_editor_init(GtkBuilder *builder)
btn_save = gtk_builder_get_object(builder, "btn_save_session");
g_signal_connect(btn_save, "clicked",
- G_CALLBACK(session_editor_save_session), GTK_WIDGET(dlg_saving));
+ G_CALLBACK(session_editor_save_session), builder);
btn_clear = gtk_builder_get_object(builder, "btn_clear_sessions");
g_signal_connect(btn_clear, "clicked",
- G_CALLBACK(session_editor_clear_sessions), treeview);
+ G_CALLBACK(session_editor_clear_sessions), builder);
btn_quit = gtk_builder_get_object(builder, "btn_quit_client");
g_signal_connect(btn_quit, "clicked",
diff --git a/settings/xfce4-session-settings.ui b/settings/xfce4-session-settings.ui
index 5d513d0..d77e34a 100644
--- a/settings/xfce4-session-settings.ui
+++ b/settings/xfce4-session-settings.ui
@@ -372,7 +372,7 @@
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Sessio_n</property>
+ <property name="label" translatable="yes">Current Sessio_n</property>
<property name="use_underline">True</property>
</object>
<packing>
@@ -381,6 +381,50 @@
</packing>
</child>
<child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="saved-sessions">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="saved-sessions-list">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="reorderable">True</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Saved Sessions</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkBox" id="vbox3">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -546,7 +590,7 @@
</child>
</object>
<packing>
- <property name="position">2</property>
+ <property name="position">3</property>
</packing>
</child>
<child type="tab">
@@ -557,7 +601,7 @@
<property name="use_underline">True</property>
</object>
<packing>
- <property name="position">2</property>
+ <property name="position">3</property>
<property name="tab_fill">False</property>
</packing>
</child>
diff --git a/xfce4-session/xfsm-chooser.c b/xfce4-session/xfsm-chooser.c
index ee10135..636a957 100644
--- a/xfce4-session/xfsm-chooser.c
+++ b/xfce4-session/xfsm-chooser.c
@@ -52,16 +52,6 @@ static void xfsm_chooser_realized (GtkWidget *widget,
XfsmChooser *chooser);
-enum
-{
- PREVIEW_COLUMN,
- NAME_COLUMN,
- TITLE_COLUMN,
- ATIME_COLUMN,
- N_COLUMNS,
-};
-
-
G_DEFINE_TYPE (XfsmChooser, xfsm_chooser, GTK_TYPE_DIALOG)
@@ -72,37 +62,11 @@ xfsm_chooser_set_sessions (XfsmChooser *chooser,
GList *sessions,
const gchar *default_session)
{
- XfsmSessionInfo *session;
GtkTreeModel *model;
- GtkTreeIter iter;
- gchar *accessed;
- gchar *title;
- GList *lp;
model = gtk_tree_view_get_model (GTK_TREE_VIEW (chooser->tree));
- gtk_list_store_clear (GTK_LIST_STORE (model));
- for (lp = sessions; lp != NULL; lp = lp->next)
- {
- session = (XfsmSessionInfo *) lp->data;
-
- accessed = g_strdup_printf (_("Last accessed: %s"),
- ctime (&session->atime));
- title = g_strdup_printf ("<b><big>%s</big></b>\n"
- "<small><i>%s</i></small>",
- session->name, accessed);
-
- gtk_list_store_append (GTK_LIST_STORE (model), &iter);
- gtk_list_store_set (GTK_LIST_STORE (model), &iter,
- PREVIEW_COLUMN, session->preview,
- NAME_COLUMN, session->name,
- TITLE_COLUMN, title,
- ATIME_COLUMN, session->atime,
- -1);
-
- g_free (accessed);
- g_free (title);
- }
+ settings_list_sessions_populate (GTK_TREE_MODEL (model), sessions);
}
@@ -201,10 +165,6 @@ xfsm_chooser_class_init (XfsmChooserClass *klass)
static void
xfsm_chooser_init (XfsmChooser *chooser)
{
- GtkTreeSelection *selection;
- GtkTreeViewColumn *column;
- GtkCellRenderer *renderer;
- GtkListStore *model;
GtkWidget *button;
GtkWidget *swin;
GtkWidget *vbox;
@@ -240,33 +200,12 @@ xfsm_chooser_init (XfsmChooser *chooser)
gtk_box_pack_start (GTK_BOX (vbox), swin, TRUE, TRUE, 0);
/* tree view */
- model = gtk_list_store_new (N_COLUMNS,
- GDK_TYPE_PIXBUF,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_INT);
- chooser->tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL(model));
- g_object_unref (G_OBJECT (model));
+ chooser->tree = gtk_tree_view_new ();
+ settings_list_sessions_treeview_init (GTK_TREE_VIEW (chooser->tree));
gtk_widget_set_tooltip_text (chooser->tree,
_("Choose the session you want to restore. "
"You can simply double-click the session "
"name to restore it."));
-
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (chooser->tree), FALSE);
- column = gtk_tree_view_column_new ();
- renderer = gtk_cell_renderer_pixbuf_new ();
- gtk_tree_view_column_pack_start (column, renderer, FALSE);
- gtk_tree_view_column_set_attributes (column, renderer,
- "pixbuf", PREVIEW_COLUMN,
- NULL);
- renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (column, renderer, TRUE);
- gtk_tree_view_column_set_attributes (column, renderer,
- "markup", TITLE_COLUMN,
- NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (chooser->tree), column);
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (chooser->tree));
- gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
g_signal_connect (G_OBJECT (chooser->tree), "row-activated",
G_CALLBACK (xfsm_chooser_row_activated), chooser);
gtk_container_add (GTK_CONTAINER (swin), chooser->tree);
diff --git a/xfce4-session/xfsm-chooser.h b/xfce4-session/xfsm-chooser.h
index e8bb956..e75f60a 100644
--- a/xfce4-session/xfsm-chooser.h
+++ b/xfce4-session/xfsm-chooser.h
@@ -37,7 +37,6 @@ G_BEGIN_DECLS;
typedef struct _XfsmChooser XfsmChooser;
typedef struct _XfsmChooserClass XfsmChooserClass;
-typedef struct _XfsmSessionInfo XfsmSessionInfo;
struct _XfsmChooserClass
{
@@ -51,13 +50,6 @@ struct _XfsmChooser
GtkWidget *tree;
};
-struct _XfsmSessionInfo
-{
- gchar *name; /* name of the session */
- time_t atime; /* last access time */
- GdkPixbuf *preview; /* preview icon (52x42) */
-};
-
GType xfsm_chooser_get_type (void) G_GNUC_CONST;
void xfsm_chooser_set_sessions (XfsmChooser *chooser,
diff --git a/xfce4-session/xfsm-global.c b/xfce4-session/xfsm-global.c
index 4dd3ab1..41fdb66 100644
--- a/xfce4-session/xfsm-global.c
+++ b/xfce4-session/xfsm-global.c
@@ -174,31 +174,6 @@ xfsm_generate_client_id (SmsConn sms_conn)
}
-GdkPixbuf *
-xfsm_load_session_preview (const gchar *name)
-{
- GdkDisplay *display;
- GdkPixbuf *pb = NULL;
- gchar *display_name;
- gchar *filename;
- gchar *path;
-
- /* determine thumb file */
- display = gdk_display_get_default ();
- display_name = xfsm_gdk_display_get_fullname (display);
- path = g_strconcat ("sessions/thumbs-", display_name, "/", name, ".png", NULL);
- filename = xfce_resource_lookup (XFCE_RESOURCE_CACHE, path);
- g_free (display_name);
- g_free (path);
-
- if (filename != NULL)
- pb = gdk_pixbuf_new_from_file (filename, NULL);
- g_free (filename);
-
- return pb;
-}
-
-
GValue *
xfsm_g_value_new (GType gtype)
{
diff --git a/xfce4-session/xfsm-global.h b/xfce4-session/xfsm-global.h
index 78131bc..abda5e7 100644
--- a/xfce4-session/xfsm-global.h
+++ b/xfce4-session/xfsm-global.h
@@ -69,8 +69,6 @@ void xfsm_verbose_real (const char *func,
gchar *xfsm_generate_client_id (SmsConn sms_conn) G_GNUC_PURE;
-GdkPixbuf *xfsm_load_session_preview (const gchar *name);
-
GValue *xfsm_g_value_new (GType gtype);
void xfsm_g_value_free (GValue *value);
diff --git a/xfce4-session/xfsm-manager.c b/xfce4-session/xfsm-manager.c
index 14b74a8..3d12e2f 100644
--- a/xfce4-session/xfsm-manager.c
+++ b/xfce4-session/xfsm-manager.c
@@ -67,9 +67,6 @@
#include <xfce4-session/xfsm-logout-dialog.h>
-#define DEFAULT_SESSION_NAME "Default"
-
-
struct _XfsmManager
{
XfsmDbusManagerSkeleton parent;
@@ -432,46 +429,13 @@ xfsm_manager_choose_session (XfsmManager *manager,
XfceRc *rc)
{
XfsmSessionInfo *session;
- GdkPixbuf *preview_default = NULL;
gboolean load = FALSE;
GList *sessions = NULL;
GList *lp;
- gchar **groups;
gchar *name;
gint result;
- gint n;
-
- groups = xfce_rc_get_groups (rc);
- for (n = 0; groups[n] != NULL; ++n)
- {
- if (strncmp (groups[n], "Session: ", 9) == 0)
- {
- xfce_rc_set_group (rc, groups[n]);
- session = g_new0 (XfsmSessionInfo, 1);
- session->name = groups[n] + 9;
- session->atime = xfce_rc_read_int_entry (rc, "LastAccess", 0);
- session->preview = xfsm_load_session_preview (session->name);
- if (session->preview == NULL)
- {
- if (G_UNLIKELY (preview_default == NULL))
- {
- G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- /* TODO: Turn this into a normal pixbuf? */
- preview_default = gdk_pixbuf_new_from_inline (-1, xfsm_chooser_icon_data,
- FALSE, NULL);
- G_GNUC_END_IGNORE_DEPRECATIONS
- }
-
- session->preview = GDK_PIXBUF (g_object_ref (preview_default));
- }
-
- sessions = g_list_append (sessions, session);
- }
- }
-
- if (preview_default != NULL)
- g_object_unref (preview_default);
+ sessions = settings_list_sessions (rc);
if (sessions != NULL)
{
@@ -502,8 +466,6 @@ xfsm_manager_choose_session (XfsmManager *manager,
g_list_free (sessions);
}
- g_strfreev (groups);
-
return load;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list