[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    =?utf-8?q?=5Bcalligra/textlayout-anchors-boemann=5D_/=3A_Don=27t?=
From:       Sebastian Sauer <sebastian.sauer () kdab ! com>
Date:       2011-04-30 15:15:39
Message-ID: 20110430151539.4068EA60A6 () git ! kde ! org
[Download RAW message or body]

Git commit d8abbc126712ae649b35140ad85e5256e6af40b0 by Sebastian Sauer.
Committed on 30/04/2011 at 17:13.
Pushed by sebsauer into branch 'textlayout-anchors-boemann'.

Don't crash.

M  +1    -1    libs/textlayout/AnchorStrategy.cpp     
M  +5    -3    libs/textlayout/KoTextDocumentLayout.cpp     
M  +4    -2    words/part/KWDocument.cpp     

http://commits.kde.org/calligra/d8abbc126712ae649b35140ad85e5256e6af40b0

diff --git a/libs/textlayout/AnchorStrategy.cpp b/libs/textlayout/AnchorStrategy.cpp
index 1da3e60..195d8ac 100644
--- a/libs/textlayout/AnchorStrategy.cpp
+++ b/libs/textlayout/AnchorStrategy.cpp
@@ -54,7 +54,7 @@ void AnchorStrategy::updatePosition(KoShape *shape, const QTextDocument *documen
     KoTextDocumentLayout *lay = qobject_cast<KoTextDocumentLayout*>(document->documentLayout());
     Q_ASSERT(lay);
     KoTextLayoutRootArea *rootArea = lay->rootAreaForPosition(posInDocument);
-
+    Q_ASSERT(rootArea);
     KoShapeContainer *container = dynamic_cast<KoShapeContainer*>(rootArea->associatedShape());
     if (container == 0) {
         if (m_model)
diff --git a/libs/textlayout/KoTextDocumentLayout.cpp b/libs/textlayout/KoTextDocumentLayout.cpp
index 9f26bb7..ad00fad 100644
--- a/libs/textlayout/KoTextDocumentLayout.cpp
+++ b/libs/textlayout/KoTextDocumentLayout.cpp
@@ -295,13 +295,11 @@ void KoTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posi
         qDebug() << "positionInlineObject called";
     //We are called before layout so that we can position objects
     Q_ASSERT(format.isCharFormat());
-    Q_ASSERT(false);
+//     Q_ASSERT(false);
     if (d->inlineTextObjectManager == 0)
         return;
     QTextCharFormat cf = format.toCharFormat();
     KoInlineObject *obj = d->inlineTextObjectManager->inlineTextObject(cf);
-    if (obj)
-        obj->updatePosition(document(), item, position, cf);
 
     // We need some special treatment for anchors as they need to position their object during
     // layout and not this early
@@ -335,8 +333,12 @@ void KoTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posi
                 }
                 d->textAnchors.append(anchor);
             }
+            anchor->updatePosition(document(), item, position, cf);
         }
     }
+    else if (obj) {
+        obj->updatePosition(document(), item, position, cf);
+    }
 }
 
 void KoTextDocumentLayout::resetAnchor(int resetPosition)
diff --git a/words/part/KWDocument.cpp b/words/part/KWDocument.cpp
index df4e724..1662879 100644
--- a/words/part/KWDocument.cpp
+++ b/words/part/KWDocument.cpp
@@ -836,11 +836,12 @@ void KWDocument::endOfLoading() // called by both oasis and oldxml
 
     // remove header/footer frames that are not visible.
 //     m_frameLayout.cleanupHeadersFooters();
-#if 1
+
     foreach (const KWPage &page, m_pageManager.pages()) {
         m_frameLayout.createNewFramesForPage(page.pageNumber());
     }
-#endif
+
+#if 0
     foreach (KWFrameSet *fs, m_frameSets) {
         KWTextFrameSet *tfs = dynamic_cast<KWTextFrameSet*>(fs);
         if (!tfs)
@@ -860,6 +861,7 @@ void KWDocument::endOfLoading() // called by both oasis and oldxml
         }
         tfs->setAllowLayout(true);
     }
+#endif
 
     foreach (KWFrameSet *fs, m_frameSets) {
         KWTextFrameSet *tfs = dynamic_cast<KWTextFrameSet*>(fs);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic