From e260cf5c8a77e84eb787bdef03b96141c164d704 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Wed, 4 Sep 2024 22:51:52 +0200 Subject: [PATCH] Sketcher: AutoColor should update only colors Previously AutoColor property forced reinitialization of all subscribed parameters. It was mostly fine as most of them should stay in sync with user settings but it also affected grids. --- src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 11 +++++++++-- src/Mod/Sketcher/Gui/ViewProviderSketch.h | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 6fb9eed083..e3dc0c6994 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -401,7 +401,13 @@ void ViewProviderSketch::ParameterObserver::OnChange(Base::Subject& { (void)rCaller; - auto key = parameterMap.find(sReason); + updateFromParameter(sReason); +} + +void SketcherGui::ViewProviderSketch::ParameterObserver::updateFromParameter(const char* parameter) +{ + auto key = parameterMap.find(parameter); + if (key != parameterMap.end()) { auto string = key->first; auto update = std::get<0>(key->second); @@ -2976,7 +2982,8 @@ void SketcherGui::ViewProviderSketch::finishRestoring() if (AutoColor.getValue()) { // update colors according to current user preferences - pObserver->initParameters(); + pObserver->updateFromParameter("SketchEdgeColor"); + pObserver->updateFromParameter("SketchVertexColor"); } } diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.h b/src/Mod/Sketcher/Gui/ViewProviderSketch.h index 61837ec680..ae5b272690 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.h +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.h @@ -174,6 +174,8 @@ private: /** Observer for parameter group. */ void OnChange(Base::Subject& rCaller, const char* sReason) override; + void updateFromParameter(const char* property); + private: void updateBoolProperty(const std::string& string, App::Property* property, bool defaultvalue);