diff options
author | Michael Stahl <michael.stahl@allotropia.de> | 2024-03-04 15:45:07 +0100 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2024-03-06 10:45:57 +0100 |
commit | fcd4222d36e1864452163e5c94976eea353bbaf0 (patch) | |
tree | 64146015a4908ccbfca4d602dd0f812f9e0333b9 /jvmfwk | |
parent | a8b2efcd2124f08e6f3ba3613ce6993af9760e0a (diff) |
sw: SelectAll of section with RES_PAGEDESC corner-case
The main problem here is that if a document has a RES_PAGEDESC on its
first body text node, and you paste a section whose first text node also
has a RES_PAGEDESC, the result inevitably has a page break that wasn't
there before, and which is unwanted.
SwEditShell::CopySelToDoc() needs a change to include the end node of a
section at the start, so it is copied.
Change CopyImplImpl() to insert a non-textnode *before* a text node at
the insert position, instead of after it. This simplifies the
implementation: only SwFEShell::Paste() needs to care about removing an
empty trailing paragraph, but SwEditShell::CopySelToDoc() needs no
changes; both functions would need to delete the empty paragraph when
inserting after.
Several tests such as CppunitTest_sw_ooxmlexport3 testCrashWhileSave
fail because of this, which can be solved by removing the DelFullPara()
call in SwXText::copyText() that is now unnecessary.
Generalise and simplify the "bAfterTable" code in CopyImplImpl(): it
doesn't really matter what is before the insert position, what matters
is if the pasted text starts with a table or section.
Also, the fly-anchor-correction code (both here and in
SwUndoInserts::RedoImpl()) needs to move to the first text node also in
case a section was inserted (but the equal-looking code *before*
inserting remains as is!), in the situation where the last node will be
deleted.
Now there are some test failures:
unowriter.cxx:430:Assertion
Test name: (anonymous namespace)::testSectionAnchorCopyTableAtStart::TestBody
equality assertion failed
- Expected: quux
foo
bar
- Actual : quux
foo
This is because the end position was created from SwNodeIndex aInsPos
only, it needs to take also the aDestIdx from the "if (pEndTextNd)"
branch.
testTdf134250::TestBody finished in: 867ms
uiwriter2.cxx:462:Assertion
Test name: testTdf134250::TestBody
equality assertion failed
- Expected: 1
- Actual : 2
The section is pasted now, so there are 2.
uiwriter3.cxx:1519:Assertion
Test name: testTdf135733::TestBody
equality assertion failed
- Expected: 1
- Actual : 2
Table is now inserted before the first paragraph, which has a
RES_PAGEDESC.
(presumably regression from commit 9667e5ffd18d6167344e102b89a393bc981644ec)
Change-Id: I820e381113fee90a81249afbc2280bfc3ddb7647
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164401
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Diffstat (limited to 'jvmfwk')
0 files changed, 0 insertions, 0 deletions