diff --git a/gnucash/gnome-utils/dialog-options.cpp b/gnucash/gnome-utils/dialog-options.cpp index dff8c72897..8a219dc3b3 100644 --- a/gnucash/gnome-utils/dialog-options.cpp +++ b/gnucash/gnome-utils/dialog-options.cpp @@ -976,15 +976,16 @@ public: void set_ui_item_from_option(GncOption& option) noexcept override { auto widget{GNC_CURRENCY_EDIT(get_widget())}; - auto instance{option.get_value()}; - if (instance) - gnc_currency_edit_set_currency(widget, GNC_COMMODITY(instance)); + auto currency{option.get_value()}; + + if (currency) + gnc_currency_edit_set_currency(widget, GNC_COMMODITY(currency)); } void set_option_from_ui_item(GncOption& option) noexcept override { auto widget{GNC_CURRENCY_EDIT(get_widget())}; auto currency = gnc_currency_edit_get_currency(widget); - option.set_value(qof_instance_cast(currency)); + option.set_value(currency); } }; @@ -1016,15 +1017,16 @@ public: void set_ui_item_from_option(GncOption& option) noexcept override { auto widget{GNC_GENERAL_SELECT(get_widget())}; - auto instance{option.get_value()}; - if (instance) - gnc_general_select_set_selected(widget, GNC_COMMODITY(instance)); + auto commodity{option.get_value()}; + + if (commodity) + gnc_general_select_set_selected(widget, GNC_COMMODITY(commodity)); } void set_option_from_ui_item(GncOption& option) noexcept override { auto widget{GNC_GENERAL_SELECT(get_widget())}; auto commodity{gnc_general_select_get_selected(widget)}; - option.set_value(qof_instance_cast(commodity)); + option.set_value(GNC_COMMODITY(commodity)); } }; diff --git a/libgnucash/app-utils/gnc-option-impl.cpp b/libgnucash/app-utils/gnc-option-impl.cpp index be976e1223..2b42508caf 100644 --- a/libgnucash/app-utils/gnc-option-impl.cpp +++ b/libgnucash/app-utils/gnc-option-impl.cpp @@ -224,7 +224,7 @@ GncOptionCommodityValue::reset_default_value() bool GncOptionCommodityValue::is_changed() const noexcept { - return m_namespace == m_default_namespace && m_mnemonic == m_default_mnemonic; + return m_namespace != m_default_namespace || m_mnemonic != m_default_mnemonic; } bool diff --git a/libgnucash/app-utils/gnc-optiondb.i b/libgnucash/app-utils/gnc-optiondb.i index 1eb7b2b615..b4feefd828 100644 --- a/libgnucash/app-utils/gnc-optiondb.i +++ b/libgnucash/app-utils/gnc-optiondb.i @@ -1346,8 +1346,7 @@ inline SCM return_scm_value(ValueType value) if (scm_is_string(new_value)) { auto strval{scm_to_utf8_string(new_value)}; - auto val{qof_instance_from_string(strval, option.get_ui_type())}; - option.set_value(GNC_COMMODITY(val)); + option.deserialize(strval); return; } option.set_value(scm_to_value(new_value));