Spreadsheet: Fix for issue #3225.

Done by adding a selector function to Document::renameObjectIdentifiers(...) to ensure
that the Spreadsheet document object is not rewritten twice.
This commit is contained in:
Eivind Kvedalen
2017-11-04 20:05:31 +01:00
committed by wmayer
parent bb764b1475
commit 5fe7a9af71
4 changed files with 21 additions and 7 deletions

View File

@@ -678,7 +678,8 @@ void PropertySheet::insertRows(int row, int count)
moveCell(*i, CellAddress(i->row() + count, i->col()), renames);
}
owner->getDocument()->renameObjectIdentifiers(renames);
const App::DocumentObject * docObj = static_cast<const App::DocumentObject*>(getContainer());
owner->getDocument()->renameObjectIdentifiers(renames, [docObj](const App::DocumentObject * obj) { return obj != docObj; });
}
/**
@@ -728,7 +729,8 @@ void PropertySheet::removeRows(int row, int count)
moveCell(*i, CellAddress(i->row() - count, i->col()), renames);
}
owner->getDocument()->renameObjectIdentifiers(renames);
const App::DocumentObject * docObj = static_cast<const App::DocumentObject*>(getContainer());
owner->getDocument()->renameObjectIdentifiers(renames, [docObj](const App::DocumentObject * obj) { return obj != docObj; });
}
void PropertySheet::insertColumns(int col, int count)
@@ -764,7 +766,8 @@ void PropertySheet::insertColumns(int col, int count)
moveCell(*i, CellAddress(i->row(), i->col() + count), renames);
}
owner->getDocument()->renameObjectIdentifiers(renames);
const App::DocumentObject * docObj = static_cast<const App::DocumentObject*>(getContainer());
owner->getDocument()->renameObjectIdentifiers(renames, [docObj](const App::DocumentObject * obj) { return obj != docObj; });
}
/**
@@ -814,7 +817,8 @@ void PropertySheet::removeColumns(int col, int count)
moveCell(*i, CellAddress(i->row(), i->col() - count), renames);
}
owner->getDocument()->renameObjectIdentifiers(renames);
const App::DocumentObject * docObj = static_cast<const App::DocumentObject*>(getContainer());
owner->getDocument()->renameObjectIdentifiers(renames, [docObj](const App::DocumentObject * obj) { return obj != docObj; } );
}
unsigned int PropertySheet::getMemSize() const

View File

@@ -660,6 +660,14 @@ class SpreadsheetCases(unittest.TestCase):
sheet.insertRows('2', 1)
self.assertEqual(sheet.getContents("B1"),"=B3")
def testIssue3225(self):
""" Inserting rows -- check renaming of internal cells """
sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
sheet.set('B2', '25')
sheet.set('B3', '=B2')
sheet.insertRows('2', 1)
self.assertEqual(sheet.getContents("B4"),"=B3")
def testRenameAlias(self):
""" Test renaming of alias1 to alias2 in a spreadsheet """
sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')