summaryrefslogtreecommitdiff
path: root/sw/source/core/doc
AgeCommit message (Collapse)Author
2022-05-17tdf#147220 sw_redlinehide: update frames in ReplaceRangeImpl()Michael Stahl
Change-Id: Ie5d62eaec01a3b06ff1bd6070510384641ea7ad3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134483 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit 1f8795df957c18c5c06bf1d68d0d60b1d30f015d) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134448 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-04-21tdf#147723 sw_fieldmarkhide: fix crash when copying multiple fieldmarksMichael Stahl
The problem is the UpdateFramesForAddDeleteRedline() call in makeMark(), this is called in a loop for multiple fieldmarks and when it's called for the first one, of course the other ones aren't in the document yet, so HideIterator::Next() can't find them. But this is only needed when inserting a new fieldmark anyway, so just disable for copying. (regression from commit 92384a813176b964a67bcbeb2fa617c554dbc4a2) Change-Id: Ic1b34d469a553cf7bbf2d1a99edaea900bdd7417 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133215 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit 2f726fa41cbd249f2fb30222b29d5f30bce52e6e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133148 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-04-19tdf#147472: sw: bug in numbering with previous level NONEVasily Melenchuk
Previous fix for tdf#146257 was not complete and was not able to take care of disabled numebering started just at beginning of the numbering string. UI test test_tdf144439_outline with modifications is covering this situation. No need in extra testcases. Change-Id: Id17838cec7fb4fb039f9b457b7ee9ad3ab345678 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133124 Tested-by: Jenkins Reviewed-by: Vasily Melenchuk <vasily.melenchuk@cib.de> (cherry picked from commit a31a7b53c42eef3a8007766c60ec5a2539054a7c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133135 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-04-08sw: keep URL when applying frame style on imagesMiklos Vajna
It seems that the intention is to reset properties which are possible to set in a style when applying a style. For example the paragraph alignment can be defined in a paragraph style, so reset that on style apply. URLs on frames can't be defined for frame styles, so it looks incorrect to reset the URL of a frame/image on style apply, fix this. Change-Id: Ie3a57b654cf06b9512b25d2dc103d15cd83727b7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132675 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins (cherry picked from commit 97c18cf32a9a3088b5a51e2b0d535d8caf5daca8) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132697 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2022-04-08forcepoint#104 sw: do not delete fieldmark chars in MoveNodeRange()Michael Stahl
The problem is that SwXTextTableCursor::mergeRange() wants to move some nodes, and the deleteMarks() deletes a fieldmark creating a SaveBookmark but it contains the positions relative to the CH_TXT_ATR_FIELD* still in the text, while deleting the fieldmark of course removes these. The SaveBookmark would need to adjust the indexes and store the separator position too and the vector would need to be restored in reverse order. But every time the SaveBookmarks are created, they are restored as well, so it looks simpler to just suppress deleting the CH_TXT_ATR_FIELD* in this case, and inserting them too (latter is already done when copying text). Change-Id: I690c6432a38eab6dec10adff74e638f0e52cca55 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132531 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit 5d41c2461642364b7159398024acccbee12f6e3e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132589 Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2022-04-08sw: fix expansion of SetGetExpField in headers with split table rowsMichael Stahl
The problem is that a get field in a header on page N may calculate and show values that do not take into account a set field on page N-1. This happens if a table row with multiple columns is split across the pages: SwGetExpField::ChangeExpansion() calls GetBodyTextNode(), which returns the first node in the first column that is on page N, but in the SwNodes array this node is *before* any node in columns 2..M, any of which may be on page N-1 in the layout. So try to fix this by adding a page number to SetGetExpField and using that as the highest priority in operator<(). This is a bit risky because some of the places that create SetGetExpField don't have a frame to get the page number from; try to adapt all that call into MakeFieldList(), while leaving unrelated ones such as in MakeSetList() unchanged. Change-Id: Ied2a897ad34f0faf1ef3d50baad07b23fafd49bd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132641 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit 9dc6e2c9062725ef1f9d7e321cae5f4dbe8ca749) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132645 Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2022-04-03forcepoint#96 sw: delete fieldmarks in DelFullPara()Michael Stahl
The problem is that CorrAbs() will move any position of a fieldmark that's in the deleted SwTextNodes to a different node that doesn't have the CH_TXT_ATR_FIELD*. Then it will inevitably crash later when it can't find its chars. The other problem is that if there's only a CH_TXT_ATR_FIELDSEP in the deleted nodes, that fieldmark would then be missing it. Just delete fieldmarks with positions in deleted nodes, that should work fine for the usual cases where DelFullPara() is called. Change-Id: I8dfac9a315d74025dbe1ed5ccb95b7c9121fb569 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132379 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-03-15tdf#144563: remove final dot in cross-references to paragraphVasily Melenchuk
It looks like in cross-references ending with dot (".") one last dot is removed in case of MS Word. This is not a true for any other suffixes after numeration. Change-Id: I554e62cf45e643bf27823df5344e1689b5b6ae54 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131254 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de> Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131542 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2022-03-12sw: fix merging of format redlines in AppendRedline()Michael Stahl
This can cause: soffice.bin: sw/source/core/undo/undobj.cxx:1486: static void SwUndo::SetSaveData(SwDoc&, SwRedlineSaveDatas&): Assertion `rSData.empty() || rSData[0].m_bRedlineMoved || (rSData[0].m_nRedlineCount == rDoc.getIDocumentRedlineAccess().GetRedlineTable().size())' failed. When one character in middle of Format redline is deleted, then Undo. The condition is quite odd and apparently from initial CVS import; try to copy condition for merging Insert redlines instead. Change-Id: Ib56e12914269b878c16813b9e95b2f0df3330bbe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131208 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit 53560aa06462f1cf04d69acafed20da971bc5c27) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131196 Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2022-03-01tdf#146962 sw: hide deleted row at deletion in Hide ChangesLászló Németh
In Hide Changes mode, deleting table rows with change tracking wasn't applied on the table layout immediately, only using Show Changes and Hide Changes again. Now the deleted row removed from the table instead leaving an empty table row (except the last row of a wholly deleted table). See also commit 95213407dfcbf34056037d60243ff915340d1a2e "tdf#146622 sw crash fix: don't delete already deleted rows". Change-Id: I864957cafa38e631a65db0670c7b566cb689f4cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130701 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org> (cherry picked from commit a74c51025fa4519caaf461492e4ed8e68bd34885) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130685 Tested-by: László Németh <nemeth@numbertext.org>
2022-02-25Resolves tdf#142423 - Use absolute values for Writer stylesHeiko Tietze
Avoid rounding trouble when converting to DOCX Change-Id: Ie30f66671654b64b0b2596b14dc89d6f9befa8d1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130475 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org> (cherry picked from commit 3c94c670fa3c3a4e00e88de7463c5e35f32b866e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130455 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2022-02-07ofz#44471 crash in isMoved if re-insert of invalid range failedCaolán McNamara
Change-Id: I21a3a3e544c016205d65d7e81889ebfddc7e322d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129563 Tested-by: Jenkins Reviewed-by: Andras Timar <andras.timar@collabora.com>
2022-02-03tdf#147006 sw_fieldmarkhide: fix crash when deleting fly with fieldmarkMichael Stahl
The problem is similar to commit eef10be20a4c5108c68b19ccdda263c5ca852386, there is a fieldmark in a fly and this results in UpdateFramesForRemoveDeleteRedline() re-creating fly frames that have already been deleted in SwUndoFlyBase::DelFly(), and then the SwFlyAtContentFrame::SwClientNotify() crashes on a null anchor position in the SwFormat::ResetFormatAttr(RES_ANCHOR). This time the passed rPam is empty, after removing the dummy characters of the fieldmark; there isn't really anything to do in this case so just return. Change-Id: I475b8fcb0bcf94be58ff553454c261d75076303b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129308 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit bdf1d9b8151476531f2fbe06f66db260efcbc529) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129266 Tested-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-02-02tdf#147008 sw_fieldmarkhide: fix invalid NonTextFieldmark positionsMichael Stahl
Commit ab6176e88f78d0b3aa2490fbc7858304c2d4a437 introduced a crash in ModelToViewHelper when the positions of a NonTextFieldmark are invalid. The NonTextFieldmark must always contain 1 CH_TXT_ATR_FORMELEMENT but after SplitNode() the position is (rr) p *pFieldMark->m_pPos1 $2 = SwPosition (node 10, offset 1) (rr) p *pFieldMark->m_pPos2 $3 = SwPosition (node 9, offset 0) This is because in ContentIdxStoreImpl::SaveBkmks() there is an asymmetry where the m_pPos2 is recorded to be wrongly corrected to node 9, but if the positions were swapped so that m_pPos1 is the start position, then it will not be recorded and remain in node 10. So fix this by changing the NonTextFieldmark to insert its CH_TXT_ATR_FORMELEMENT differently. There is some very subtle code in SwTextNode::Update() that is again asymmetric and (non-obviously) prefers to move m_pPos2 and leave m_pPos1 alone (by moving it to aTmpIdxReg) in case the positions are equal. But then the fieldmark code increments "rEnd" (which is really the m_pPos1 i.e. the start after InsertString() returns), and then decrements m_pPos2. So avoid the problem by removing these 2 pointless adjustments. Then it turns a bunch of tests fail because other code assumes that m_pPos1 is the end of the NonTextFieldmark, so fix MarkManager::changeFormFieldmarkType(), ModelToViewHelper and SwHistoryNoTextFieldmark to use GetMarkStart(). Change-Id: I7c82f9a67661121662c95727e0f8f15e06d85a3a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129289 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit ea06852ee87531794f07710de496734a647a9062) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129265 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-02-01tdf#146964 sw layout: fix reappearing deletion in Hide ChangesLászló Németh
mode at moving text. Test: in Hide Changes mode, move the selected text by cutting and pasting it with change tracking. Before the fix, hidden deletion reappeared again (only clicking on Show Changes and Hide Changes again fixed the layout). Regression from commit f51fa7534421a195a58b4a737a2e836d8c25ba81 "tdf#145718 sw, DOCX import: complete tracked text moving" (cherry picked from commit a2d9b270ce8537ebb59de50ebd07697fe9aa191b) Conflicts: sw/qa/extras/layout/layout2.cxx Change-Id: Ia86f570bd634dd513fdbb93a83a929fd0ba4e273 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129278 Reviewed-by: László Németh <nemeth@numbertext.org> Tested-by: Jenkins
2022-01-26tdf#146857 sw change tracking: fix freezing during UndoLászló Németh
Re-insertion of hundreds of redlines during Undo resulted freezing, because of the unnecessary call of isMoved() in SwRedlineTable::Insert(), multiplying the slow Undo by ~40 extra redline checkings around each redline to find tracked text movings. Stop unnecessary call of isMoved() during Undo in SwRedlineTable::Insert(). The state of isMoved bit i.e. the green/double strikethrough/underline redline formatting is preserved anyway. Regression from commit f51fa7534421a195a58b4a737a2e836d8c25ba81 "tdf#145718 sw, DOCX import: complete tracked text moving". Change-Id: Ib7901c7b4fefd87633c49ef252750b84dcdb73dc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128762 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org> (cherry picked from commit b15638440d692dd8cce55c0e936fbb82d24f8414) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128953
2022-01-24tdf#122995 Trigger Chart refresh directly in UpdateCharts for SWArmin Le Grand (Allotropia)
For OLE/Charts in SW we do not (yet) have a refresh mechanism or embedding of the primitive represetation, so this needs to be done locally here (simple solution). To have the Chart already invalidated at the next repaint, I needed to add a 'immediate' mode to InvalidateTable. Note: The text there claiming that the framework should do this is correct, but as long as the mechanism is incomplete (VC/VOC/OC in SW) direct refresh is needed. Change-Id: I3c845b3ec46fbb494e7bce163cfe105145421450 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128572 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com> (cherry picked from commit d769e75de28a1afbb1df31b48840626cb35ed7ba) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128810 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2022-01-19sw: generalize ModelToViewHelper to handle all NonTextFieldmarksMichael Stahl
Rename getDropDownsFor() to getNoTextFieldmarksIn(). Move some code so that sw::mark::ExpandFieldmark can expand all fieldmarks that use CH_TXT_ATR_FORMELEMENT. Change-Id: I8a1e28fc0ad77df3a749d9e55c306cb45187a082 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128606 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit 4565382ee6f8fec96f0df94c34a2567816291c2e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128538 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2021-12-27tdf#146257: sw: better handling for list numbering = NONEVasily Melenchuk
Previously during refactoring were lost some corner cases with some level having disabled numbering. In this case LO should strip useless delimiters up to next level. For example, if second level has disabled numbering, third level should look like "1.1", but not "1..1". Change-Id: I259a16b456f51bc76d5c8360974d0acadfc36776 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127517 Tested-by: Jenkins Reviewed-by: Vasily Melenchuk <vasily.melenchuk@cib.de> (cherry picked from commit bf2b46aa15665dde63ceff4e7686b99b3990354f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127569 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2021-12-22tdf#135061 sw_redlinehide: fix copy into delete redline following tableMichael Stahl
When pasting, the entire document body is covered by a delete redline. The insert position is in the last node, whose SwTextFrame has a MergedPara, and the problem is that the MergedPara::pLastNode continues to point to the last node of the document, even when the delete redline is adjusted to end in a newly inserted node by SaveRedlEndPosForRestore::Restore(). Thus afer the 2nd paste, SwDoc::SearchNumRule() goes into infinite loop from node 141 to 86 and then jump via the bad MergedPara back to 141. The reason is that in DocumentContentOperationsManager::CopyWithFlyInFly() the RecreateStartTextFrames() isn't called. This is because it only checks if the preceding node is a text node, while here it is a table node. Fix this by checking if the node at the insert position is merged to a node preceding the previous node. Change-Id: I103b60b2bec86af11006ed591cfda2feb5f575a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127273 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit 70ac13eecfa620e94770a64110eeaa05f8c266e6) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127253
2021-12-22tdf#146243 sw: fix Undo of accepting table row insertionLászló Németh
Fix Undo of accepting table row insertion to get back the "false" value of HasTextChangesOnly property and the associated light blue table row background. This fixes also the missing update of the table row background at accepting the table row insertion. Follow-up to commit 8c028b7e41e3d350d0e67005b16faf0159cc5c12 "tdf#146244 sw: update HasTextChangesOnly in modified rows". Change-Id: I8e2436b6b7b67f06037481955ff22cdbc2b22dc0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127228 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org> (cherry picked from commit 1edaee2f03bce0efa409c592919458658d0aa751) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127186 Tested-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2021-12-21tdf#146244 sw: update HasTextChangesOnly in modified rowsLászló Németh
It's not forbidden to write in rows deleted or inserted with change tracking, also Accept/Reject only part of the text changes here. Improve to handle these in SwTableLine::UpdateTextChangesOnly() by keeping property HasTextChangesOnly = false (tracked row change) only if 1) there is an insert redline, which is the oldest redline in the row (tracked row insertion) or 2) there is a delete redline, which is the newest redline in the row, and no text outside of redlines, and no insert redline in the row, i.e. whole text content is deleted (tracked row deletion). Also update HasTextChangesOnly table row property at accepting SwRangeRedlines in changed table rows. And follow-up bug fix commits of this: commit bc206f7fd3b4a9e843c81f39dcd2faeeff9c785a "cid#1495785 silence Unchecked return value" and commit 213173edc5e47bb6da11f9a301f4dca71854a48c "sw: fix crash with commit 8c028b7e41e3d350d0e67005b16faf0159cc5c12". (cherry-picked from commit 8c028b7e41e3d350d0e67005b16faf0159cc5c12, commit bc206f7fd3b4a9e843c81f39dcd2faeeff9c785a and commit 213173edc5e47bb6da11f9a301f4dca71854a48c) Change-Id: I2bc556c732e1d0fdca24678c79351aafbfc156b2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127195 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
2021-12-17tdf#144565 sw_redlinehide: fix mailmerge when flys anchored at last nodeMichael Stahl
The InsertPageBreak() calls SplitNode() which is not ideal as the flys anchored at the last node of the document may end up anchored to the newly inserted node and this one will be removed again a bit further on: GetNodes().Delete( aDelIdx, iDelNodes ); ... which is what crashes, when the SwNodeIndex of the anchor is moved hard to a different node, which causes inconsistencies such as: sw/source/core/text/txtfrm.cxx:1263: TextFrameIndex SwTextFrame::MapModelToView(const SwTextNode*, sal_Int32) const: Assertion `static_cast<SwTextNode*>(const_cast<sw::BroadcastingModify*>(SwFrame::GetDep())) == pNode' failed. Instead, always use AppendTextNode() and then set the break item directly, which even simplifies the code. (reportedly a regression from 166b5010b402a41b192b1659093a25acf9065fd9 although i wasn't able to find an earlier version that didn't crash in some way) Change-Id: I4cac74fc86fc505f62b14cf0d7a7f9689c7402ba Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126921 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit 42448f48bb48a13d6618a181b12840db6d85c574) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126944
2021-12-15tdf#141175 sw_redlinehide: fix crash in lcl_DeleteRedlines()Michael Stahl
The GetNext() returns itself if it's alone in the Ring. (regression from 27aa4b16bf704d0246595750daf57b57ff2577b3) Change-Id: Idf92ce5362c4a4acf1582f463fe7bafc8553b400 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126844 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit 19f2054c6063177d08c818c5b7eeba7ab9178249) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126823 Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2021-12-15tdf#136855 sw: fix ReplaceRangeImpl() restoring of rPamMichael Stahl
This broke in CWS swrefactormarks2 (commit df6d312ca537402463e4eb0530f22b956600fc02) but for spell-checking the ReplaceRange() wasn't used until commit e1629c210ad78310e3d48c0756723134a27b89df. Change-Id: I4a6256b65b89e21e9e87ff45d0c5e6c4577a5846 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126842 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit d16c5f47600d236e911ae50d0e58a3f2256f5a61) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126821 Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2021-12-13tdf#146208 sw DOCX: fix crash at Redo of tracked table changesLászló Németh
Importing DOCX tables with tracked row deletion and insertion, accepting them, Undo, and accepting them again (or Redo) crashed LibreOffice, related to the missing Undo support of deletions in SwExtraRedlineTable. SwTableRowRedline is not used for DOCX export since commit dbc2bdffbec9b3f7eba485652cdd43634458b5a6 "tdf#145091 DOCX: don't export obsolete table row change data", so it's possible to switch off deletion of row changes in SwExtraRedlineTable to fix crashing, keeping SwTableRowRedline only to fix the round-trip of the original row change Date temporarily. Change-Id: I6ac571656e45c4299a07a63646bb28d6d1fcd081 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126662 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org> (cherry picked from commit 6a9cf64ea7509aac258f290cc1f204fd1ce1f974) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126748
2021-12-11tdf#146140 sw DOCX import: fix moveFrom regression with broken text contentLászló Németh
(Also a small clean-up: increase the character limit for tracked text moving detection: Only 2 or more (non-whitespace) character deletions are checked for it, because single characters are often typos or some control-like characters, e.g. soft hyphen, not real text movings.) Details of the regression: commit d32d9a2b3c5e3963f4a18f6c7bbf50fab2e9b2be "tdf#123460 DOCX track changes: moveFrom completely" fixed the missing redline import of the end of the moved paragraphs, but paragraph end was imported as w:del, not w:moveFrom explicitly. From commit f51fa7534421a195a58b4a737a2e836d8c25ba81 "tdf#145718 sw, DOCX import: complete tracked text moving" this resulted two deletions (a moved one and a plain one) instead of the previous single one. Moreover, exporting these double deletions at the same position to ODT, raised a back-compatibility issue with broken text content, see tdf#107292 (solved recently, but not in older LibreOffice versions). Removing the explicit w:del code path in writerfilter, it solved the regression from commit f51fa7534421a195a58b4a737a2e836d8c25ba81 "tdf#145718 sw, DOCX import: complete tracked text moving". See also commit 9e1e88ad5cf2dc0e9b188c60930445652a6c7519 "tdf#145720 DOCX export: fix loss of tracked moving". Change-Id: I15bfc83b87dd42a762ff84edf5bae765fe02a5ae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126631 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org> (cherry picked from commit 692bc46b25db61176b4ced7b7beffeca7d55068e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126669 Tested-by: László Németh <nemeth@numbertext.org>
2021-11-30tdf#54465 tdf#139336 sw: add compat. flag for footnote in columnAttila Szűcs
Add compatibility option FOOTNOTE_IN_COLUMN_TO_PAGEEND to keep layout of old ODT files, where multicolumn sections have footnotes in columns, growing sections to the full page. Note: Multicolumn page styles or not evenly distributed multicolumn sections, or footnotes not collected at the end of the sections still use footnotes in columns, so they don't need this compatibility option. Follow-up to commit 4c31b4ef2083087a822c3ae648fd09acc67d2f88 "tdf#139336 sw: fix extra pages of multicolumn sections with footnotes". Co-authored-by: Tibor Nagy (NISZ) Change-Id: I7d6a1f804b555dc5372767014b8fb5e3fa57ba9b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125442 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org> (cherry picked from commit 41cc1d2c0c0c3bfa5ba341311f68df05375859fb) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126001 Reviewed-by: Attila Szűcs <szucs.attila3@nisz.hu> Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
2021-11-28Revert "tdf#129183 sw: textboxes in group shapes - part 3"Stephan Bergmann
This reverts commit eabcfb3f18a6944d9ad89cecd3eb3ca7a2259cf3. Conflicts: sw/source/core/doc/textboxhelper.cxx It caused UITest_writer_tests4 to fail in an ASan build with > ==2987325==ERROR: AddressSanitizer: heap-use-after-free on address 0x6130000e5048 at pc 0x7f20cb3112ac bp 0x7f1e62de92d0 sp 0x7f1e62de92c8 > WRITE of size 8 at 0x6130000e5048 thread T47 > #0 in SwFrameFormat::SetOtherTextBoxFormat(SwTextBoxNode*) at sw/inc/frmfmt.hxx:106:77 > #1 in SwTextBoxNode::~SwTextBoxNode() at sw/source/core/doc/textboxhelper.cxx:1680:30 > #2 in SwFrameFormat::~SwFrameFormat() at sw/source/core/layout/atrfrm.cxx:2564:9 > #3 in SwDrawFrameFormat::~SwDrawFrameFormat() at sw/source/core/layout/atrfrm.cxx:3455:1 > #4 in SwDrawFrameFormat::~SwDrawFrameFormat() at sw/source/core/layout/atrfrm.cxx:3453:1 > #5 in SwFrameFormats::DeleteAndDestroyAll(bool) at sw/source/core/doc/docfmt.cxx:2115:9 > #6 in SwDoc::~SwDoc() at sw/source/core/doc/docnew.cxx:565:28 > #7 in SwDoc::release() at sw/source/core/doc/doc.cxx:118:9 > #8 in rtl::Reference<SwDoc>::clear() at include/rtl/ref.hxx:196:19 > #9 in SwDocShell::RemoveLink() at sw/source/uibase/app/docshini.cxx:444:16 > #10 in SwDocShell::~SwDocShell() at sw/source/uibase/app/docshini.cxx:372:5 > #11 in SwDocShell::~SwDocShell() at sw/source/uibase/app/docshini.cxx:362:1 > #12 in SwDocShell::~SwDocShell() at sw/source/uibase/app/docshini.cxx:362:1 > #13 in SvRefBase::ReleaseRef() at include/tools/ref.hxx:163:29 > #14 in tools::SvRef<SfxObjectShell>::~SvRef() at include/tools/ref.hxx:56:36 > #15 in IMPL_SfxBaseModel_DataContainer::~IMPL_SfxBaseModel_DataContainer() at sfx2/source/doc/sfxbasemodel.cxx:245:5 > #16 in void std::destroy_at<IMPL_SfxBaseModel_DataContainer>(IMPL_SfxBaseModel_DataContainer*) at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/stl_construct.h:88:15 > #17 in void std::allocator_traits<std::allocator<IMPL_SfxBaseModel_DataContainer> >::destroy<IMPL_SfxBaseModel_DataContainer>(std::allocator<IMPL_SfxBaseModel_DataContainer>&, IMPL_SfxBaseModel_DataContainer*) at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/alloc_traits.h:537:4 > #18 in std::_Sp_counted_ptr_inplace<IMPL_SfxBaseModel_DataContainer, std::allocator<IMPL_SfxBaseModel_DataContainer>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/shared_ptr_base.h:528:2 > #19 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/shared_ptr_base.h:168:6 > #20 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/shared_ptr_base.h:705:11 > #21 in std::__shared_ptr<IMPL_SfxBaseModel_DataContainer, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/shared_ptr_base.h:1154:31 > #22 in std::__shared_ptr<IMPL_SfxBaseModel_DataContainer, (__gnu_cxx::_Lock_policy)2>::reset() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/shared_ptr_base.h:1272:9 > #23 in SfxBaseModel::dispose() at sfx2/source/doc/sfxbasemodel.cxx:757:13 > #24 in SwXTextDocument::dispose() at sw/source/uibase/uno/unotxdoc.cxx:549:19 > #25 in SfxBaseModel::close(unsigned char) at sfx2/source/doc/sfxbasemodel.cxx:1482:5 > #26 in SwXTextDocument::close(unsigned char) at sw/source/uibase/uno/unotxdoc.cxx:562:19 > #27 in SfxBaseModel::dispose() at sfx2/source/doc/sfxbasemodel.cxx:718:13 > #28 in SwXTextDocument::dispose() at sw/source/uibase/uno/unotxdoc.cxx:549:19 > #29 in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) at bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:77:5 > #30 in cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, _typelib_TypeDescriptionReference*, int, _typelib_MethodParameter*, void*, void**, _uno_Any**) at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:233:13 > #31 in unoInterfaceProxyDispatch at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:413:13 > #32 in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny> >*) const at binaryurp/source/incomingrequest.cxx:235:13 > #33 in binaryurp::IncomingRequest::execute() const at binaryurp/source/incomingrequest.cxx:78:26 > #34 in request at binaryurp/source/reader.cxx:85:9 > #35 in cppu_threadpool::JobQueue::enter(void const*, bool) at cppu/source/threadpool/jobqueue.cxx:100:17 > #36 in cppu_threadpool::ORequestThread::run() at cppu/source/threadpool/thread.cxx:164:31 > #37 in threadFunc at include/osl/thread.hxx:189:15 > #38 in osl_thread_start_Impl(void*) at sal/osl/unx/thread.cxx:264:9 > #39 in start_thread at <null> > #40 in __GI___clone3 at <null> > > 0x6130000e5048 is located 328 bytes inside of 376-byte region [0x6130000e4f00,0x6130000e5078) > freed by thread T47 here: > #0 in operator delete(void*, unsigned long) at ~/github.com/llvm/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:164:3 > #1 in SwFlyFrameFormat::~SwFlyFrameFormat() at sw/source/core/layout/atrfrm.cxx:2912:1 > #2 in SwFrameFormats::DeleteAndDestroyAll(bool) at sw/source/core/doc/docfmt.cxx:2115:9 > #3 in SwDoc::~SwDoc() at sw/source/core/doc/docnew.cxx:565:28 > #4 in SwDoc::release() at sw/source/core/doc/doc.cxx:118:9 > #5 in rtl::Reference<SwDoc>::clear() at include/rtl/ref.hxx:196:19 > #6 in SwDocShell::RemoveLink() at sw/source/uibase/app/docshini.cxx:444:16 > #7 in SwDocShell::~SwDocShell() at sw/source/uibase/app/docshini.cxx:372:5 > #8 in SwDocShell::~SwDocShell() at sw/source/uibase/app/docshini.cxx:362:1 > #9 in SwDocShell::~SwDocShell() at sw/source/uibase/app/docshini.cxx:362:1 > #10 in SvRefBase::ReleaseRef() at include/tools/ref.hxx:163:29 > #11 in tools::SvRef<SfxObjectShell>::~SvRef() at include/tools/ref.hxx:56:36 > #12 in IMPL_SfxBaseModel_DataContainer::~IMPL_SfxBaseModel_DataContainer() at sfx2/source/doc/sfxbasemodel.cxx:245:5 > #13 in void std::destroy_at<IMPL_SfxBaseModel_DataContainer>(IMPL_SfxBaseModel_DataContainer*) at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/stl_construct.h:88:15 > #14 in void std::allocator_traits<std::allocator<IMPL_SfxBaseModel_DataContainer> >::destroy<IMPL_SfxBaseModel_DataContainer>(std::allocator<IMPL_SfxBaseModel_DataContainer>&, IMPL_SfxBaseModel_DataContainer*) at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/alloc_traits.h:537:4 > #15 in std::_Sp_counted_ptr_inplace<IMPL_SfxBaseModel_DataContainer, std::allocator<IMPL_SfxBaseModel_DataContainer>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/shared_ptr_base.h:528:2 > #16 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/shared_ptr_base.h:168:6 > #17 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/shared_ptr_base.h:705:11 > #18 in std::__shared_ptr<IMPL_SfxBaseModel_DataContainer, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/shared_ptr_base.h:1154:31 > #19 in std::__shared_ptr<IMPL_SfxBaseModel_DataContainer, (__gnu_cxx::_Lock_policy)2>::reset() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/shared_ptr_base.h:1272:9 > > previously allocated by thread T10 here: > #0 in operator new(unsigned long) at ~/github.com/llvm/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:95:3 > #1 in SwDoc::MakeFlyFrameFormat(rtl::OUString const&, SwFrameFormat*) at sw/source/core/doc/docfmt.cxx:756:33 > #2 in SwDoc::MakeFlySection_(SwPosition const&, SwContentNode const&, RndStdIds, SfxItemSet const*, SwFrameFormat*) at sw/source/core/doc/doclay.cxx:171:33 > #3 in SwDoc::MakeFlySection(RndStdIds, SwPosition const*, SfxItemSet const*, SwFrameFormat*, bool) at sw/source/core/doc/doclay.cxx:337:19 > #4 in SwXFrame::attachToRange(com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&, SwPaM const*) at sw/source/core/unocore/unoframe.cxx:2821:29 > #5 in SwXFrame::attach(com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) at sw/source/core/unocore/unoframe.cxx:3115:9 > #6 in SwXTextFrame::attach(com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) at sw/source/core/unocore/unoframe.cxx:3346:15 > #7 in SwXText::insertTextContent(com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&, com::sun::star::uno::Reference<com::sun::star::text::XTextContent> const&, unsigned char) at sw/source/core/unocore/unotext.cxx:615:15 > #8 in SwXText::insertTextContentWithProperties(com::sun::star::uno::Reference<com::sun::star::text::XTextContent> const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) at sw/source/core/unocore/unotext.cxx:1472:5 > #9 in non-virtual thunk to SwXText::insertTextContentWithProperties(com::sun::star::uno::Reference<com::sun::star::text::XTextContent> const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) at sw/source/core/unocore/unotext.cxx > #10 in SwTextBoxHelper::create(SwFrameFormat*, SdrObject*, bool) at sw/source/core/doc/textboxhelper.cxx:100:29 > #11 in SwXShape::setPropertyValue(rtl::OUString const&, com::sun::star::uno::Any const&) at sw/source/core/unocore/unodraw.cxx:1165:25 > #12 in SdXMLShapeContext::SetStyle(bool) at xmloff/source/draw/ximpshap.cxx:701:27 > #13 in SdXMLCustomShapeContext::startFastElement(int, com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> const&) at xmloff/source/draw/ximpshap.cxx:3545:5 > #14 in SvXMLImport::startFastElement(int, com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> const&) at xmloff/source/core/xmlimp.cxx:805:15 > #15 in (anonymous namespace)::Entity::startElement((anonymous namespace)::Event const*) at sax/source/fastparser/fastparser.cxx:468:27 > #16 in sax_fastparser::FastSaxParserImpl::callbackStartElement(unsigned char const*, unsigned char const*, unsigned char const*, int, unsigned char const**, int, unsigned char const**) at sax/source/fastparser/fastparser.cxx:1304:21 > #17 in (anonymous namespace)::call_callbackStartElement(void*, unsigned char const*, unsigned char const*, unsigned char const*, int, unsigned char const**, int, int, unsigned char const**) at sax/source/fastparser/fastparser.cxx:331:18 > #18 in xmlParseStartTag2 at workdir/UnpackedTarball/libxml2/parser.c:9658:6 > #19 in xmlParseTryOrFinish at workdir/UnpackedTarball/libxml2/parser.c:11453:14 Change-Id: I752190e05fc3c282b75021724527f623f56ee6a6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125977 Tested-by: Jenkins Tested-by: René Engelhard <rene@debian.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com> (cherry picked from commit 4fb7967fb2e67717f79eb87519c1444a82350a83) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125906
2021-11-24Fix typos and translationsAndrea Gelmini
Change-Id: Ic358f008e09718b6f726a55edfe3a3f78bba2942 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125728 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Jenkins
2021-11-24tdf#145621 sw: fix crash pasting paragraph with cross-reference markMichael Stahl
At last, a case where copying a mark fails for legitimate reasons. (regression from 4bf04dea9afb30a9395e80b07a81d1908937ee8b) Change-Id: I7a318e03c0b0d30e204eadb5012f190edbbba486 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125767 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2021-11-24Fix typosAndrea Gelmini
Change-Id: Ibc2eb80d7cc0cfc22c7fea0dc7ebe495ae0927c6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125765 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2021-11-24tdf#129183 sw: textboxes in group shapes - part 3Attila Bakos (NISZ)
Grouping/ungrouping nested groups works now. Manual test: 1. Insert Shape. 2. Right-click on selected shape, Add Text Box (and some text). 3. Insert a new shape. 4. Select and group the two shapes. 3. Insert a third shape. 4. Select and group the shape and the previously grouped shapes. The text box remains in the nested shape group. Details: 1) tdf#144271 memory leak of SwTextBoxHelper, by replacing the textbox structure vector with std::unordered map, and rethinking of the ownership of the objects. If a SwFrameFormat dies, and that is a FLYFRMFMT, it will be deleted from the textbox node and the FrameFormat table in the doc too, and the drawing will be stay as it was before. If the dying format is a drawing, all the textboxes, and the node will be deleted. 2) Introducing the new UNO property TextBoxContent, which is needed for writerfilter/xmloff later to set a new textbox for the shape via UNO. 3) Missing parameters are present now for syncing the textbox parameters. 4) Introducing a new function namely the handleGroupTextBox() to do the tasks simply with all textboxes in a group shape. This can handle nested groups as well (group in a group). Known issues: now copy of nested group objects is implemented but not enabled, because it causes an assert. Change-Id: I931886eda01c7a3db93098de10f5e5f48f2f217b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124657 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
2021-11-23tdf#145719 sw: track moved text in import and ChangesInMarginLászló Németh
Recognize moved text by accessing to the hidden redline content pContentSect during ODT import (in the case of Delete redlines) and ChangesInMargin mode (Delete or Insert redlines depending on Deletion in Margin or Insertion in Margin modes). Fix Undo and redline stack handling by moving IsMoved bit to SwRedlineData from SwRangeRedline. Note: .fodt format is applicable for the unit test document, because it's not affected by the problem. Change-Id: Ifd4f993520bec4b845d978a844c465509ea87b50 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125552 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
2021-11-22Crash when fetching clipboard data.Michael Meeks
Seems like some unusual corner-case around HTML export. sw::DocumentContentOperationsManager::CopyImplImpl(SwPaM&, SwPosition&, bool, SwPaM*, bool) const /sw/source/core/doc/DocumentContentOperationsManager.cxx:5068 sw::DocumentContentOperationsManager::CopyImpl(SwPaM&, SwPosition&, bool, SwPaM*, bool) const /sw/source/core/doc/DocumentContentOperationsManager.cxx:4609 sw::DocumentContentOperationsManager::CopyRange(SwPaM&, SwPosition&, bool, bool, bool) const /sw/source/core/doc/DocumentContentOperationsManager.cxx:1936 SwEditShell::CopySelToDoc(SwDoc*) /sw/inc/pam.hxx:193 (discriminator 2) SwFEShell::Copy(SwDoc*, rtl::OUString const*) /sw/source/core/frmedt/fecopy.cxx:224 (anonymous namespace)::lclOverWriteDoc(SwWrtShell&, SwDoc&) /sw/source/uibase/dochdl/swdtflvr.cxx:413 SwTransferable::GetData(com::sun::star::datatransfer::DataFlavor const&, rtl::OUString const&) /include/sfx2/objsh.hxx:866 TransferableHelper::getTransferData2(com::sun::star::datatransfer::DataFlavor const&, rtl::OUString const&) /include/com/sun/star/uno/Type.h:121 TransferableHelper::getTransferData(com::sun::star::datatransfer::DataFlavor const&) /include/rtl/ustring.hxx:438 getFromTransferrable.isra.0 /include/com/sun/star/uno/Any.hxx:151 encodeImageAsHTML /desktop/source/lib/init.cxx:4382 doc_getTextSelection Change-Id: I1af52d827ebdc9bbc5278f56547d1b3fd1b87e7c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125454 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2021-11-19Drop F_2PIMike Kaganski
Change-Id: Ie98606607b2ce262e4eed76bb8cd86fbfe846f76 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125506 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-11-17tdf#145718 sw, DOCX import: complete tracked text movingLászló Németh
Add IsMoved bit to SwRangeRedline, and keep it in both parts of a split Delete/Insert redline. Set this bit during DOCX import, fixing incomplete import of moveFrom/moveTo elements. Details: - Search text moving only at redline Insert() and AppendRedline() instead in the layout code (which was much slower, because triggered by also mouse hovering): - detect text moving in Hide Changes mode, too; - Insertion inside or directly after tracked text moving keeps "moved text" layout of the original moved text parts (before and after the insertion). - at detection of text moving, invalidate (update) layout of the redline pair, too. - fix DOCX import: extend makeRedline() with property RedlineMoved to keep all moveFrom/moveTo stored in DOCX instead of losing them (joining them with normal redlines) in the case of missing Delete/Insert pair (see unit test document); Follow-up to commit ec577f566fa3e6d2666069180f8ec8474054aea9 "tdf#145233 sw track changes: show moved text in green color", commit bcdebc832b272662d28035007a4796e42d1305ae "tdf#104797 DOCX change tracking: handle moveFrom and moveTo" and commit d32d9a2b3c5e3963f4a18f6c7bbf50fab2e9b2be "tdf#123460 DOCX track changes: moveFrom completely". Change-Id: Iaca80e5e326a172bc7ba5fec64b63668b9378e2d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125317 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
2021-11-16ofz#40766 svtools, sw: HTMLParser: really stop inserting control charsMichael Stahl
35d248cab1f0d4800f72abb5cb6afb56f40d9083 forgot to fix one place where control characters were in a presumed XML declaration. Another place looks missing where comments are handled, but it's not clear if these can be passed on to Writer. Revert the previous fix from commit b3325ef8cdfc2c82eec34e747106f75a9fccb7e4. Change-Id: I11ad13de9122533626e512ce0384051e3e5bd97f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125306 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2021-11-13Use o3tl::convertMike Kaganski
Change-Id: I78db3001d602ec1a0847785b3c127b9d345f5af7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125173 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-11-08sw: try grouping undo actions of IME-edited textMiklos Vajna
This is a problem since commit e7760d428bc82ccfcae14f1907b78f9f1013b88c (Fix tdf#87500 - Freeze with English/Japanese mixture undo., 2015-09-08), that started not grouping IME-edited text completely. This means that in case you go via SwEditWin::Command() instead of SwEditWin::KeyInput() to type a 4 characters word, then it'll create 4 undo actions. Fix the problem by tracking who was the last caller of sw::DocumentContentOperationsManager::InsertString(), so we can only disable grouping switching between IME and non-IME, and we can have grouping for a series of IME input. Change-Id: I31bd02db4fe653ab63e41a77c75b8bebfc749ff1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124766 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2021-11-07return XShape from SdrObject::getUnoShapeNoel Grandin
instead of XInterface, to make it obvious what the reality of the requirement is Change-Id: Icdd4113f2a0ece930305f4d8ba010b81d24f43c3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124802 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-11-06ofz40766 Null-dereferenceCaolán McNamara
Change-Id: Ie9df072747311791ac04699cb8c3101a03da7431 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124801 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-11-05sw: ~SwDoc: delete TOXTypes after TOXMarksMichael Stahl
warn:sw.core:24584:24584:sw/source/core/attr/calbck.cxx:156: lost a client of type: 9SwTOXMark at 0x57728d0 still registered on type: 8SwModify at 0x55a9c70. soffice.bin: sw/source/core/attr/calbck.cxx:159: virtual SwModify::~SwModify(): Assertion `!hasListenersOnDeath' failed. Change-Id: I118426e802e7f7346e579b807a4d8c85252ffeb3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124757 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2021-11-04tdf#48622 Add new border line width defaultsSamuel Mehrbrodt
* Hairline (0.05pt) * Very thin (0.5pt) * Thin (0.75pt) * Medium (1.5pt) * Thick (2.25pt) * Extra thick (4.5pt) This unifies the default border line widths throughout the program. Users can still set any line width they want by chosing "Custom" in the "Border" tabpage. Also, existing documents won't be changed. The new defaults are just for newly added borders. Change-Id: I7af85dc189a688a749812824508c33c7814b50f5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122683 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2021-11-03tdf#145311 sw track changes: fix moving over empty list itemLászló Németh
which was changed to tracked insertion. Follow-up to commit 4c982dbafdac900e233d7b68d95c9c99244defc1 "tdf#145225 sw track changes: fix bad insert at moving". Change-Id: If3d70da71188e95b5aeea9b72e7c9de22d7c7150 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124645 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
2021-10-31Prepare for removal of non-const operator[] from Sequence in swMike Kaganski
Change-Id: Ie9530262e4addec01091cc1147e68be5b5a782f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124398 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-10-29use virtual function call for dynamic dispatchBjoern Michaelsen
... as it is around since the dawn of C++ and should be stable -- certainly more stable and less errorprone that manual typetagging. Change-Id: I5dfe2ce40c2334dc8fe60705d358779fa4bf1586 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124131 Tested-by: Jenkins Reviewed-by: Bjoern Michaelsen <bjoern.michaelsen@libreoffice.org>
2021-10-29consolidate DDE updates in FieldTypeBjoern Michaelsen
Change-Id: I70243dad4cd62ab1f601d010e0bcf441831ec556 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124130 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> Tested-by: Jenkins
2021-10-26tdf#145225 sw track changes: fix bad insert at movingLászló Németh
Moving up a list item over a tracked paragraph insertion changed non-tracked text to tracked insertion. Manual test: - Create a 3-element list; - switch on Record Changes and Show Changes; - at the end of the list item 2, press Enter to insert a new list item, and type some text: Item 1 Item 2[ New item] Item 3 where parenthesis shows the boundaries of the tracked insertion; - move up the last list item over list item 2 (the unmodified paragraph text with a tracked paragraph insertion at the end). Paragraph text before the tracked paragraph insertion changed to tracked insertion joining its tracked insertion with the moved list item, resulting only 2 tracked changes: Item 1 [Item 3 Item 2 New item] [Item 3] instead of the requested 3 changes: Item 1 [Item 3] Item 2[ New item] [Item 3] Change-Id: I4716b2d244b57cf86d7d14d972452191549f5fea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124144 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2021-10-24cid#1493242 silence Copy-paste errorCaolán McNamara
Change-Id: Id95cab7b70a9f97dadadb8d0cff64674ec3711b7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124119 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>