summaryrefslogtreecommitdiff
path: root/src/libaudgui
diff options
context:
space:
mode:
authorAndrej Shadura <andrewsh@debian.org>2019-02-20 19:35:42 +0100
committerAndrej Shadura <andrewsh@debian.org>2019-02-20 19:35:42 +0100
commit1a988068635ca5f8a74c4654098d07f92bc0dcf4 (patch)
tree04ab5d5c0ffbdc6d60621be489508bf7140c7b34 /src/libaudgui
parent20b38fea7b2b8e6dd31a62dbc5ec9e4c2888a013 (diff)
New upstream version 3.10.1
Diffstat (limited to 'src/libaudgui')
-rw-r--r--src/libaudgui/eq-preset.cc29
-rw-r--r--src/libaudgui/infowin.cc35
2 files changed, 34 insertions, 30 deletions
diff --git a/src/libaudgui/eq-preset.cc b/src/libaudgui/eq-preset.cc
index a2f1c9d..159fef9 100644
--- a/src/libaudgui/eq-preset.cc
+++ b/src/libaudgui/eq-preset.cc
@@ -188,6 +188,9 @@ static void revert_changes ()
static void cleanup_eq_preset_window ()
{
+ // also hide the preset browser window
+ audgui_hide_unique_window (AUDGUI_PRESET_BROWSER_WINDOW);
+
if (changes_made)
{
save_list ();
@@ -312,22 +315,14 @@ static void merge_presets (const Index<EqualizerPreset> & presets)
EXPORT void audgui_import_eq_presets (const Index<EqualizerPreset> & presets)
{
- if (list)
- {
- /* import via presets window if it exists */
- audgui_list_delete_rows (list, 0, preset_list.len ());
- merge_presets (presets);
- audgui_list_insert_rows (list, 0, preset_list.len ());
+ // make sure the presets window is displayed
+ if (! list)
+ return;
- changes_made = true;
- gtk_widget_set_sensitive (revert, true);
- }
- else
- {
- /* otherwise import directly to ~/.config/audacious/eq.preset */
- populate_list ();
- merge_presets (presets);
- save_list ();
- preset_list.clear ();
- }
+ audgui_list_delete_rows (list, 0, preset_list.len ());
+ merge_presets (presets);
+ audgui_list_insert_rows (list, 0, preset_list.len ());
+
+ changes_made = true;
+ gtk_widget_set_sensitive (revert, true);
}
diff --git a/src/libaudgui/infowin.cc b/src/libaudgui/infowin.cc
index b36c1a6..8f62856 100644
--- a/src/libaudgui/infowin.cc
+++ b/src/libaudgui/infowin.cc
@@ -141,22 +141,32 @@ static GtkWidget * small_label_new (const char * text)
}
static void set_entry_str_from_field (GtkWidget * widget, const Tuple & tuple,
- Tuple::Field field, bool editable, bool clear)
+ Tuple::Field field, bool editable, bool clear, bool & changed)
{
String text = tuple.get_str (field);
+
if (! text && ! clear)
+ {
+ if (gtk_entry_get_text_length ((GtkEntry *) widget) > 0)
+ changed = true;
return;
+ }
gtk_entry_set_text ((GtkEntry *) widget, text ? text : "");
gtk_editable_set_editable ((GtkEditable *) widget, editable);
}
static void set_entry_int_from_field (GtkWidget * widget, const Tuple & tuple,
- Tuple::Field field, bool editable, bool clear)
+ Tuple::Field field, bool editable, bool clear, bool & changed)
{
int value = tuple.get_int (field);
+
if (value <= 0 && ! clear)
+ {
+ if (gtk_entry_get_text_length ((GtkEntry *) widget) > 0)
+ changed = true;
return;
+ }
gtk_entry_set_text ((GtkEntry *) widget, (value > 0) ? (const char *) int_to_str (value) : "");
gtk_editable_set_editable ((GtkEditable *) widget, editable);
@@ -424,19 +434,20 @@ static void infowin_show (Playlist list, int entry, const String & filename,
can_write = writable;
bool clear = aud_get_bool ("audgui", "clear_song_fields");
+ bool changed = false;
- set_entry_str_from_field (widgets.title, tuple, Tuple::Title, writable, clear);
- set_entry_str_from_field (widgets.artist, tuple, Tuple::Artist, writable, clear);
- set_entry_str_from_field (widgets.album, tuple, Tuple::Album, writable, clear);
- set_entry_str_from_field (widgets.album_artist, tuple, Tuple::AlbumArtist, writable, clear);
- set_entry_str_from_field (widgets.comment, tuple, Tuple::Comment, writable, clear);
+ set_entry_str_from_field (widgets.title, tuple, Tuple::Title, writable, clear, changed);
+ set_entry_str_from_field (widgets.artist, tuple, Tuple::Artist, writable, clear, changed);
+ set_entry_str_from_field (widgets.album, tuple, Tuple::Album, writable, clear, changed);
+ set_entry_str_from_field (widgets.album_artist, tuple, Tuple::AlbumArtist, writable, clear, changed);
+ set_entry_str_from_field (widgets.comment, tuple, Tuple::Comment, writable, clear, changed);
set_entry_str_from_field (gtk_bin_get_child ((GtkBin *) widgets.genre),
- tuple, Tuple::Genre, writable, clear);
+ tuple, Tuple::Genre, writable, clear, changed);
gtk_label_set_text ((GtkLabel *) widgets.location, uri_to_display (filename));
- set_entry_int_from_field (widgets.year, tuple, Tuple::Year, writable, clear);
- set_entry_int_from_field (widgets.track, tuple, Tuple::Track, writable, clear);
+ set_entry_int_from_field (widgets.year, tuple, Tuple::Year, writable, clear, changed);
+ set_entry_int_from_field (widgets.track, tuple, Tuple::Track, writable, clear, changed);
String codec_values[CODEC_ITEMS];
@@ -455,9 +466,7 @@ static void infowin_show (Playlist list, int entry, const String & filename,
infowin_display_image (filename);
- /* nothing has been changed yet */
- gtk_widget_set_sensitive (widgets.apply, false);
-
+ gtk_widget_set_sensitive (widgets.apply, changed);
gtk_widget_grab_focus (widgets.title);
if (! audgui_reshow_unique_window (AUDGUI_INFO_WINDOW))