From 8079470c8aeed8601522a3336055aaec2760ae37 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Thu, 5 Aug 2021 17:26:04 -0700 Subject: [PATCH] Fix Color chooser option value setting and getting. --- gnucash/gnome-utils/dialog-options.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gnucash/gnome-utils/dialog-options.cpp b/gnucash/gnome-utils/dialog-options.cpp index 5502ab5758..d7864f3e58 100644 --- a/gnucash/gnome-utils/dialog-options.cpp +++ b/gnucash/gnome-utils/dialog-options.cpp @@ -2166,19 +2166,25 @@ public: void set_ui_item_from_option(GncOption& option) noexcept override { GdkRGBA color; - if (gdk_rgba_parse(&color, - option.get_value().c_str())) + auto rgba_str{g_strdup_printf("#%s", + option.get_value().c_str())}; + if (gdk_rgba_parse(&color, rgba_str)) { auto color_button = GTK_COLOR_CHOOSER(get_widget()); gtk_color_chooser_set_rgba(color_button, &color); } + g_free(rgba_str); } void set_option_from_ui_item(GncOption& option) noexcept override { GdkRGBA color; auto color_button = GTK_COLOR_CHOOSER(get_widget()); gtk_color_chooser_get_rgba(color_button, &color); - auto rgba_str = gdk_rgba_to_string(&color); + auto rgba_str = g_strdup_printf("%2x%2x%2x%2x", + (uint8_t)(color.red * 255), + (uint8_t)(color.green * 255), + (uint8_t)(color.blue * 255), + (uint8_t)(color.alpha * 255)); option.set_value(std::string{rgba_str}); g_free(rgba_str); }