From fcd176aef00627ce1244626146908d7f5d40a804 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Wed, 16 Mar 2022 10:08:17 +0800 Subject: [PATCH] Spreadsheet: fix owner property reference in PropertySheet PropertySheet used to only work when refereceing its own cell either through cell address or alias. It does not work for reference to other property of the owner Spreadsheet object. --- src/Mod/Spreadsheet/App/PropertySheet.cpp | 9 ++++++++- src/Mod/Spreadsheet/App/Sheet.cpp | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Mod/Spreadsheet/App/PropertySheet.cpp b/src/Mod/Spreadsheet/App/PropertySheet.cpp index b865a1a38b..ee5924457f 100644 --- a/src/Mod/Spreadsheet/App/PropertySheet.cpp +++ b/src/Mod/Spreadsheet/App/PropertySheet.cpp @@ -1291,7 +1291,14 @@ void PropertySheet::invalidateDependants(const App::DocumentObject *docObj) } } -void PropertySheet::slotChangedObject(const App::DocumentObject &obj, const App::Property &prop) { +void PropertySheet::slotChangedObject(const App::DocumentObject &obj, const App::Property &prop) +{ + if (&obj == getContainer()) { + if (&prop == this || !prop.getName() || revAliasProp.count(prop.getName())) + return; + if (stringToAddress(prop.getName(), true).isValid()) + return; + } recomputeDependants(&obj, prop.getName()); } diff --git a/src/Mod/Spreadsheet/App/Sheet.cpp b/src/Mod/Spreadsheet/App/Sheet.cpp index 6b9f585e2e..273fdce1b3 100644 --- a/src/Mod/Spreadsheet/App/Sheet.cpp +++ b/src/Mod/Spreadsheet/App/Sheet.cpp @@ -1568,7 +1568,8 @@ void Sheet::onChanged(const App::Property *prop) { for(auto &range : tmp) rangeUpdated(range); } - + else + cells.slotChangedObject(*this, *prop); App::DocumentObject::onChanged(prop); }