diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-03-13 15:03:33 +0100 |
---|---|---|
committer | Björn Michaelsen <bjoern.michaelsen@canonical.com> | 2014-03-14 04:54:27 -0500 |
commit | 9b0cffd68316e6ecb6f11f77504bca64ff34ba72 (patch) | |
tree | 4eb91a6b15fee497f471d28d881e9ab3eb2561ae | |
parent | 00b7d4c8043a0c6b9e267f0fd5d7389128628ca0 (diff) |
fdo#75898 SwFEShell::InsertRow: fix this in case bSelectAll == true
Change-Id: Iaf59db6a55c3f81d11d0196d5d3e52056e31c4b1
(cherry picked from commit f1f9b5b1b73218274ee69cf4e518c2ba926458af)
Reviewed-on: https://gerrit.libreoffice.org/8574
Reviewed-by: Björn Michaelsen <bjoern.michaelsen@canonical.com>
Tested-by: Björn Michaelsen <bjoern.michaelsen@canonical.com>
-rw-r--r-- | sw/qa/extras/uiwriter/data/fdo75898.odt | bin | 0 -> 9446 bytes | |||
-rw-r--r-- | sw/qa/extras/uiwriter/uiwriter.cxx | 17 | ||||
-rw-r--r-- | sw/source/core/frmedt/fetab.cxx | 8 | ||||
-rw-r--r-- | sw/source/ui/shells/tabsh.cxx | 3 |
4 files changed, 27 insertions, 1 deletions
diff --git a/sw/qa/extras/uiwriter/data/fdo75898.odt b/sw/qa/extras/uiwriter/data/fdo75898.odt Binary files differnew file mode 100644 index 000000000000..81a50625227d --- /dev/null +++ b/sw/qa/extras/uiwriter/data/fdo75898.odt diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index a86d2ca786f2..e30db243494c 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -24,12 +24,14 @@ public: void testReplaceBackward(); void testFdo69893(); void testFdo75110(); + void testFdo75898(); CPPUNIT_TEST_SUITE(SwUiWriterTest); CPPUNIT_TEST(testReplaceForward); CPPUNIT_TEST(testReplaceBackward); CPPUNIT_TEST(testFdo69893); CPPUNIT_TEST(testFdo75110); + CPPUNIT_TEST(testFdo75898); CPPUNIT_TEST_SUITE_END(); private: @@ -93,6 +95,21 @@ void SwUiWriterTest::testFdo75110() rUndoManager.Undo(); } +void SwUiWriterTest::testFdo75898() +{ + SwDoc* pDoc = createDoc("fdo75898.odt"); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->SelAll(); + pWrtShell->InsertRow(1, true); + pWrtShell->InsertRow(1, true); + + // Now check if the table has 3 lines. + SwShellCrsr* pShellCrsr = pWrtShell->getShellCrsr(false); + SwTableNode* pTableNode = pShellCrsr->Start()->nNode.GetNode().FindTableNode(); + // This was 1, when doing the same using the UI, Writer even crashed. + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), pTableNode->GetTable().GetTabLines().size()); +} + void SwUiWriterTest::testReplaceBackward() { SwDoc* pDoc = createDoc(); diff --git a/sw/source/core/frmedt/fetab.cxx b/sw/source/core/frmedt/fetab.cxx index b2589d017cf1..f3e9491c7818 100644 --- a/sw/source/core/frmedt/fetab.cxx +++ b/sw/source/core/frmedt/fetab.cxx @@ -207,6 +207,14 @@ bool SwFEShell::InsertRow( sal_uInt16 nCnt, bool bBehind ) // search boxes via the layout SwSelBoxes aBoxes; + bool bSelectAll = StartsWithTable() && ExtendedSelectedAll(/*bFootnotes=*/false); + if (bSelectAll) + { + SwPaM* pPaM = getShellCrsr(false); + SwNode* pNode = pPaM->Start()->nNode.GetNode().FindTableNode()->EndOfSectionNode(); + pPaM->End()->nNode = pNode->GetIndex() - 2; + pPaM->End()->nContent.Assign(pPaM->End()->nNode.GetNode().GetCntntNode(), 0); + } GetTblSel( *this, aBoxes, nsSwTblSearchType::TBLSEARCH_ROW ); TblWait( nCnt, pFrm, *GetDoc()->GetDocShell(), aBoxes.size() ); diff --git a/sw/source/ui/shells/tabsh.cxx b/sw/source/ui/shells/tabsh.cxx index 44ddfca35e2e..10a11a0698c3 100644 --- a/sw/source/ui/shells/tabsh.cxx +++ b/sw/source/ui/shells/tabsh.cxx @@ -165,7 +165,8 @@ static SwTableRep* lcl_TableParamToItemSet( SfxItemSet& rSet, SwWrtShell &rSh ) if(rSh.GetBoxDirection( aBoxDirection )) rSet.Put(aBoxDirection, FN_TABLE_BOX_TEXTORIENTATION); - sal_Bool bTableSel = rSh.IsTableMode(); + bool bSelectAll = rSh.StartsWithTable() && rSh.ExtendedSelectedAll(/*bFootnotes=*/false); + sal_Bool bTableSel = rSh.IsTableMode() || bSelectAll; if(!bTableSel) { rSh.StartAllAction(); |