From 0ddd998a4e5db8162d61926c9267d1ade0c39210 Mon Sep 17 00:00:00 2001 From: Max Gaukler Date: Wed, 11 Dec 2024 20:32:35 +0100 Subject: [PATCH] Fix crash when using color parameters in extensions How to reproduce: Extensions - Generate From Path - Frame - Apply -> crash Changes: - Re-add ParamColor::value_to_string() which was accidentally dropped during refactoring - Update to newer inkex version, which now supports #RRGGBBAA strings --- po/POTFILES.inx.in | 2 ++ share/extensions | 2 +- src/extension/prefdialog/parameter-color.cpp | 12 ++++++++++++ src/extension/prefdialog/parameter-color.h | 3 +++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/po/POTFILES.inx.in b/po/POTFILES.inx.in index 01fea50a00..c850c9fdd6 100644 --- a/po/POTFILES.inx.in +++ b/po/POTFILES.inx.in @@ -1,5 +1,6 @@ ../share/extensions/addnodes.inx ../share/extensions/aisvg.inx +../share/extensions/cgm_input.inx ../share/extensions/color_blackandwhite.inx ../share/extensions/color_brighter.inx ../share/extensions/color_custom.inx @@ -89,6 +90,7 @@ ../share/extensions/next_glyph_layer.inx ../share/extensions/nicechart.inx ../share/extensions/other/clipart/import_web_image.inx +../share/extensions/other/extension-afdesign/inkaf.inx ../share/extensions/other/extension-xaml/inkxaml/svg2xaml.inx ../share/extensions/other/extension-xaml/inkxaml/xaml2svg.inx ../share/extensions/other/gcodetools/gcodetools_about.inx diff --git a/share/extensions b/share/extensions index d3ef8eae3e..13ebc1e957 160000 --- a/share/extensions +++ b/share/extensions @@ -1 +1 @@ -Subproject commit d3ef8eae3e1c9635fff8d6286801ae779950a7c4 +Subproject commit 13ebc1e957573fea2c3360f676b0f1680fad395d diff --git a/src/extension/prefdialog/parameter-color.cpp b/src/extension/prefdialog/parameter-color.cpp index 86d06e0ea7..ddefdcbc73 100644 --- a/src/extension/prefdialog/parameter-color.cpp +++ b/src/extension/prefdialog/parameter-color.cpp @@ -114,4 +114,16 @@ void ParamColor::_onColorButtonChanged() set(Colors::Color(to_guint32(_color_button->get_rgba()))); } +std::string ParamColor::value_to_string() const +{ + return get().toString(true); +} + +void ParamColor::string_to_value(const std::string &in) +{ + // Parse color. If parsing fails, return black. + static const auto black = Colors::Color(0, false); + set(Colors::Color::parse(in).value_or(black)); +} + } // namespace Inkscape::Extension diff --git a/src/extension/prefdialog/parameter-color.h b/src/extension/prefdialog/parameter-color.h index 2b94301574..b9124e2979 100644 --- a/src/extension/prefdialog/parameter-color.h +++ b/src/extension/prefdialog/parameter-color.h @@ -48,6 +48,9 @@ public: std::unique_ptr> _changeSignal; + std::string value_to_string() const override; + void string_to_value(const std::string &in) override; + private: void _onColorChanged(); void _onColorButtonChanged(); -- GitLab