From 3dd77d7e89175da0d4d4fca7d6e041bbe67b2663 Mon Sep 17 00:00:00 2001 From: Aapo Date: Fri, 20 Nov 2020 19:56:47 +0200 Subject: [PATCH 1/2] [TD] Fix column index range checking bug in std::string DrawViewSpreadsheet::getSheetImage(void) --- src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp b/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp index ef9de0ca56..eb1007a836 100644 --- a/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp +++ b/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp @@ -211,13 +211,6 @@ std::string DrawViewSpreadsheet::getSheetImage(void) } } - //check for logical range - if ( (sColStart > sColEnd) || - (iRowStart > iRowEnd) ) { - Base::Console().Error("%s - cell range is illogical\n",getNameInDocument()); - return result.str(); - } - std::vector availcolumns = getAvailColumns(); //validate range start column in sheet's available columns @@ -236,6 +229,13 @@ std::string DrawViewSpreadsheet::getSheetImage(void) return result.str(); } + //check for logical range + if ( (iAvailColStart > iAvailColEnd) || + (iRowStart > iRowEnd) ) { + Base::Console().Error("%s - cell range is illogical\n",getNameInDocument()); + return result.str(); + } + // build row and column ranges std::vector validColNames; std::vector validRowNumbers; From f72bf9d325cdae1adce71ba3d1f4f80834e715fc Mon Sep 17 00:00:00 2001 From: Aapo Date: Fri, 20 Nov 2020 22:12:02 +0200 Subject: [PATCH 2/2] [TD] Make DrawViewSpreadSheet respect DrawPage::redrawCommand() update mechanism. --- src/Mod/TechDraw/App/DrawPage.cpp | 9 +++++++++ src/Mod/TechDraw/App/DrawPage.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/Mod/TechDraw/App/DrawPage.cpp b/src/Mod/TechDraw/App/DrawPage.cpp index fb56c9acfd..7d944593e8 100644 --- a/src/Mod/TechDraw/App/DrawPage.cpp +++ b/src/Mod/TechDraw/App/DrawPage.cpp @@ -372,6 +372,15 @@ void DrawPage::updateAllViews() line->recomputeFeature(); } } + + //fourth, try to execute all spreadsheets. + for (it = featViews.begin(); it != featViews.end(); ++it) { + TechDraw::DrawViewSpreadsheet *sheet = dynamic_cast(*it); + if (sheet != nullptr) { + sheet->recomputeFeature(); + } + } + } std::vector DrawPage::getAllViews(void) diff --git a/src/Mod/TechDraw/App/DrawPage.h b/src/Mod/TechDraw/App/DrawPage.h index 8b403f2cd0..e298f52078 100644 --- a/src/Mod/TechDraw/App/DrawPage.h +++ b/src/Mod/TechDraw/App/DrawPage.h @@ -31,6 +31,7 @@ #include #include #include +#include namespace TechDraw {