Author: kelnos
Date: 2008-10-21 08:04:42 +0000 (Tue, 21 Oct 2008)
New Revision: 28344
Modified:
xfce4-session/trunk/ChangeLog
xfce4-session/trunk/settings/session-editor.c
Log:
* settings/session-editor.c: Cache the DBusGProxy in the list
store. Set clients to kill to SmRestartIfRunning, not
SmRestartNever. Display placeholder text if the app doesn't
provide a SmProgram property. Fix a one-time memleak.
Modified: xfce4-session/trunk/ChangeLog
===================================================================
--- xfce4-session/trunk/ChangeLog 2008-10-21 06:38:32 UTC (rev 28343)
+++ xfce4-session/trunk/ChangeLog 2008-10-21 08:04:42 UTC (rev 28344)
@@ -1,3 +1,10 @@
+2008-10-21 Brian Tarricone <[EMAIL PROTECTED]>
+
+ * settings/session-editor.c: Cache the DBusGProxy in the list
+ store. Set clients to kill to SmRestartIfRunning, not
+ SmRestartNever. Display placeholder text if the app doesn't
+ provide a SmProgram property. Fix a one-time memleak.
+
2008-10-20 Brian Tarricone <[EMAIL PROTECTED]>
* settings/session-editor.c: Implement a rudimentary session
Modified: xfce4-session/trunk/settings/session-editor.c
===================================================================
--- xfce4-session/trunk/settings/session-editor.c 2008-10-21 06:38:32 UTC
(rev 28343)
+++ xfce4-session/trunk/settings/session-editor.c 2008-10-21 08:04:42 UTC
(rev 28344)
@@ -43,6 +43,7 @@
COL_COMMAND,
COL_RESTART_STYLE,
COL_PRIORITY,
+ COL_DBUS_PROXY,
N_COLS,
};
@@ -96,7 +97,8 @@
GtkTreeSelection *sel;
GtkTreeModel *model = NULL;
GtkTreeIter iter;
- gchar *name = NULL, *client_op = NULL;
+ DBusGProxy *proxy = NULL;
+ gchar *name = NULL;
guchar hint = SmRestartIfRunning;
gchar *primary, *btntext;
@@ -105,7 +107,7 @@
return;
gtk_tree_model_get(model, &iter,
- COL_OBJ_PATH, &client_op,
+ COL_DBUS_PROXY, &proxy,
COL_NAME, &name,
COL_RESTART_STYLE, &hint,
-1);
@@ -121,18 +123,14 @@
XFCE_CUSTOM_STOCK_BUTTON, btntext, GTK_STOCK_QUIT,
GTK_RESPONSE_ACCEPT,
NULL) == GTK_RESPONSE_ACCEPT)
{
- DBusGProxy *proxy = dbus_g_proxy_new_for_name(dbus_conn,
-
"org.xfce.SessionManager",
- client_op,
-
"org.xfce.Session.Client");
GError *error = NULL;
- if(hint != SmRestartNever) {
+ if(hint != SmRestartIfRunning) {
GHashTable *properties = g_hash_table_new(g_str_hash, g_str_equal);
GValue val = { 0, };
g_value_init(&val, G_TYPE_UCHAR);
- g_value_set_uchar(&val, SmRestartNever);
+ g_value_set_uchar(&val, SmRestartIfRunning);
g_hash_table_insert(properties, SmRestartStyleHint, &val);
if(!xfsm_client_dbus_client_set_sm_properties(proxy, properties,
&error)) {
@@ -152,14 +150,10 @@
NULL);
g_error_free(error);
}
-
- g_object_unref(proxy);
}
g_free(primary);
g_free(btntext);
-
- g_free(client_op);
g_free(name);
}
@@ -262,9 +256,13 @@
if((val = g_hash_table_lookup(properties, GsmPriority)))
priority = g_value_get_uchar(val);
+ if(!name || !*name)
+ name = _("(Unknown program)");
+
DBG("adding '%s', obj path %s", name, object_path);
gtk_list_store_append(GTK_LIST_STORE(model), &iter);
gtk_list_store_set(GTK_LIST_STORE(model), &iter,
+ COL_DBUS_PROXY, proxy,
COL_OBJ_PATH, object_path,
COL_NAME, name,
COL_RESTART_STYLE, hint,
@@ -314,7 +312,8 @@
return;
ls = gtk_list_store_new(N_COLS, G_TYPE_STRING, G_TYPE_STRING,
- G_TYPE_STRING, G_TYPE_UCHAR, G_TYPE_UCHAR);
+ G_TYPE_STRING, G_TYPE_UCHAR, G_TYPE_UCHAR,
+ DBUS_TYPE_G_PROXY);
gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(ls));
g_object_unref(ls);
@@ -336,7 +335,10 @@
for(i = 0; i < clients->len; ++i) {
gchar *client_op = g_ptr_array_index(clients, i);
manager_client_registered(manager_dbus_proxy, client_op, treeview);
+ g_free(client_op);
}
+
+ g_ptr_array_free(clients, TRUE);
}
void
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits