diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp index 85d01a6dd0..054b55b8da 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp @@ -30,6 +30,7 @@ #include +#include #include #include #include @@ -361,7 +362,7 @@ void ViewProviderDimension::finishRestoring() void ViewProviderDimension::fixTextSize() { App::Document* ourDoc = getDocument()->getDocument(); - if (checkMiniumumDocumentVersion(ourDoc, 1, 1)) { + if (checkMinimumDocumentVersion(ourDoc, Base::Version::v1_1)) { return; } @@ -376,7 +377,7 @@ void ViewProviderDimension::fixTextSize() void ViewProviderDimension::fixArrowSize() { App::Document* ourDoc = getDocument()->getDocument(); - if (checkMiniumumDocumentVersion(ourDoc, 1, 1)) { + if (checkMinimumDocumentVersion(ourDoc, Base::Version::v1_1)) { return; } diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp index 3fbf41ac0f..72b6c2b2a5 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -524,7 +525,7 @@ std::vector ViewProviderDrawingView::claimChildren() const void ViewProviderDrawingView::fixColorAlphaValues() { if (!Preferences::fixColorAlphaOnLoad() || - checkMiniumumDocumentVersion(1, 1)) { + checkMinimumDocumentVersion(Base::Version::v1_1)) { return; } @@ -550,27 +551,12 @@ void ViewProviderDrawingView::fixColorAlphaValues() } } - -//! true if document toBeChecked was written by a program with version >= minMajor.minMinor. -//! note that we can not check point releases as only the major and minor are recorded in the Document.xml -//! file. -//! (ex ) -bool ViewProviderDrawingView::checkMiniumumDocumentVersion(App::Document* toBeChecked, - int minMajor, - int minMinor) +bool ViewProviderDrawingView::checkMinimumDocumentVersion(App::Document* toBeChecked, + Base::Version minVersion) { const char* docVersionText = toBeChecked->getProgramVersion(); - int docMajor{0}; - int docMinor{0}; - // stole this bit from App::AttachExtension. - // NOLINTNEXTLINE - if (sscanf(docVersionText, "%d.%d", &docMajor, &docMinor) != 2) { - Base::Console().warning("Failed to retrieve document version number for %s\n", - toBeChecked ? toBeChecked->getName() : "noname"); - return false; // ?? should we fail here? the file appears broken. - } - - return std::tie(docMajor, docMinor) >= std::tie(minMajor, minMinor); + Base::Version documentVersion = Base::getVersion(docVersionText); + return documentVersion >= minVersion; } diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h index ccd85276ab..e771cd38c9 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h @@ -27,6 +27,7 @@ #include +#include #include #include #include @@ -104,9 +105,14 @@ public: std::vector claimChildren() const override; void fixColorAlphaValues(); - bool checkMiniumumDocumentVersion(int minMajor, int minMinor) const - { return checkMiniumumDocumentVersion(this->getDocument()->getDocument(), minMajor, minMinor); } - static bool checkMiniumumDocumentVersion(App::Document* toBeChecked, int minMajor, int minMinor); + bool checkMinimumDocumentVersion(Base::Version minimumVersion) const + { return checkMinimumDocumentVersion(this->getDocument()->getDocument(), minimumVersion); } + + //! True if document toBeChecked was written by a program with version >= minimumVersion. + //! Note that we cannot check patch releases as only the major and minor are recorded in the + //! Document.xml file. + //! (ex ) + static bool checkMinimumDocumentVersion(App::Document* toBeChecked, Base::Version minimumVersion); private: