Author: jghali
Date: Mon Feb  6 23:30:12 2017
New Revision: 21755

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=21755
Log:
fix potential crash when deleting note frames

Modified:
    trunk/Scribus/scribus/pageitem_textframe.cpp
    trunk/Scribus/scribus/scribusdoc.cpp

Modified: trunk/Scribus/scribus/pageitem_textframe.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21755&path=/trunk/Scribus/scribus/pageitem_textframe.cpp
==============================================================================
--- trunk/Scribus/scribus/pageitem_textframe.cpp        (original)
+++ trunk/Scribus/scribus/pageitem_textframe.cpp        Mon Feb  6 23:30:12 2017
@@ -5761,7 +5761,9 @@
        {
                if (nF->deleteIt || (nF->isAutoNoteFrame() && 
!notesMap.keys().contains(nF)))
                {
-                       m_Doc->delNoteFrame(nF,true);
+                       m_Doc->delNoteFrame(nF, true);
+                       m_notesFramesMap.remove(nF);
+                       notesMap.remove(nF);
                        docWasChanged = true;
                }
                else

Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21755&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp        (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp        Mon Feb  6 23:30:12 2017
@@ -18018,7 +18018,7 @@
                if (m->isType(MARK2ItemType) && (m->getItemPtr() == nF))
                {
                        setUndoDelMark(m);
-                       eraseMark(m,true);
+                       eraseMark(m, true);
                }
        }
        m_Selection->delaySignalsOn();
@@ -18033,6 +18033,19 @@
        m_Selection->delaySignalsOff();
 
        Items->removeOne(nF);
+
+       QList<PageItem*> allItems = *Items;
+       while (allItems.count() > 0)
+       {
+               PageItem* item = allItems.takeFirst();
+               if (item->isGroup() || item->isTable())
+               {
+                       allItems = item->getItemList() + allItems;
+                       continue;
+               }
+               if (item->isTextFrame())
+                       item->asTextFrame()->removeNoteFrame(nF);
+       }
        setNotesChanged(true);
        if (forceDeletion)
                delete nF;


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to