When selecting a non-custom sound (such as disabled, or builtin), don't

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)


svn path=/trunk/; revision=8812
This commit is contained in:
Bastien Nocera 2008-07-28 18:29:54 +00:00 committed by Bastien Nocera
parent 9341801a34
commit 5cc13a9b71
2 changed files with 40 additions and 16 deletions

View file

@ -1,3 +1,12 @@
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)
2008-07-28 Bastien Nocera <hadess@hadess.net> 2008-07-28 Bastien Nocera <hadess@hadess.net>
* sound-theme.c (play_sound_preview), (get_sound_filename): * sound-theme.c (play_sound_preview), (get_sound_filename):

View file

@ -53,7 +53,8 @@ enum {
SOUND_UNSET, SOUND_UNSET,
SOUND_OFF, SOUND_OFF,
SOUND_BUILTIN, SOUND_BUILTIN,
SOUND_CUSTOM SOUND_CUSTOM,
SOUND_CUSTOM_OLD
}; };
#define SOUND_VISUAL_BELL_TITLEBAR SOUND_BUILTIN #define SOUND_VISUAL_BELL_TITLEBAR SOUND_BUILTIN
@ -424,7 +425,7 @@ setting_set_func (GtkTreeViewColumn *tree_column,
g_object_set (cell, g_object_set (cell,
"text", _("Default"), "text", _("Default"),
NULL); NULL);
} else if (setting == SOUND_CUSTOM) { } else if (setting == SOUND_CUSTOM || setting == SOUND_CUSTOM_OLD) {
char *display; char *display;
display = g_filename_display_basename (filename); display = g_filename_display_basename (filename);
@ -536,7 +537,7 @@ fill_custom_model (GtkListStore *store, const char *prev_filename)
display = g_filename_display_basename (prev_filename); display = g_filename_display_basename (prev_filename);
gtk_list_store_insert_with_values (store, &iter, G_MAXINT, gtk_list_store_insert_with_values (store, &iter, G_MAXINT,
0, display, 0, display,
1, SOUND_CUSTOM, 1, SOUND_CUSTOM_OLD,
-1); -1);
g_free (display); g_free (display);
} }
@ -623,7 +624,7 @@ save_sounds (GtkTreeModel *model,
} else if (setting == SOUND_OFF) { } else if (setting == SOUND_OFF) {
delete_old_files (sounds); delete_old_files (sounds);
add_disabled_file (sounds); add_disabled_file (sounds);
} else if (setting == SOUND_CUSTOM) { } else if (setting == SOUND_CUSTOM || setting == SOUND_CUSTOM_OLD) {
delete_old_files (sounds); delete_old_files (sounds);
delete_disabled_files (sounds); delete_disabled_files (sounds);
add_custom_file (sounds, filename); add_custom_file (sounds, filename);
@ -675,7 +676,7 @@ count_customised_sounds (GtkTreeModel *model,
if (type == SOUND_TYPE_VISUAL_BELL) if (type == SOUND_TYPE_VISUAL_BELL)
return FALSE; return FALSE;
if (setting == SOUND_OFF || setting == SOUND_CUSTOM) if (setting == SOUND_OFF || setting == SOUND_CUSTOM || setting == SOUND_CUSTOM_OLD)
(*num_custom)++; (*num_custom)++;
return FALSE; return FALSE;
@ -749,7 +750,7 @@ setting_column_edited (GtkCellRendererText *renderer,
GtkTreeModel *model, *tree_model; GtkTreeModel *model, *tree_model;
GtkTreeIter iter, tree_iter; GtkTreeIter iter, tree_iter;
SoundType type; SoundType type;
char *text; char *text, *old_filename;
int setting; int setting;
if (new_text == NULL) if (new_text == NULL)
@ -763,7 +764,10 @@ setting_column_edited (GtkCellRendererText *renderer,
if (gtk_tree_model_get_iter_from_string (tree_model, &tree_iter, path) == FALSE) if (gtk_tree_model_get_iter_from_string (tree_model, &tree_iter, path) == FALSE)
return; 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); gtk_tree_model_get_iter_first (model, &iter);
while (1) { while (1) {
@ -772,21 +776,31 @@ setting_column_edited (GtkCellRendererText *renderer,
if (type == SOUND_TYPE_NORMAL || type == SOUND_TYPE_FEEDBACK || type == SOUND_TYPE_AUDIO_BELL) { if (type == SOUND_TYPE_NORMAL || type == SOUND_TYPE_FEEDBACK || type == SOUND_TYPE_AUDIO_BELL) {
char *filename; char *filename;
if (setting == SOUND_CUSTOM) { if (setting == SOUND_CUSTOM || (setting == SOUND_CUSTOM_OLD && old_filename == NULL)) {
filename = get_sound_filename (dialog); filename = get_sound_filename (dialog);
if (filename == NULL) if (filename == NULL)
break; 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 { } 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"); g_debug ("Something changed, dump theme");
dump_theme (dialog); dump_theme (dialog);
@ -809,6 +823,7 @@ setting_column_edited (GtkCellRendererText *renderer,
if (gtk_tree_model_iter_next (model, &iter) == FALSE) if (gtk_tree_model_iter_next (model, &iter) == FALSE)
break; break;
} }
g_free (old_filename);
} }
/* Functions to toggle whether the Input feedback sounds are editable */ /* Functions to toggle whether the Input feedback sounds are editable */