Author: fschmid
Date: Wed Jul 10 20:13:23 2013
New Revision: 18363

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=18363
Log:
Fixed crashes when editing inline frames

Modified:
    
trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp
    trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp
    
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
    trunk/Scribus/scribus/scribus.cpp
    trunk/Scribus/scribus/scribusdoc.cpp
    trunk/Scribus/scribus/scribusdoc.h
    trunk/Scribus/scribus/ui/inlinepalette.cpp

Modified: 
trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18363&path=/trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp
==============================================================================
--- 
trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp 
(original)
+++ 
trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp 
Wed Jul 10 20:13:23 2013
@@ -1871,6 +1871,7 @@
        if (tagName == "FRAMEOBJECT")
        {
                
doc->addToInlineFrames(doc->Items->takeAt(doc->Items->indexOf(newItem)));
+               newItem->LayerID = doc->firstLayerID();
        }
 
        info.item     = newItem;
@@ -3304,6 +3305,7 @@
                                if (tagName == "FRAMEOBJECT")
                                {
                                        
FrameItems.append(m_Doc->Items->takeAt(m_Doc->Items->indexOf(newItem)));
+                                       newItem->LayerID = 
m_Doc->firstLayerID();
                                }
                        }
                }

Modified: 
trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18363&path=/trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp
==============================================================================
--- 
trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp 
(original)
+++ 
trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp 
Wed Jul 10 20:13:23 2013
@@ -938,6 +938,7 @@
                                if (pg.tagName()=="FRAMEOBJECT")
                                {
                                        
FrameItems.append(m_Doc->Items->takeAt(m_Doc->Items->indexOf(Neu)));
+                                       Neu->LayerID = m_Doc->firstLayerID();
                                }
                                if (Neu->isTableItem)
                                {
@@ -2327,6 +2328,7 @@
                                        if (pg.tagName()=="FRAMEOBJECT")
                                        {
                                                
FrameItems.append(m_Doc->Items->takeAt(m_Doc->Items->indexOf(Neu)));
+                                               Neu->LayerID = 
m_Doc->firstLayerID();
                                        }
                                }
                                counter++;

Modified: 
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18363&path=/trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
==============================================================================
--- 
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp 
(original)
+++ 
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp 
Wed Jul 10 20:13:23 2013
@@ -3589,7 +3589,8 @@
                if (newItem->inlineCharID == -1)
                        
FrameItems.append(m_Doc->Items->takeAt(m_Doc->Items->indexOf(newItem)));
                else
-               doc->FrameItems.insert(newItem->inlineCharID, 
doc->Items->takeAt(doc->Items->indexOf(newItem)));
+                       doc->FrameItems.insert(newItem->inlineCharID, 
doc->Items->takeAt(doc->Items->indexOf(newItem)));
+               newItem->LayerID = doc->firstLayerID();
        }
 
        info.item     = newItem;
@@ -5885,6 +5886,7 @@
                                                
FrameItems.append(m_Doc->Items->takeAt(m_Doc->Items->indexOf(newItem)));
                                        else
                                                
m_Doc->FrameItems.insert(newItem->inlineCharID, 
m_Doc->Items->takeAt(m_Doc->Items->indexOf(newItem)));
+                                       newItem->LayerID = 
m_Doc->firstLayerID();
                                }
                                if (groupStack.count() > 0)
                                {

Modified: trunk/Scribus/scribus/scribus.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18363&path=/trunk/Scribus/scribus/scribus.cpp
==============================================================================
--- trunk/Scribus/scribus/scribus.cpp (original)
+++ trunk/Scribus/scribus/scribus.cpp Wed Jul 10 20:13:23 2013
@@ -4099,7 +4099,6 @@
                                newActWin(ActWinOld->getSubWin());
                        return false;
                }
-               inlinePalette->setDoc(doc);
                symbolPalette->setDoc(doc);
                outlinePalette->setDoc(doc);
                fileLoader->informReplacementFonts();
@@ -4301,6 +4300,7 @@
                /*qDebug("Time elapsed: %d ms", t.elapsed());*/
                doc->RePos = false;
                doc->setModified(false);
+               inlinePalette->setDoc(doc);
                updateRecent(FName);
                mainWindowStatusLabel->setText( tr("Ready"));
                ret = true;

Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18363&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp Wed Jul 10 20:13:23 2013
@@ -3644,6 +3644,12 @@
        }
 }
 
