From 93d1550763d38fe08c94d4d6bf70594b867cd906 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Mon, 26 Sep 2016 10:52:44 -0400 Subject: [PATCH] core/settings: Check for a NULL key This fixes a problem with restoring treeview columns. Sometimes "Played" gets allocated way too much space, so I solve this by changing it's setting key to NULL so the column always gets whatever space is leftover. Signed-off-by: Anna Schumaker --- CHANGELOG | 4 ++++ core/settings.c | 6 +++--- gui/view.c | 6 +++--- tests/core/settings.c | 4 ++++ tests/gui/view.c | 4 ++-- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 5b9d5327..54e3fd69 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +6.5.0: +- Add a switch to disable GUI tests +- Don't save and restore the "Last Played" tracks column width + 6.5.0-rc: - Convert to CMake/CTest - Save current track in settings database diff --git a/core/settings.c b/core/settings.c index 5c542ff2..e08586f2 100644 --- a/core/settings.c +++ b/core/settings.c @@ -54,7 +54,7 @@ void settings_deinit() void settings_set(const gchar *key, unsigned int value) { - if (gui_settings) { + if (gui_settings && key) { g_hash_table_replace(gui_settings, g_strdup(key), GUINT_TO_POINTER(value)); __settings_save(); @@ -63,14 +63,14 @@ void settings_set(const gchar *key, unsigned int value) unsigned int settings_get(const gchar *key) { - if (gui_settings) + if (gui_settings && key) return GPOINTER_TO_UINT(g_hash_table_lookup(gui_settings, key)); return 0; } bool settings_has(const gchar *key) { - if (gui_settings) + if (gui_settings && key) return g_hash_table_contains(gui_settings, key); return false; } diff --git a/gui/view.c b/gui/view.c index c7c9ddfb..1356c74d 100644 --- a/gui/view.c +++ b/gui/view.c @@ -20,9 +20,9 @@ static const gchar *QUEUE_SETTINGS[Q_MODEL_N_COLUMNS] = { [Q_MODEL_YEAR] = "gui.queue.year", [Q_MODEL_GENRE] = "gui.queue.genre", [Q_MODEL_COUNT] = "gui.queue.count", - [Q_MODEL_LAST_PLAY] = "gui.queue.played", - [Q_MODEL_FILE_PATH] = "gui.queue.filepath", - [Q_MODEL_FONT] = "gui.queue.font", + [Q_MODEL_LAST_PLAY] = NULL, + [Q_MODEL_FILE_PATH] = NULL, + [Q_MODEL_FONT] = NULL, }; static const enum compare_t QUEUE_SORT[Q_MODEL_N_COLUMNS] = { diff --git a/tests/core/settings.c b/tests/core/settings.c index cc6cf551..a0009dfc 100644 --- a/tests/core/settings.c +++ b/tests/core/settings.c @@ -9,6 +9,10 @@ static void test_settings() { struct file f = FILE_INIT("settings", 0); + settings_set(NULL, 0); + g_assert_cmpuint(settings_get(NULL), ==, 0); + g_assert_false(settings_has(NULL)); + g_assert_null(test_get_settings()); settings_set("test.value1", 42); settings_set("test.value2", 84); diff --git a/tests/gui/view.c b/tests/gui/view.c index 75f8ed9c..4a4259b4 100644 --- a/tests/gui/view.c +++ b/tests/gui/view.c @@ -86,10 +86,10 @@ static void test_treeview() g_main_loop_run(main_loop); for (i = 0; i < Q_MODEL_N_COLUMNS; i++) { - bool has = (i != Q_MODEL_FILE_PATH) && (i != Q_MODEL_FONT); + bool has = (i < Q_MODEL_LAST_PLAY); g_assert(settings_has(QUEUE_SETTINGS[i]) == has); /* The "Played" column gets any remaining space. */ - if (has && i != Q_MODEL_LAST_PLAY) + if (has) g_assert_cmpuint(settings_get(QUEUE_SETTINGS[i]), ==, (i + 2) * 10); }