summaryrefslogtreecommitdiff
path: root/sc/qa
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2018-02-09 12:52:52 +0100
committerSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2018-03-06 15:45:28 +0100
commitacf0bad4e2b8c3c43aaaee8312c8a61d3552fcc2 (patch)
tree4650737dd242e2fef7322e6fc1c8ec2f02987a33 /sc/qa
parent2b69156c43261ceae55eb4d3b644c4c2d73231ba (diff)
tdf#114552 Add a third anchor type for calc graphics
This allows to have two cell anchored types: * Only cell anchored (moves with the cell when sorting etc) * Cell anchored, also resizes with the cell Beforehand, all cell anchored images would resize with the cell, which was often not what users expected. The new default (when inserting images) is now that inserted images are only anchored to the cell, but don't resize with the cell. This makes use of the ODF elements table:end-cell-address, table:end-x, table:end-y. When images should resize with the cell, the end address is written (it has always been written earlier, so documents would still import correctly). If not, they are omitted. Also implements xlsx import & export Change-Id: I5f96242f88943ed77a0fd12b7f39b444e1380df7 Reviewed-on: https://gerrit.libreoffice.org/49490 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'sc/qa')
-rw-r--r--sc/qa/extras/anchor.cxx4
-rw-r--r--sc/qa/unit/subsequent_export-test.cxx6
-rw-r--r--sc/qa/unit/ucalc.cxx12
-rw-r--r--sc/qa/unit/ucalc_sort.cxx2
4 files changed, 12 insertions, 12 deletions
diff --git a/sc/qa/extras/anchor.cxx b/sc/qa/extras/anchor.cxx
index 4cdc766c7ffb..5d79caad7df9 100644
--- a/sc/qa/extras/anchor.cxx
+++ b/sc/qa/extras/anchor.cxx
@@ -99,7 +99,7 @@ void ScAnchorTest::testUndoAnchor()
CPPUNIT_ASSERT(pDrawView->AreObjectsMarked() );
// Set Cell Anchor
- ScDrawLayer::SetCellAnchoredFromPosition(*pObject, rDoc, 0);
+ ScDrawLayer::SetCellAnchoredFromPosition(*pObject, rDoc, 0, false);
// Check state
ScAnchorType oldType = ScDrawLayer::GetAnchorType(*pObject);
CPPUNIT_ASSERT_EQUAL(SCA_CELL, oldType);
@@ -169,7 +169,7 @@ void ScAnchorTest::testTdf76183()
SdrCircObj* pObj = new SdrCircObj(OBJ_CIRC, aOrigRect);
pPage->InsertObject(pObj);
// Anchor to cell
- ScDrawLayer::SetCellAnchoredFromPosition(*pObj, rDoc, 0);
+ ScDrawLayer::SetCellAnchoredFromPosition(*pObj, rDoc, 0, false);
const tools::Rectangle& rNewRect = pObj->GetLogicRect();
// Set word wrap to true
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index 47ed37c4ee76..3d93aac63cb3 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -3514,7 +3514,7 @@ void ScExportTest::testMoveCellAnchoredShapesODS()
// Check cell anchor state
ScAnchorType oldType = ScDrawLayer::GetAnchorType(*pObj);
- CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL, oldType);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL_RESIZE, oldType);
// Get anchor data
ScDrawObjData* pData = ScDrawLayer::GetObjData(pObj);
@@ -3576,7 +3576,7 @@ void ScExportTest::testMoveCellAnchoredShapesODS()
// Check cell anchor state
oldType = ScDrawLayer::GetAnchorType(*pObj);
- CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL, oldType);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL_RESIZE, oldType);
// Get anchor data
pData = ScDrawLayer::GetObjData(pObj);
@@ -3637,7 +3637,7 @@ void ScExportTest::testMoveCellAnchoredShapesODS()
// Check cell anchor state
oldType = ScDrawLayer::GetAnchorType(*pObj);
- CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL, oldType);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL_RESIZE, oldType);
// Get anchor data
pData = ScDrawLayer::GetObjData(pObj);
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 4310cc3020fb..d2544ab010fd 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -2726,7 +2726,7 @@ void Test::testGraphicsInGroup()
CPPUNIT_ASSERT_EQUAL_MESSAGE("Should not change when page anchored",
const_cast<const tools::Rectangle &>(aOrigRect), rNewRect);
- ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0);
+ ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, true);
CPPUNIT_ASSERT_EQUAL_MESSAGE("That shouldn't change size or positioning",
const_cast<const tools::Rectangle &>(aOrigRect), rNewRect);
@@ -2751,7 +2751,7 @@ void Test::testGraphicsInGroup()
CPPUNIT_ASSERT_EQUAL_MESSAGE("Position and size of the circle shouldn't change when inserted into the page.",
const_cast<const tools::Rectangle &>(aOrigRect), rNewRect);
- ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0);
+ ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false);
CPPUNIT_ASSERT_EQUAL_MESSAGE("Size changed when cell anchored. Not good.",
const_cast<const tools::Rectangle &>(aOrigRect), rNewRect);
@@ -2784,7 +2784,7 @@ void Test::testGraphicsInGroup()
CPPUNIT_ASSERT_EQUAL_MESSAGE("Size differ.",
const_cast<const tools::Rectangle &>(aOrigRect), rNewRect);
- ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0);
+ ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false);
CPPUNIT_ASSERT_EQUAL_MESSAGE("Size changed when cell-anchored. Not good.",
const_cast<const tools::Rectangle &>(aOrigRect), rNewRect);
@@ -2820,7 +2820,7 @@ void Test::testGraphicsOnSheetMove()
tools::Rectangle aObjRect(2,2,100,100);
SdrObject* pObj = new SdrRectObj(aObjRect);
pPage->InsertObject(pObj);
- ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0);
+ ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false);
CPPUNIT_ASSERT_EQUAL_MESSAGE("There should be one object on the 1st sheet.", static_cast<size_t>(1), pPage->GetObjCount());
@@ -5652,7 +5652,7 @@ void Test::testAnchoredRotatedShape()
double nCos=cos(nAngle*nPi180);
pObj->Rotate(aRef1,nAngle,nSin,nCos);
- ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0);
+ ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, true);
tools::Rectangle aSnap = pObj->GetSnapRect();
CPPUNIT_ASSERT_EQUAL( true, testEqualsWithTolerance( aRotRect.GetHeight(), aSnap.GetHeight(), TOLERANCE ) );
@@ -6419,7 +6419,7 @@ void Test::testUndoDataAnchor()
tools::Rectangle aObjRect(2,1000,100,1100);
SdrObject* pObj = new SdrRectObj(aObjRect);
pPage->InsertObject(pObj);
- ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0);
+ ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false);
// Get anchor data
ScDrawObjData* pData = ScDrawLayer::GetObjData(pObj);
diff --git a/sc/qa/unit/ucalc_sort.cxx b/sc/qa/unit/ucalc_sort.cxx
index 825c608f3643..2aa4a441ab0c 100644
--- a/sc/qa/unit/ucalc_sort.cxx
+++ b/sc/qa/unit/ucalc_sort.cxx
@@ -1916,7 +1916,7 @@ void Test::testSortImages()
CPPUNIT_ASSERT(pPage);
pPage->InsertObject(pObj);
// Anchor to cell
- ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0);
+ ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false);
// Move to cell B2
ScAddress aCellPos(1, 1, 0);
pDrawLayer->MoveObject(pObj, aCellPos);