gnome-control-center r8812 - trunk/capplets/sound



Author: hadess
Date: Mon Jul 28 18:29:54 2008
New Revision: 8812
URL: http://svn.gnome.org/viewvc/gnome-control-center?rev=8812&view=rev

Log:
2008-07-28  Bastien Nocera  <hadess hadess net>

	* sound-theme.c (setting_set_func), (fill_custom_model),
	(save_sounds), (count_customised_sounds), (setting_column_edited):
	When selecting a non-custom sound (such as disabled, or builtin),
	don't remove the previous custom file's filename from the tree store,
	When a custom file was previously selected, always show it in the
	combo box drop-down (Closes: #545055)



Modified:
   trunk/capplets/sound/ChangeLog
   trunk/capplets/sound/sound-theme.c

Modified: trunk/capplets/sound/sound-theme.c
==============================================================================
--- trunk/capplets/sound/sound-theme.c	(original)
+++ trunk/capplets/sound/sound-theme.c	Mon Jul 28 18:29:54 2008
@@ -53,7 +53,8 @@
 	SOUND_UNSET,
 	SOUND_OFF,
 	SOUND_BUILTIN,
-	SOUND_CUSTOM
+	SOUND_CUSTOM,
+	SOUND_CUSTOM_OLD
 };
 
 #define SOUND_VISUAL_BELL_TITLEBAR SOUND_BUILTIN
@@ -424,7 +425,7 @@
 			g_object_set (cell,
 				      "text", _("Default"),
 				      NULL);
-		} else if (setting == SOUND_CUSTOM) {
+		} else if (setting == SOUND_CUSTOM || setting == SOUND_CUSTOM_OLD) {
 			char *display;
 
 			display = g_filename_display_basename (filename);
@@ -536,7 +537,7 @@
 		display = g_filename_display_basename (prev_filename);
 		gtk_list_store_insert_with_values (store, &iter, G_MAXINT,
 						   0, display,
-						   1, SOUND_CUSTOM,
+						   1, SOUND_CUSTOM_OLD,
 						   -1);
 		g_free (display);
 	}
@@ -623,7 +624,7 @@
 	} else if (setting == SOUND_OFF) {
 		delete_old_files (sounds);
 		add_disabled_file (sounds);
-	} else if (setting == SOUND_CUSTOM) {
+	} else if (setting == SOUND_CUSTOM || setting == SOUND_CUSTOM_OLD) {
 		delete_old_files (sounds);
 		delete_disabled_files (sounds);
 		add_custom_file (sounds, filename);
@@ -675,7 +676,7 @@
 	if (type == SOUND_TYPE_VISUAL_BELL)
 		return FALSE;
 
-	if (setting == SOUND_OFF || setting == SOUND_CUSTOM)
+	if (setting == SOUND_OFF || setting == SOUND_CUSTOM || setting == SOUND_CUSTOM_OLD)
 		(*num_custom)++;
 
 	return FALSE;
@@ -749,7 +750,7 @@
 	GtkTreeModel *model, *tree_model;
 	GtkTreeIter iter, tree_iter;
 	SoundType type;
-	char *text;
+	char *text, *old_filename;
 	int setting;
 
 	if (new_text == NULL)
@@ -763,7 +764,10 @@
 	if (gtk_tree_model_get_iter_from_string (tree_model, &tree_iter, path) == FALSE)
 		return;
 
-	gtk_tree_model_get (tree_model, &tree_iter, TYPE_COL, &type, -1);
+	gtk_tree_model_get (tree_model, &tree_iter,
+			    TYPE_COL, &type,
+			    FILENAME_COL, &old_filename,
+			    -1);
 
 	gtk_tree_model_get_iter_first (model, &iter);
 	while (1) {
@@ -772,21 +776,31 @@
 			if (type == SOUND_TYPE_NORMAL || type == SOUND_TYPE_FEEDBACK || type == SOUND_TYPE_AUDIO_BELL) {
 				char *filename;
 
-				if (setting == SOUND_CUSTOM) {
+				if (setting == SOUND_CUSTOM || (setting == SOUND_CUSTOM_OLD && old_filename == NULL)) {
 					filename = get_sound_filename (dialog);
 					if (filename == NULL)
 						break;
+					gtk_tree_store_set (GTK_TREE_STORE (tree_model),
+							    &tree_iter,
+							    SETTING_COL, setting,
+							    HAS_PREVIEW_COL, setting != SOUND_OFF,
+							    FILENAME_COL, filename,
+							    -1);
+				} else if (setting == SOUND_CUSTOM_OLD) {
+					gtk_tree_store_set (GTK_TREE_STORE (tree_model),
+							    &tree_iter,
+							    SETTING_COL, setting,
+							    HAS_PREVIEW_COL, setting != SOUND_OFF,
+							    FILENAME_COL, old_filename,
+							    -1);
 				} else {
-					filename = NULL;
+					gtk_tree_store_set (GTK_TREE_STORE (tree_model),
+							    &tree_iter,
+							    SETTING_COL, setting,
+							    HAS_PREVIEW_COL, setting != SOUND_OFF,
+							    -1);
 				}
 
-				gtk_tree_store_set (GTK_TREE_STORE (tree_model),
-						    &tree_iter,
-						    SETTING_COL, setting,
-						    HAS_PREVIEW_COL, setting != SOUND_OFF,
-						    FILENAME_COL, filename,
-						    -1);
-
 				g_debug ("Something changed, dump theme");
 				dump_theme (dialog);
 
@@ -809,6 +823,7 @@
 		if (gtk_tree_model_iter_next (model, &iter) == FALSE)
 			break;
 	}
+	g_free (old_filename);
 }
 
 /* Functions to toggle whether the Input feedback sounds are editable */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]