diff options
author | Michael Stahl <Michael.Stahl@cib.de> | 2018-10-05 18:50:53 +0200 |
---|---|---|
committer | Michael Stahl <Michael.Stahl@cib.de> | 2018-11-15 15:09:57 +0100 |
commit | 9933690d08667f410cdab34d4c698cf80f046a56 (patch) | |
tree | e9c846c1e7387598757c787be4655f8d5ea29649 /sw/source/core/layout/wsfrm.cxx | |
parent | a12bb53c861c878b53602c455f42f2b7e60e3c26 (diff) |
sw_redlinehide_3: stop SwAccessibleParagraph listening at SwTextNode
The SwAccessibleParagraph is a client of SwTextNode, just so that it can
dispose its mpParaChangeTrackInfo on any and all editing operations.
This won't work with merged paragraphs, but on the other hand it's not
necessary with merged paragraphs because the
initChangeTrackTextMarkupLists() does nothing if IsHideRedlines().
However there is the problem that the node and the frame might become
mis-matched if the frame is "moved around", so to avoid problems due to
that, listen on the SwTextFrame instead of the node, and have the
SwTextFrame relay any events it gets.
Though the frame is only SwClient, this is now possible thanks to
the SfxBroadcaster on the SwFrame class, so convert to SfxListener;
also the Accessible lifetime is tied to SwTextFrame anyway.
In UnHideRedlines(), send a dummy event too so that toggling Show/Hide
disposes the mpParaChangeTrackInfo too, which previously happened
as a side effect of moving the redlines around in the nodes-array.
Change-Id: I4e5a7107cb55d408266ee42463f9fa2a4a8b721b
Diffstat (limited to 'sw/source/core/layout/wsfrm.cxx')
-rw-r--r-- | sw/source/core/layout/wsfrm.cxx | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx index fa8c6be8254c..69f6b1185134 100644 --- a/sw/source/core/layout/wsfrm.cxx +++ b/sw/source/core/layout/wsfrm.cxx @@ -4340,6 +4340,7 @@ static void UnHideRedlines(SwRootFrame & rLayout, pFrame->SetMergedPara(nullptr); } } + pFrame->Broadcast(SfxHint()); // notify SwAccessibleParagraph } } if (!rNode.IsCreateFrameWhenHidingRedlines()) |