From 0f477df6ed29485c92c5c8eeb2bb4f4421068598 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Sun, 29 Mar 2020 13:04:47 -0400 Subject: [PATCH] [TD]prevent loop with AutoScale --- src/Mod/TechDraw/App/DrawView.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawView.cpp b/src/Mod/TechDraw/App/DrawView.cpp index 8302613477..873e934a98 100644 --- a/src/Mod/TechDraw/App/DrawView.cpp +++ b/src/Mod/TechDraw/App/DrawView.cpp @@ -116,6 +116,9 @@ void DrawView::checkScale(void) void DrawView::onChanged(const App::Property* prop) { +//Coding note: calling execute, recompute or recomputeFeature inside an onChanged +//method can create infinite loops. In general don't do this! There may be +//situations where it is OK, but careful analysis is a must. if (!isRestoring()) { if (prop == &ScaleType) { auto page = findParentPage(); @@ -144,14 +147,9 @@ void DrawView::onChanged(const App::Property* prop) handleXYLock(); LockPosition.purgeTouched(); } - if ((prop == &Caption) || - (prop == &Label)) { - requestPaint(); - } // rotation and scaling requires recompute - else if ((prop == &Rotation) || - (prop == &Scale) || - (prop == &ScaleType)) { - recompute(); + if ((prop == &Caption) || + (prop == &Label)) { + requestPaint(); } } App::DocumentObject::onChanged(prop);