[Libreoffice-commits] core.git: sd/source

Caolán McNamara caolanm at redhat.com
Fri Jul 18 02:00:43 PDT 2014


 sd/source/ui/view/outlview.cxx |    2 ++
 1 file changed, 2 insertions(+)

New commits:
commit a5793f5e0013b156600fd718d8f77870a9e73032
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jul 18 09:06:44 2014 +0100

    Resolves: fdo#81487 pasting into outline view crashes impress
    
    CreateTitleTextObject will call indirectly ImpPageChange which
    triggers tools::EventMultiplexerEvent::EID_PAGE_ORDER and so
    in outlview.cxx without ignore page changes level in action
    the outliner is filled in from the slide contents in
    FillOutliner clearing the outliner contents and filling it
    fresh, but..
    
    a) this hack tower is not prepared for all the outliner
    iterators to become invalid
    b) the contents of this title object is empty, because
    it was just created, and we didn't get a chance to fill
    in its text.
    
    This all works for typing vs pasting because the KeyInput
    uses the OutlineViewPageChangesGuard guard which sets the
    ignore pages changes bit.
    
    So, given that OutlineView::UpdateDocument expects
    the iterators of the outliner to be valid during
    the lifetime of the method lock the full method with
    the OutlineViewPageChangesGuard guard
    
    Change-Id: Iecbf37d54f5f0c5a181be5f27832f769a3d2e389

diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx
index 268a32b..a76bb0b 100644
--- a/sd/source/ui/view/outlview.cxx
+++ b/sd/source/ui/view/outlview.cxx
@@ -1535,6 +1535,8 @@ void OutlineView::EndModelChange()
 /** updates all changes in the outliner model to the draw model */
 void OutlineView::UpdateDocument()
 {
+    OutlineViewPageChangesGuard aGuard(this);
+
     const sal_uInt32 nPageCount = mrDoc.GetSdPageCount(PK_STANDARD);
     Paragraph* pPara = mrOutliner.GetParagraph( 0 );
     sal_uInt32 nPage;


More information about the Libreoffice-commits mailing list