+int ScribusDoc::firstLayerID()
+{
+       QStringList newNames;
+       orderedLayerList(&newNames);
+       return layerIDFromName(newNames.first());
+}
 
 bool ScribusDoc::renumberLayer(const int layerID, const int newLayerID)
 {
@@ -6584,11 +6590,12 @@
        if (mode)
        {
                m_storedLayerID = activeLayer();
-               m_storedLayerLock = layerLocked(0);
-               m_storedLayerVis = layerVisible(0);
-               setActiveLayer(0);
-               setLayerVisible(0, true);
-               setLayerLocked(0, false);
+               int layerID = firstLayerID();
+               m_storedLayerLock = layerLocked(layerID);
+               m_storedLayerVis = layerVisible(layerID);
+               setActiveLayer(layerID);
+               setLayerVisible(layerID, true);
+               setLayerLocked(layerID, false);
                ScPattern pa = docPatterns[symbolName];
                currentEditedSymbol = symbolName;
                ScPage* addedPage = new 
ScPage(docPrefsData.displayPrefs.scratch.Left, 
docPrefsData.displayPrefs.scratch.Top, pa.width, pa.height);
@@ -6612,13 +6619,14 @@
                for (int as = 0; as < Items->count(); ++as)
                {
                        m_Selection->addItem(Items->at(as));
+                       Items->at(as)->setLayer(layerID);
                }
                moveGroup(addedPage->xOffset(), addedPage->yOffset());
                if (Items->at(0)->isGroup())
                        Items->at(0)->asGroupFrame()->adjustXYPosition();
                m_Selection->clear();
                m_Selection->delaySignalsOff();
-               m_ScMW->changeLayer(0);
+               m_ScMW->changeLayer(layerID);
                changed();
        }
        else
@@ -6637,7 +6645,7 @@
                                {
                                        itemAdd(PageItem::Group, 
PageItem::Rectangle, addedPage->xOffset(), addedPage->yOffset(), 10, 10, 0, 
CommonStrings::None, CommonStrings::None, true);
                                        PageItem *groupItem = Items->takeLast();
-                                       groupItem->setLayer(0);
+                                       groupItem->setLayer(firstLayerID());
                                        Items->insert(0, groupItem);
                                        double minx =  
std::numeric_limits<double>::max();
                                        double miny =  
std::numeric_limits<double>::max();
@@ -6722,8 +6730,8 @@
                }
                delete addedPage;
                setActiveLayer(m_storedLayerID);
-               setLayerVisible(0, m_storedLayerVis);
-               setLayerLocked(0, m_storedLayerLock);
+               setLayerVisible(m_storedLayerID, m_storedLayerVis);
+               setLayerLocked(m_storedLayerID, m_storedLayerLock);
                m_ScMW->changeLayer(m_storedLayerID);
        }
 }
@@ -6736,11 +6744,12 @@
        if (mode)
        {
                m_storedLayerID = activeLayer();
-               m_storedLayerLock = layerLocked(0);
-               m_storedLayerVis = layerVisible(0);
-               setActiveLayer(0);
-               setLayerVisible(0, true);
-               setLayerLocked(0, false);
+               int layerID = firstLayerID();
+               m_storedLayerLock = layerLocked(layerID);
+               m_storedLayerVis = layerVisible(layerID);
+               setActiveLayer(layerID);
+               setLayerVisible(layerID, true);
+               setLayerLocked(layerID, false);
                PageItem *pa = FrameItems[id];
                pa->isEmbedded = false;
                currentEditedIFrame = id;
@@ -6767,13 +6776,14 @@
                for (int as = 0; as < Items->count(); ++as)
                {
                        m_Selection->addItem(Items->at(as));
+                       Items->at(as)->setLayer(layerID);
                }
                moveGroup(addedPage->xOffset(), addedPage->yOffset());
                if (Items->at(0)->isGroup())
                        Items->at(0)->asGroupFrame()->adjustXYPosition();
                m_Selection->clear();
                m_Selection->delaySignalsOff();
-               m_ScMW->changeLayer(0);
+               m_ScMW->changeLayer(layerID);
                changed();
        }
        else
@@ -6792,7 +6802,7 @@
                                {
                                        itemAdd(PageItem::Group, 
PageItem::Rectangle, addedPage->xOffset(), addedPage->yOffset(), 10, 10, 0, 
CommonStrings::None, CommonStrings::None, true);
                                        PageItem *groupItem = Items->takeLast();
-                                       groupItem->setLayer(0);
+                                       groupItem->setLayer(firstLayerID());
                                        Items->insert(0, groupItem);
                                        double minx =  
std::numeric_limits<double>::max();
                                        double miny =  
std::numeric_limits<double>::max();
@@ -6869,8 +6879,8 @@
                delete addedPage;
                EditFrameItems.clear();
                setActiveLayer(m_storedLayerID);
-               setLayerVisible(0, m_storedLayerVis);
-               setLayerLocked(0, m_storedLayerLock);
+               setLayerVisible(m_storedLayerID, m_storedLayerVis);
+               setLayerLocked(m_storedLayerID, m_storedLayerLock);
                m_ScMW->changeLayer(m_storedLayerID);
        }
 }

Modified: trunk/Scribus/scribus/scribusdoc.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18363&path=/trunk/Scribus/scribus/scribusdoc.h
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.h (original)
+++ trunk/Scribus/scribus/scribusdoc.h Wed Jul 10 20:13:23 2013
@@ -520,6 +520,8 @@
         * @param list QStringList to insert the layer names into
         */
        void orderedLayerList(QStringList* list);
+
+       int firstLayerID();
        //Items
        bool deleteTaggedItems();
 

Modified: trunk/Scribus/scribus/ui/inlinepalette.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18363&path=/trunk/Scribus/scribus/ui/inlinepalette.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/inlinepalette.cpp (original)
+++ trunk/Scribus/scribus/ui/inlinepalette.cpp Wed Jul 10 20:13:23 2013
@@ -31,6 +31,7 @@
 #include "scribusdoc.h"
 #include "scribus.h"
 #include "selection.h"
+#include "util_icon.h"
 
 InlineView::InlineView(QWidget* parent) : QListWidget(parent)
 {
@@ -258,6 +259,9 @@
                pm2.fill(palette().color(QPalette::Base));
                QPainter p;
                p.begin(&pm2);
+               QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
+               p.setBrush(b);
+               p.drawRect(0, 0, 50, 50);
                p.drawPixmap(25 - pm.width() / 2, 25 - pm.height() / 2, pm);
                p.end();
                QListWidgetItem *item = new QListWidgetItem(pm2, 
currItem->itemName(), InlineViewWidget);


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

Reply via email to