gnome-session r5178 - in trunk: . capplet
- From: lucasr svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-session r5178 - in trunk: . capplet
- Date: Thu, 8 Jan 2009 01:29:01 +0000 (UTC)
Author: lucasr
Date: Thu Jan 8 01:29:01 2009
New Revision: 5178
URL: http://svn.gnome.org/viewvc/gnome-session?rev=5178&view=rev
Log:
2009-01-08 Lucas Rocha <lucasr gnome org>
Bug 555369 â gnome-session-properties work improperly when key
X-GNOME-Autostart-enabled=false in .desktop
* capplet/gsm-properties-dialog.c (toggle_app, enable_app,
disable_app): move app enabling/disabling logic into toggle_app and
fix handling of X-GNOME-Autostart-enabled in .desktop files.
Patch by Halton Huo.
Modified:
trunk/ChangeLog
trunk/capplet/gsm-properties-dialog.c
Modified: trunk/capplet/gsm-properties-dialog.c
==============================================================================
--- trunk/capplet/gsm-properties-dialog.c (original)
+++ trunk/capplet/gsm-properties-dialog.c Thu Jan 8 01:29:01 2009
@@ -582,8 +582,9 @@
}
static gboolean
-enable_app (GsmPropertiesDialog *dialog,
- GtkTreeIter *iter)
+toggle_app (GsmPropertiesDialog *dialog,
+ GtkTreeIter *iter,
+ gboolean enabled)
{
EggDesktopFile *desktop_file;
GFile *source;
@@ -592,20 +593,14 @@
char *path;
char *name;
char *comment;
- gboolean enabled;
gtk_tree_model_get (GTK_TREE_MODEL (dialog->priv->list_store),
iter,
- STORE_COL_ENABLED, &enabled,
STORE_COL_NAME, &name,
STORE_COL_COMMENT, &comment,
STORE_COL_DESKTOP_FILE, &desktop_file,
-1);
- if (enabled) {
- return TRUE;
- }
-
source = g_file_new_for_uri (egg_desktop_file_get_source (desktop_file));
path = g_file_get_path (source);
@@ -616,6 +611,7 @@
EggDesktopFile *system_desktop_file;
char *original_name;
char *original_comment;
+ gboolean original_enabled;
system_desktop_file = egg_desktop_file_new (system_path, NULL);
@@ -625,8 +621,17 @@
original_comment = egg_desktop_file_get_locale_string (system_desktop_file,
"Comment", NULL, NULL);
+ if (egg_desktop_file_has_key (system_desktop_file,
+ "X-GNOME-Autostart-enabled", NULL)) {
+ original_enabled = egg_desktop_file_get_boolean (system_desktop_file,
+ "X-GNOME-Autostart-enabled", NULL);
+ } else {
+ original_enabled = TRUE;
+ }
+
if (REALLY_IDENTICAL_STRING (name, original_name) &&
- REALLY_IDENTICAL_STRING (comment, original_comment)) {
+ REALLY_IDENTICAL_STRING (comment, original_comment) &&
+ (enabled == original_enabled)) {
char *user_file =
g_build_filename (g_get_user_config_dir (),
"autostart", basename, NULL);
@@ -639,14 +644,14 @@
update_desktop_file (dialog->priv->list_store, iter, system_desktop_file);
} else {
- write_desktop_file (desktop_file, dialog->priv->list_store, iter, TRUE);
+ write_desktop_file (desktop_file, dialog->priv->list_store, iter, enabled);
egg_desktop_file_free (system_desktop_file);
}
g_free (original_name);
g_free (original_comment);
} else {
- write_desktop_file (desktop_file, dialog->priv->list_store, iter, TRUE);
+ write_desktop_file (desktop_file, dialog->priv->list_store, iter, enabled);
}
g_free (name);
@@ -656,35 +661,6 @@
return TRUE;
}
-static gboolean
-disable_app (GsmPropertiesDialog *dialog,
- GtkTreeIter *iter)
-{
- EggDesktopFile *desktop_file;
- const char *source;
- char *basename;
- gboolean enabled;
-
- gtk_tree_model_get (GTK_TREE_MODEL (dialog->priv->list_store), iter,
- STORE_COL_ENABLED, &enabled,
- STORE_COL_DESKTOP_FILE, &desktop_file,
- -1);
-
- if (!enabled) {
- return TRUE;
- }
-
- source = egg_desktop_file_get_source (desktop_file);
-
- basename = g_path_get_basename (source);
-
- write_desktop_file (desktop_file, dialog->priv->list_store, iter, FALSE);
-
- g_free (basename);
-
- return TRUE;
-}
-
static void
on_startup_enabled_toggled (GtkCellRendererToggle *cell_renderer,
char *path,
@@ -708,20 +684,11 @@
active = !active;
gtk_cell_renderer_toggle_set_active (cell_renderer, active);
- if (active) {
- if (enable_app (dialog, &iter)) {
- gtk_list_store_set (dialog->priv->list_store,
- &iter,
- STORE_COL_ENABLED, TRUE,
- -1);
- }
- } else {
- if (disable_app (dialog, &iter)) {
- gtk_list_store_set (dialog->priv->list_store,
- &iter,
- STORE_COL_ENABLED, FALSE,
- -1);
- }
+ if (toggle_app (dialog, &iter, active)) {
+ gtk_list_store_set (dialog->priv->list_store,
+ &iter,
+ STORE_COL_ENABLED, active,
+ -1);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]