From 1802d94a1a58f649ee6bfc65e699b323d1f74d81 Mon Sep 17 00:00:00 2001 From: Eivind Kvedalen Date: Mon, 8 Feb 2016 21:03:24 +0100 Subject: [PATCH] Spreadsheet: Override DocumentObject::renameObjectIdentifiers() to get better renaming support. --- src/Mod/Spreadsheet/App/PropertySheet.cpp | 9 +++++++++ src/Mod/Spreadsheet/App/PropertySheet.h | 2 ++ src/Mod/Spreadsheet/App/Sheet.cpp | 7 +++++++ src/Mod/Spreadsheet/App/Sheet.h | 2 ++ 4 files changed, 20 insertions(+) diff --git a/src/Mod/Spreadsheet/App/PropertySheet.cpp b/src/Mod/Spreadsheet/App/PropertySheet.cpp index c4d2ca0a6..57844a9f7 100644 --- a/src/Mod/Spreadsheet/App/PropertySheet.cpp +++ b/src/Mod/Spreadsheet/App/PropertySheet.cpp @@ -41,6 +41,7 @@ #include "SpreadsheetExpression.h" #include "Utils.h" #include +#include using namespace App; using namespace Base; @@ -1160,6 +1161,14 @@ void PropertySheet::renamedDocument(const App::Document * doc) } } +void PropertySheet::renameObjectIdentifiers(const std::map &paths) +{ + RenameObjectIdentifierExpressionVisitor v(*this, paths, *this); + + for (std::map::iterator it = data.begin(); it != data.end(); ++it) + it->second->visit(v); +} + void PropertySheet::deletedDocumentObject(const App::DocumentObject *docObj) { docDeps.erase(const_cast(docObj)); diff --git a/src/Mod/Spreadsheet/App/PropertySheet.h b/src/Mod/Spreadsheet/App/PropertySheet.h index c14bbae9e..c6392d5f6 100644 --- a/src/Mod/Spreadsheet/App/PropertySheet.h +++ b/src/Mod/Spreadsheet/App/PropertySheet.h @@ -141,6 +141,8 @@ public: void renamedDocument(const App::Document *doc); + void renameObjectIdentifiers(const std::map &paths); + void deletedDocumentObject(const App::DocumentObject *docObj); void documentSet(); diff --git a/src/Mod/Spreadsheet/App/Sheet.cpp b/src/Mod/Spreadsheet/App/Sheet.cpp index 38500965c..aa973cfad 100644 --- a/src/Mod/Spreadsheet/App/Sheet.cpp +++ b/src/Mod/Spreadsheet/App/Sheet.cpp @@ -1312,6 +1312,13 @@ void Sheet::observeDocument(Document * document) } } +void Sheet::renameObjectIdentifiers(const std::map &paths) +{ + DocumentObject::renameObjectIdentifiers(paths); + + cells.renameObjectIdentifiers(paths); +} + TYPESYSTEM_SOURCE(Spreadsheet::PropertySpreadsheetQuantity, App::PropertyQuantity); Property *PropertySpreadsheetQuantity::Copy() const diff --git a/src/Mod/Spreadsheet/App/Sheet.h b/src/Mod/Spreadsheet/App/Sheet.h index 0ccf02333..dba9cc519 100644 --- a/src/Mod/Spreadsheet/App/Sheet.h +++ b/src/Mod/Spreadsheet/App/Sheet.h @@ -227,6 +227,8 @@ public: void observeDocument(App::Document *document); + virtual void renameObjectIdentifiers(const std::map & paths); + protected: void providesTo(CellAddress address, std::set & result) const;