diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-10-28 11:15:43 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-10-28 12:00:22 +0100 |
commit | d1eb536c7e410d40fd94c76b157bbd4ed7944d4c (patch) | |
tree | 41318621a75eb281cfaf081c0cb654e73a41ea33 | |
parent | ed2790435f74d6eaa28fcc758d2db9e1c77b5170 (diff) |
fdo#69893 fix SwWrtShell::SelAll() to work with empty table at doc start
In theory, it was a problem to have the table cursor around when having
the selection outside the table; but it didn't cause a problem so far.
However, when the table has one or more empty cells, we really need to
leave table mode, otherwise only the table gets selected.
Change-Id: I766903ed624b9338f0612697b4c03f44de1d2e41
-rw-r--r-- | sw/qa/extras/uiwriter/data/fdo69893.odt | bin | 0 -> 7178 bytes | |||
-rw-r--r-- | sw/qa/extras/uiwriter/uiwriter.cxx | 16 | ||||
-rw-r--r-- | sw/source/ui/wrtsh/select.cxx | 6 |
3 files changed, 22 insertions, 0 deletions
diff --git a/sw/qa/extras/uiwriter/data/fdo69893.odt b/sw/qa/extras/uiwriter/data/fdo69893.odt Binary files differnew file mode 100644 index 000000000000..a2f7aa7695c7 --- /dev/null +++ b/sw/qa/extras/uiwriter/data/fdo69893.odt diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index fa0bb144dbeb..8fd994724cb1 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -8,6 +8,7 @@ #include <swmodeltestbase.hxx> #include <ndtxt.hxx> +#include <wrtsh.hxx> #include "UndoManager.hxx" @@ -21,10 +22,12 @@ public: //Regression test of fdo#70143 //EDITING: undo search&replace corrupt text when searching backward void testReplaceBackward(); + void testFdo69893(); CPPUNIT_TEST_SUITE(SwUiWriterTest); CPPUNIT_TEST(testReplaceForward); CPPUNIT_TEST(testReplaceBackward); + CPPUNIT_TEST(testFdo69893); CPPUNIT_TEST_SUITE_END(); private: @@ -97,6 +100,19 @@ void SwUiWriterTest::testReplaceBackward() CPPUNIT_ASSERT_EQUAL(ORIGINAL_REPLACE_CONTENT, pTxtNode->GetTxt()); } +void SwUiWriterTest::testFdo69893() +{ + SwDoc* pDoc = createDoc("fdo69893.odt"); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + + pWrtShell->SelAll(); + + SwShellCrsr* pShellCrsr = pWrtShell->getShellCrsr(false); + SwTxtNode& rEnd = dynamic_cast<SwTxtNode&>(pShellCrsr->End()->nNode.GetNode()); + // Selection did not include the para after table, this was "B1". + CPPUNIT_ASSERT_EQUAL(OUString("Para after table."), rEnd.GetTxt()); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/ui/wrtsh/select.cxx b/sw/source/ui/wrtsh/select.cxx index 8eb0d6a53392..972e3ef6e8f3 100644 --- a/sw/source/ui/wrtsh/select.cxx +++ b/sw/source/ui/wrtsh/select.cxx @@ -162,7 +162,13 @@ long SwWrtShell::SelAll() bool bStartsWithTable = StartsWithTable(); if (bStartsWithTable) + { + // Disable table cursor to make sure getShellCrsr() returns m_pCurCrsr, not m_pTblCrsr. + if (IsTableMode()) + TblCrsrToCursor(); + // Do the extended select all on m_pCurCrsr. ExtendedSelectAll(/*bFootnotes =*/ false); + } if( pStartPos ) { |