- 19 Eyl, 2018 40 kayıt (commit)
-
-
Michael Stahl yazdı
If the document is edited while redlines are shown, the node merge flags aren't updated because only CheckParaRedlineMerge() really updates the flags. But CheckParaRedlineMerge() knows what the last node of a merge is, so we can conclude that the next node then isn't merged and needs to have frames created for it. Change-Id: Ie9e189a2d9251910c3f5ac98a46867bbe1d91c10
-
Michael Stahl yazdı
... first node as not merged when there are redlines but not spanning nodes. Change-Id: Ieb6a5775a1f6a22874e622b10b245b7e8d61a62c
-
Michael Stahl yazdı
Change-Id: I818a22f286f08a842295e362fa3e10fbcb37c728
-
Michael Stahl yazdı
Change-Id: I17cde9fab29cf54837904db3c6e64d609aed83b0
-
Michael Stahl yazdı
... and footnotes that are anchored in a node of a merged frame that follows the one that is being split to the new frames of the existing node when the existing frames are moved to the new (preceding) node. Change-Id: I759718c14130e6a3809dc2ca55243f3ff2eec50b
-
Michael Stahl yazdı
... if the deleted node was the only one it was merged with. Change-Id: I7b73bb3bfa92d285c06cfb24e0bae4e81708dbb8
-
Michael Stahl yazdı
Unfortunately it doesn't work to just let the content editing functions that are called by the SwRangeRedline Show function set up the frames because they can't do it correctly, as the redline that is currently being Shown doesn't have a correct position; the position is only patched up afterwards in MoveFromSection. Change-Id: Ie94a2eea44befce55ad16db1f9349b1582a7f73e
-
Michael Stahl yazdı
An unfortunate incident involving a footnote accessing its old anchor node's layout frame during InsertHint and the MapModelToViewPos needing to have a mapping for this index... 6 SwTextFrame::MapModelToViewPos(SwPosition const&) const (this=0x8937760, rPos=SwPosition (node 41, offset 4)) at sw/source/core/text/txtfrm.cxx:1005 7 SwTextFrame::GetFrameAtPos(SwPosition const&) (this=0x8937760, rPos=SwPosition (node 41, offset 4)) at sw/source/core/text/frmcrsr.cxx:153 8 GetFrameOfModify(SwRootFrame const*, SwModify const&, SwFrameType, Point const*, SwPosition const*, bool) (pLayout=0x6a0a240, rMod=..., nFrameType=(SwFrameType::Txt | SwFrameType::NoTxt), pPoint=0x0, pPos=0x7ffcfa9d70a0, bCalcFrame=false) at sw/source/core/layout/frmtool.cxx:3517 9 SwContentNode::getLayoutFrame(SwRootFrame const*, Point const*, SwPosition const*, bool) const (this=0x6a67e20, _pRoot=0x6a0a240, pPoint=0x0, pPos=0x7ffcfa9d70a0, bCalcFrame=false) at sw/source/core/docnode/node.cxx:1137 10 SwFootnoteFrame::GetRefFromAttr() (this=0x8970a30) at sw/source/core/layout/ftnfrm.cxx:2839 11 SwContentNode::DelFrames(SwRootFrame const*, bool) (this=0x897ead0, pLayout=0x0, fromDtor=false) at sw/source/core/docnode/node.cxx:1419 12 SwTextNode::InsertHint(SwTextAttr*, SetAttrMode) (this=0x89ac890, pAttr=0x6a3ff60, nMode=(SetAttrMode::DONTREPLACE | SetAttrMode::NOTXTATRCHR)) at sw/source/core/txtnode/thints.cxx:1408 13 SwTextNode::CutImpl(SwTextNode*, SwIndex const&, SwIndex const&, int, bool) (this=0x6a67e20, pDest=0x89ac890, rDestStart=SwIndex (offset 2), rStart=SwIndex (offset 0), nLen=3, bUpdate=false) at sw/source/core/txtnode/ndtxt.cxx:2374 14 SwTextNode::CutText(SwTextNode*, SwIndex const&, int) (this=0x6a67e20, pDest=0x89ac890, rStart=SwIndex (offset 0), nLen=3) at sw/source/core/txtnode/ndtxt.cxx:2199 15 SwTextNode::JoinNext() (this=0x89ac890) at sw/source/core/txtnode/ndtxt.cxx:812 Change-Id: If0dc0f16eb124dc8a070b84684ee9ec9ab0dc70f
-
Michael Stahl yazdı
The first branch is a bit easier, because it always moves the existing frame onto the first node of the split anyway; the second branch may or may not need to do that, but it has to move it just to be sure if it needs to move it, which is a bit annoying... Change-Id: Ib2fc69c2bd99dffa958f1620211ec657a8cc1be8
-
Michael Stahl yazdı
... in particular all SwTextNodes on the same nodes-array nesting level as the first one; then UpdateMergedParaForInsert can handle insertions there. Change-Id: I59d12b87c1296c322ab1f21779240ec611919cb0
-
Michael Stahl yazdı
Change-Id: I8b00f406ae52c3280f9ec07c845ef7aa6e41617f
-
Michael Stahl yazdı
Change-Id: Ied4ca532b336cacf3c4a8d96b9e75dcbaf47ba29
-
Michael Stahl yazdı
The problem is if there is a delete redline that deletes the entire pFirstNode and ends in a different node, at the position where a hint starts; first m_pRedline->Seek() will be called with the wrong node, then the GetNextAttr() will call MapModelToView() and get 0 back again... Change-Id: Ie3eb1250267429ea3e3f6281685c955a79d4e960
-
Michael Stahl yazdı
Change-Id: I2d54ae4069c0c6813059f90a1003387512ee9ba1
-
Michael Stahl yazdı
In DocumentContentOperationsManager::SplitNode(), ensure that all redline updating is done in the restoreFunc. Change-Id: I918b8f24dcda0cc181cb0f33bb2ca170a14b0e98
-
Michael Stahl yazdı
... that have no extents as well; add a pointer to the last node that can be used for comparing. Change-Id: Ibe7a84b523bb5921b3ca7fed2e330c54d85c5498
-
Michael Stahl yazdı
If it sets the Merge flag, it needs to reset it too. Change-Id: I0b07ca87ff9911db37166312ca07edd15e8b496c
-
Michael Stahl yazdı
... so that the frames are repainted with/without font color. Change-Id: I68f105868d262c9d0a88f124c98243a64159aa38
-
Michael Stahl yazdı
If the layout wants to hide redlines, these should not be painted. Change-Id: I3cc725b466ca3874a00c6b96eb0e02ff70dcc42b
-
Michael Stahl yazdı
If there are no delete redlines in a frame, the mode must be Ignore, otherwise the insert redlines will be colorful... Change-Id: Ibd57f2827b0805ac2fdb29ed347d9b2ed0b00737
-
Michael Stahl yazdı
The flys have their anchor positions updated, and that causes lookups from the layout frame to the anchor SwTextFrame, but that isn't updated yet; it looks like the fly restore must be done after adapting the SwTextFrames, while the redline restore must be done before. Also RegisterToNode must call Check only for the 1st node. Change-Id: If87a62108f1bcaf794e5be1cc38dc936f08cd69e
-
Michael Stahl yazdı
The problem is that now the ctor of SwTextFrame will check the redline positions, but the call to MakeFramesForAdjacentContentNode() happens before the call to ContentIdxStore::Restore() that updates the SwPositions of the redlines, hence they point to the wrong node. Try to fix this by not calling Restore directly but pass in a closure to SwTextNode::SplitContentNode() so that it can call ContentIdxStore::Restore() before frames are created and redline positions are checked. Also remove the useless SwContentNode::SplitContentNode() - only the SwTextNode override actually did anything. Change-Id: I2088fd124d04cf354f4f0f691a50ff5217d778d7
-
Michael Stahl yazdı
... and SwDrawFrameFormat::MakeFrames() to do nothing if anchored in hidden redline. Change-Id: Idb0668db81b20ee52cd9c0237c22f8fa72beb7b3
-
Michael Stahl yazdı
There is no way to iterate over the nodes-array such that flys are ordered wrt. the flys in whose content they are anchored; this makes it hard to ensure that flys anchored in flys are handled only once. For the Hide implementation, when the flys anchored to a non-first merged SwTextNode in a fly are inserted, ensure that the content of the same fly is skipped if it happens to come later in the nodes-array. For the Show implementation, the ::MakeFrames() would call AppendAllObj() anyway; suppress that and manually call it at the end, which should avoid the problem. Change-Id: I7fb31cf14ef26c095fa7e09edd4ab530add9f253
-
Michael Stahl yazdı
Needs changes in Delete for consistency. Change-Id: If9382ebca9b6335ffef8c738840813837316f841
-
Michael Stahl yazdı
On hide, the SwTextFootnote::DelFrames() for a note in a deleted frame must actually delete the frames; if there's a follow SwTextFrame, then it might erroneously return without deleting anything. Change-Id: I7e9473b94feaf939be72e285553a8990c2ce1a06
-
Michael Stahl yazdı
InvalidateAllContent(Size) will basically format every paragraph in the document from scratch; let's try to optimise this a bit by invalidating only the SwTextFrames that actually contain redlines and the SwPageFrames they're on, and also invalidate the position of all flys anchored at these frames as a precautionary measure. Change-Id: I22ed683dc2225992ee48faa6084f277ef8733e8b
-
Michael Stahl yazdı
The old implementation would not actually hide at-char flys but move the anchor, which is clearly not ideal; better to hide them. Change-Id: If21d0360e04857752a2c84f5329eadfad7818ac8
-
Michael Stahl yazdı
A trivial patch to remove some FIXMEs; unfortunately one new FIXME because the SwSectionNode case isn't entirely trivial. Change-Id: I94f11ffd19b189b165ad1fb05488ba8617e81357
-
Michael Stahl yazdı
This requires some manual work to delete the footnote frames. Change-Id: I2c5efccdd1e97f26e18402b809ca4f893147cba1
-
Michael Stahl yazdı
The problem here is that nCurrStart is incremented, but then the early return isn't taken, so a position of nCurrStart + nLength is returned, and if the portion is the last in the line it will be beyond the end of the paragraph. (regression from CWS smarttags3) Change-Id: I58a0591202bd664a89c395ea06098eb939a7ed93
-
Michael Stahl yazdı
SwTextSizeInfo::m_pFnt may be an alias of either SwAttrIter or SwAttrHandler's SwFont members; keep these alive if they exist when re-initialising from SwAttrIter::Seek(). Change-Id: I8fcbcf3aa339dfc6fa33b5439facadc6034c8cf5
-
Michael Stahl yazdı
There aren't necessarily hints in every merged node. Change-Id: Id83319d8846602b65d9d25b850a8254daf8c54ff
-
Michael Stahl yazdı
Change-Id: I0aa83b5902b2e0e4d0c5371cdbf6ce6dccbf6e74
-
Michael Stahl yazdı
Change-Id: If54585d20bbe0fbf5c071e3a96737015d7d62c05
-
Michael Stahl yazdı
Change-Id: Ia7efc0639650af570acc98f62f9f36f683beb1fa
-
Michael Stahl yazdı
... frames unless the node is the owner / first node of the frame. Not sure what should happen if the node *is* the first node of a merged frame; let's not create a frame for the 2nd... node for now. Change-Id: I5b105d0745d67012bbbdf778811e417efaae8490
-
Michael Stahl yazdı
Change-Id: I3363c787779364e771e0406b0f9e90b0337bf03d
-
Michael Stahl yazdı
Change-Id: I1b42b386eb7323dcbf40d4086276bd0a74d581b9
-
Michael Stahl yazdı
... registered as listener on a node somehow. Change-Id: I1100726d3dd9cf46e1cc48e992cc5a1a0187b7c5
-