r23458 by jghali - #16042: Lost frames when opening 1.4.x file
scribus-commit
scribus-commit at lists.scribus.net
Fri Feb 7 14:12:20 UTC 2020
Author: jghali
Date: Fri Feb 7 14:12:20 2020
New Revision: 23458
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=23458
Log:
#16042: Lost frames when opening 1.4.x file
Modified:
trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
Modified: trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=23458&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 Fri Feb 7 14:12:20 2020
@@ -202,11 +202,15 @@
QList<PageItem*> TableItems;
QList<PageItem*> TableItemsM;
QList<PageItem*> TableItemsF;
- QStack< QList<PageItem*> > groupStack;
+ QStack< QList<PageItem*> > groupStackFI;
+ QStack< QList<PageItem*> > groupStackMI;
+ QStack< QList<PageItem*> > groupStackPI;
QStack< QList<PageItem*> > groupStackF;
QStack< QList<PageItem*> > groupStackM;
QStack< QList<PageItem*> > groupStackP;
- QStack<int> groupStack2;
+ QStack<int> groupStackFI2;
+ QStack<int> groupStackMI2;
+ QStack<int> groupStackPI2;
QScopedPointer<QIODevice> ioDevice(slaReader(fileName));
if (ioDevice.isNull())
@@ -447,28 +451,60 @@
TableIDM.insert(itemInfo.ownLink, itemInfo.item);
}
}
- if (groupStack.count() > 0)
- {
- groupStack.top().append(itemInfo.item);
- while (static_cast<int>(itemInfo.ownNr) == groupStack2.top())
+
+ if ((tagName == "PAGEOBJECT") && (groupStackPI.count() > 0))
+ {
+ groupStackPI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackPI2.top())
{
- if (tagName == "PAGEOBJECT")
- groupStackP.push(groupStack.pop());
- else if (tagName == "FRAMEOBJECT")
- groupStackF.push(groupStack.pop());
- else
- groupStackM.push(groupStack.pop());
- groupStack2.pop();
- if (groupStack2.count() == 0)
+ groupStackP.push(groupStackPI.pop());
+ groupStackPI2.pop();
+ if (groupStackPI2.count() == 0)
break;
}
}
+ else if ((tagName == "FRAMEOBJECT") && (groupStackFI.count() > 0))
+ {
+ groupStackFI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackFI2.top())
+ {
+ groupStackF.push(groupStackFI.pop());
+ groupStackFI2.pop();
+ if (groupStackFI2.count() == 0)
+ break;
+ }
+ }
+ else if ((tagName == "MASTEROBJECT") && (groupStackMI.count() > 0))
+ {
+ groupStackMI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackMI2.top())
+ {
+ groupStackM.push(groupStackMI.pop());
+ groupStackMI2.pop();
+ if (groupStackMI2.count() == 0)
+ break;
+ }
+ }
+
if (itemInfo.isGroupFlag)
{
- QList<PageItem*> GroupItems;
- GroupItems.append(itemInfo.item);
- groupStack.push(GroupItems);
- groupStack2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ QList<PageItem*> groupItems;
+ groupItems.append(itemInfo.item);
+ if (tagName == "PAGEOBJECT")
+ {
+ groupStackPI.push(groupItems);
+ groupStackPI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else if (tagName == "FRAMEOBJECT")
+ {
+ groupStackFI.push(groupItems);
+ groupStackFI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else
+ {
+ groupStackMI.push(groupItems);
+ groupStackMI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
}
}
if (tagName == "Pattern")
@@ -2175,7 +2211,7 @@
if (groupStack.count() > 0)
{
groupStack.top().append(itemInfo.item);
- while (static_cast<int>(itemInfo.ownNr) == groupStack2.top())
+ while (itemInfo.ownNr == groupStack2.top())
{
groupStackP.push(groupStack.pop());
groupStack2.pop();
@@ -3145,8 +3181,17 @@
QString tmp;
QMap<int,PageItem*> TableID;
QList<PageItem*> TableItems;
+ QStack< QList<PageItem*> > groupStackFI;
+ QStack< QList<PageItem*> > groupStackMI;
+ QStack< QList<PageItem*> > groupStackPI;
+ QStack< QList<PageItem*> > groupStackF;
+ QStack< QList<PageItem*> > groupStackM;
+ QStack< QList<PageItem*> > groupStackP;
+ QStack<int> groupStackFI2;
+ QStack<int> groupStackMI2;
+ QStack<int> groupStackPI2;
double pageX = 0, pageY = 0;
- QMap<int,int> layerTrans;
+ QMap<int, int> layerTrans;
int maxLayer = 0, maxLevel = 0, a = 0;
layerTrans.clear();
@@ -3382,6 +3427,61 @@
TableItems.append(newItem);
TableID.insert(itemInfo.ownLink, newItem);
}
+
+ if ((tagName == "PAGEOBJECT") && (groupStackPI.count() > 0))
+ {
+ groupStackPI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackPI2.top())
+ {
+ groupStackP.push(groupStackPI.pop());
+ groupStackPI2.pop();
+ if (groupStackPI2.count() == 0)
+ break;
+ }
+ }
+ else if ((tagName == "FRAMEOBJECT") && (groupStackFI.count() > 0))
+ {
+ groupStackFI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackFI2.top())
+ {
+ groupStackF.push(groupStackFI.pop());
+ groupStackFI2.pop();
+ if (groupStackFI2.count() == 0)
+ break;
+ }
+ }
+ else if ((tagName == "MASTEROBJECT") && (groupStackMI.count() > 0))
+ {
+ groupStackMI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackMI2.top())
+ {
+ groupStackM.push(groupStackMI.pop());
+ groupStackMI2.pop();
+ if (groupStackMI2.count() == 0)
+ break;
+ }
+ }
+
+ if (itemInfo.isGroupFlag)
+ {
+ QList<PageItem*> groupItems;
+ groupItems.append(itemInfo.item);
+ if (tagName == "PAGEOBJECT")
+ {
+ groupStackPI.push(groupItems);
+ groupStackPI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else if (tagName == "FRAMEOBJECT")
+ {
+ groupStackFI.push(groupItems);
+ groupStackFI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else
+ {
+ groupStackMI.push(groupItems);
+ groupStackMI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ }
}
}
}
@@ -3472,6 +3572,99 @@
}
}
+ while (groupStackP.count() > 0)
+ {
+ bool isTableIt = false;
+ QList<PageItem*> gpL = groupStackP.pop();
+ PageItem* gItem = gpL.takeFirst();
+ for (int id = 0; id < gpL.count(); id++)
+ {
+ PageItem* cItem = gpL.at(id);
+ isTableIt = cItem->isTableItem;
+ cItem->gXpos = cItem->xPos() - gItem->xPos();
+ cItem->gYpos = cItem->yPos() - gItem->yPos();
+ cItem->Parent = gItem;
+ if (gItem->rotation() != 0)
+ {
+ QTransform ma;
+ ma.rotate(-gItem->rotation());
+ FPoint n = FPoint(cItem->gXpos, cItem->gYpos);
+ cItem->gXpos = ma.m11() * n.x() + ma.m21() * n.y() + ma.dx();
+ cItem->gYpos = ma.m22() * n.y() + ma.m12() * n.x() + ma.dy();
+ cItem->setRotation(cItem->rotation() - gItem->rotation());
+ cItem->oldRot = cItem->rotation();
+ }
+ m_Doc->DocItems.removeOne(cItem);
+ }
+ bool converted = false;
+ if (isTableIt)
+ converted = convertOldTable(m_Doc, gItem, gpL, &groupStackP, &m_Doc->DocItems);
+ if (!converted)
+ gItem->groupItemList = gpL;
+ }
+
+ while (groupStackF.count() > 0)
+ {
+ bool isTableIt = false;
+ QList<PageItem*> gpL = groupStackF.pop();
+ PageItem* gItem = gpL.takeFirst();
+ for (int id = 0; id < gpL.count(); id++)
+ {
+ PageItem* cItem = gpL.at(id);
+ isTableIt = cItem->isTableItem;
+ cItem->gXpos = cItem->xPos() - gItem->xPos();
+ cItem->gYpos = cItem->yPos() - gItem->yPos();
+ cItem->Parent = gItem;
+ if (gItem->rotation() != 0)
+ {
+ QTransform ma;
+ ma.rotate(-gItem->rotation());
+ FPoint n = FPoint(cItem->gXpos, cItem->gYpos);
+ cItem->gXpos = ma.m11() * n.x() + ma.m21() * n.y() + ma.dx();
+ cItem->gYpos = ma.m22() * n.y() + ma.m12() * n.x() + ma.dy();
+ cItem->setRotation(cItem->rotation() - gItem->rotation());
+ cItem->oldRot = cItem->rotation();
+ }
+ m_Doc->FrameItems.remove(m_Doc->FrameItems.key(cItem));
+ }
+ bool converted = false;
+ if (isTableIt)
+ converted = convertOldTable(m_Doc, gItem, gpL, &groupStackF, nullptr);
+ if (!converted)
+ gItem->groupItemList = gpL;
+ }
+
+ while (groupStackM.count() > 0)
+ {
+ bool isTableIt = false;
+ QList<PageItem*> gpL = groupStackM.pop();
+ PageItem* gItem = gpL.takeFirst();
+ for (int id = 0; id < gpL.count(); id++)
+ {
+ PageItem* cItem = gpL.at(id);
+ isTableIt = cItem->isTableItem;
+ cItem->gXpos = cItem->xPos() - gItem->xPos();
+ cItem->gYpos = cItem->yPos() - gItem->yPos();
+ cItem->Parent = gItem;
+ if (gItem->rotation() != 0)
+ {
+ QTransform ma;
+ ma.rotate(-gItem->rotation());
+ FPoint n = FPoint(cItem->gXpos, cItem->gYpos);
+ cItem->gXpos = ma.m11() * n.x() + ma.m21() * n.y() + ma.dx();
+ cItem->gYpos = ma.m22() * n.y() + ma.m12() * n.x() + ma.dy();
+ cItem->setRotation(cItem->rotation() - gItem->rotation());
+ cItem->oldRot = cItem->rotation();
+ }
+ m_Doc->MasterItems.removeOne(cItem);
+ }
+ bool converted = false;
+ if (isTableIt)
+ converted = convertOldTable(m_Doc, gItem, gpL, &groupStackM, &m_Doc->MasterItems);
+ if (!converted)
+ gItem->groupItemList = gpL;
+ }
+
// reestablish first/lastAuto
m_Doc->FirstAuto = m_Doc->LastAuto;
if (m_Doc->LastAuto)
Modified: trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=23458&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 Fri Feb 7 14:12:20 2020
@@ -205,11 +205,15 @@
QMap<int,PageItem*> TableIDF;
QMap<int,PageItem*> TableIDM;
QMap<int,PageItem*> WeldID;
- QStack< QList<PageItem*> > groupStack;
+ QStack< QList<PageItem*> > groupStackFI;
+ QStack< QList<PageItem*> > groupStackMI;
+ QStack< QList<PageItem*> > groupStackPI;
QStack< QList<PageItem*> > groupStackF;
QStack< QList<PageItem*> > groupStackM;
QStack< QList<PageItem*> > groupStackP;
- QStack<int> groupStack2;
+ QStack<int> groupStackFI2;
+ QStack<int> groupStackMI2;
+ QStack<int> groupStackPI2;
itemRemap.clear();
@@ -357,28 +361,60 @@
}
}
}
- if (groupStack.count() > 0)
- {
- groupStack.top().append(itemInfo.item);
- while (static_cast<int>(itemInfo.ownNr) == groupStack2.top())
- {
- if ((tagName == "PAGEOBJECT") || (tagName == "ITEM"))
- groupStackP.push(groupStack.pop());
- else if (tagName == "FRAMEOBJECT")
- groupStackF.push(groupStack.pop());
- else
- groupStackM.push(groupStack.pop());
- groupStack2.pop();
- if (groupStack2.count() == 0)
+
+ if ((tagName == "PAGEOBJECT") && (groupStackPI.count() > 0))
+ {
+ groupStackPI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackPI2.top())
+ {
+ groupStackP.push(groupStackPI.pop());
+ groupStackPI2.pop();
+ if (groupStackPI2.count() == 0)
break;
}
}
+ else if ((tagName == "FRAMEOBJECT") && (groupStackFI.count() > 0))
+ {
+ groupStackFI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackFI2.top())
+ {
+ groupStackF.push(groupStackFI.pop());
+ groupStackFI2.pop();
+ if (groupStackFI2.count() == 0)
+ break;
+ }
+ }
+ else if ((tagName == "MASTEROBJECT") && (groupStackMI.count() > 0))
+ {
+ groupStackMI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackMI2.top())
+ {
+ groupStackM.push(groupStackMI.pop());
+ groupStackMI2.pop();
+ if (groupStackMI2.count() == 0)
+ break;
+ }
+ }
+
if (itemInfo.isGroupFlag)
{
- QList<PageItem*> GroupItems;
- GroupItems.append(itemInfo.item);
- groupStack.push(GroupItems);
- groupStack2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ QList<PageItem*> groupItems;
+ groupItems.append(itemInfo.item);
+ if (tagName == "PAGEOBJECT")
+ {
+ groupStackPI.push(groupItems);
+ groupStackPI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else if (tagName == "FRAMEOBJECT")
+ {
+ groupStackFI.push(groupItems);
+ groupStackFI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else
+ {
+ groupStackMI.push(groupItems);
+ groupStackMI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
}
}
if (tagName == "Pattern")
@@ -697,11 +733,15 @@
QList<PageItem*> TableItemsF;
QMap<int,PageItem*> WeldID;
QList<PageItem*> WeldItems;
- QStack< QList<PageItem*> > groupStack;
+ QStack< QList<PageItem*> > groupStackFI;
+ QStack< QList<PageItem*> > groupStackMI;
+ QStack< QList<PageItem*> > groupStackPI;
QStack< QList<PageItem*> > groupStackF;
QStack< QList<PageItem*> > groupStackM;
QStack< QList<PageItem*> > groupStackP;
- QStack<int> groupStack2;
+ QStack<int> groupStackFI2;
+ QStack<int> groupStackMI2;
+ QStack<int> groupStackPI2;
QByteArray docBytes("");
loadRawText(fileName, docBytes);
@@ -858,28 +898,60 @@
WeldID.insert(itemInfo.ownWeld, itemInfo.item);
}
}
- if (groupStack.count() > 0)
- {
- groupStack.top().append(itemInfo.item);
- while (static_cast<int>(itemInfo.ownNr) == groupStack2.top())
- {
- if (tagName == "PAGEOBJECT")
- groupStackP.push(groupStack.pop());
- else if (tagName == "FRAMEOBJECT")
- groupStackF.push(groupStack.pop());
- else
- groupStackM.push(groupStack.pop());
- groupStack2.pop();
- if (groupStack2.count() == 0)
+
+ if ((tagName == "PAGEOBJECT") && (groupStackPI.count() > 0))
+ {
+ groupStackPI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackPI2.top())
+ {
+ groupStackP.push(groupStackPI.pop());
+ groupStackPI2.pop();
+ if (groupStackPI2.count() == 0)
break;
}
}
+ else if ((tagName == "FRAMEOBJECT") && (groupStackFI.count() > 0))
+ {
+ groupStackFI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackFI2.top())
+ {
+ groupStackF.push(groupStackFI.pop());
+ groupStackFI2.pop();
+ if (groupStackFI2.count() == 0)
+ break;
+ }
+ }
+ else if ((tagName == "MASTEROBJECT") && (groupStackMI.count() > 0))
+ {
+ groupStackMI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackMI2.top())
+ {
+ groupStackM.push(groupStackMI.pop());
+ groupStackMI2.pop();
+ if (groupStackMI2.count() == 0)
+ break;
+ }
+ }
+
if (itemInfo.isGroupFlag)
{
- QList<PageItem*> GroupItems;
- GroupItems.append(itemInfo.item);
- groupStack.push(GroupItems);
- groupStack2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ QList<PageItem*> groupItems;
+ groupItems.append(itemInfo.item);
+ if (tagName == "PAGEOBJECT")
+ {
+ groupStackPI.push(groupItems);
+ groupStackPI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else if (tagName == "FRAMEOBJECT")
+ {
+ groupStackFI.push(groupItems);
+ groupStackFI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else
+ {
+ groupStackMI.push(groupItems);
+ groupStackMI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
}
}
if (tagName == "Pattern")
@@ -1231,11 +1303,15 @@
QList<PageItem*> TableItemsF;
QMap<int,PageItem*> WeldID;
QList<PageItem*> WeldItems;
- QStack< QList<PageItem*> > groupStack;
+ QStack< QList<PageItem*> > groupStackFI;
+ QStack< QList<PageItem*> > groupStackMI;
+ QStack< QList<PageItem*> > groupStackPI;
QStack< QList<PageItem*> > groupStackF;
QStack< QList<PageItem*> > groupStackM;
QStack< QList<PageItem*> > groupStackP;
- QStack<int> groupStack2;
+ QStack<int> groupStackFI2;
+ QStack<int> groupStackMI2;
+ QStack<int> groupStackPI2;
markeredItemsMap.clear();
markeredMarksMap.clear();
@@ -1524,28 +1600,60 @@
WeldID.insert(itemInfo.ownWeld, itemInfo.item);
}
}
- if (groupStack.count() > 0)
- {
- groupStack.top().append(itemInfo.item);
- while (static_cast<int>(itemInfo.ownNr) == groupStack2.top())
- {
- if (tagName == "PAGEOBJECT")
- groupStackP.push(groupStack.pop());
- else if (tagName == "FRAMEOBJECT")
- groupStackF.push(groupStack.pop());
- else
- groupStackM.push(groupStack.pop());
- groupStack2.pop();
- if (groupStack2.count() == 0)
+
+ if ((tagName == "PAGEOBJECT") && (groupStackPI.count() > 0))
+ {
+ groupStackPI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackPI2.top())
+ {
+ groupStackP.push(groupStackPI.pop());
+ groupStackPI2.pop();
+ if (groupStackPI2.count() == 0)
break;
}
}
+ else if ((tagName == "FRAMEOBJECT") && (groupStackFI.count() > 0))
+ {
+ groupStackFI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackFI2.top())
+ {
+ groupStackF.push(groupStackFI.pop());
+ groupStackFI2.pop();
+ if (groupStackFI2.count() == 0)
+ break;
+ }
+ }
+ else if ((tagName == "MASTEROBJECT") && (groupStackMI.count() > 0))
+ {
+ groupStackMI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackMI2.top())
+ {
+ groupStackM.push(groupStackMI.pop());
+ groupStackMI2.pop();
+ if (groupStackMI2.count() == 0)
+ break;
+ }
+ }
+
if (itemInfo.isGroupFlag)
{
- QList<PageItem*> GroupItems;
- GroupItems.append(itemInfo.item);
- groupStack.push(GroupItems);
- groupStack2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ QList<PageItem*> groupItems;
+ groupItems.append(itemInfo.item);
+ if (tagName == "PAGEOBJECT")
+ {
+ groupStackPI.push(groupItems);
+ groupStackPI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else if (tagName == "FRAMEOBJECT")
+ {
+ groupStackFI.push(groupItems);
+ groupStackFI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else
+ {
+ groupStackMI.push(groupItems);
+ groupStackMI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
}
}
if (tagName == "Pattern")
@@ -4305,7 +4413,7 @@
if (groupStack.count() > 0)
{
groupStack.top().append(itemInfo.item);
- while (static_cast<int>(itemInfo.ownNr) == groupStack2.top())
+ while (itemInfo.ownNr == groupStack2.top())
{
groupStackP.push(groupStack.pop());
groupStack2.pop();
@@ -5993,10 +6101,15 @@
QList<PageItem*> TableItems;
QMap<int,PageItem*> WeldID;
QList<PageItem*> WeldItems;
- QStack< QList<PageItem*> > groupStack;
+ QStack< QList<PageItem*> > groupStackFI;
+ QStack< QList<PageItem*> > groupStackMI;
+ QStack< QList<PageItem*> > groupStackPI;
QStack< QList<PageItem*> > groupStackF;
+ QStack< QList<PageItem*> > groupStackM;
QStack< QList<PageItem*> > groupStackP;
- QStack<int> groupStack2;
+ QStack<int> groupStackFI2;
+ QStack<int> groupStackMI2;
+ QStack<int> groupStackPI2;
double pageX = 0, pageY = 0;
QMap<int,int> layerTrans;
int maxLayer = 0, maxLevel = 0, a = 0;
@@ -6267,7 +6380,6 @@
}
else
{
-
ItemInfo itemInfo;
QString masterPageName = Mpage ? renamedPageName : QString();
success = readObject(m_Doc, reader, itemInfo, fileDir, true, masterPageName);
@@ -6316,28 +6428,60 @@
WeldID.insert(itemInfo.ownWeld, itemInfo.item);
}
}
- if (groupStack.count() > 0)
- {
- groupStack.top().append(itemInfo.item);
- while (static_cast<int>(itemInfo.ownNr) == groupStack2.top())
+
+ if ((tagName == "PAGEOBJECT") && (groupStackPI.count() > 0))
+ {
+ groupStackPI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackPI2.top())
{
- if (tagName == "PAGEOBJECT")
- groupStackP.push(groupStack.pop());
- else if (tagName == "FRAMEOBJECT")
- groupStackF.push(groupStack.pop());
- else
- groupStack.pop();
- groupStack2.pop();
- if (groupStack2.count() == 0)
+ groupStackP.push(groupStackPI.pop());
+ groupStackPI2.pop();
+ if (groupStackPI2.count() == 0)
break;
}
}
+ else if ((tagName == "FRAMEOBJECT") && (groupStackFI.count() > 0))
+ {
+ groupStackFI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackFI2.top())
+ {
+ groupStackF.push(groupStackFI.pop());
+ groupStackFI2.pop();
+ if (groupStackFI2.count() == 0)
+ break;
+ }
+ }
+ else if ((tagName == "MASTEROBJECT") && (groupStackMI.count() > 0))
+ {
+ groupStackMI.top().append(itemInfo.item);
+ while (itemInfo.ownNr == groupStackMI2.top())
+ {
+ groupStackM.push(groupStackMI.pop());
+ groupStackMI2.pop();
+ if (groupStackMI2.count() == 0)
+ break;
+ }
+ }
+
if (itemInfo.isGroupFlag)
{
- QList<PageItem*> GroupItems;
- GroupItems.append(itemInfo.item);
- groupStack.push(GroupItems);
- groupStack2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ QList<PageItem*> groupItems;
+ groupItems.append(itemInfo.item);
+ if (tagName == "PAGEOBJECT")
+ {
+ groupStackPI.push(groupItems);
+ groupStackPI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else if (tagName == "FRAMEOBJECT")
+ {
+ groupStackFI.push(groupItems);
+ groupStackFI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
+ else
+ {
+ groupStackMI.push(groupItems);
+ groupStackMI2.push(itemInfo.groupLastItem + itemInfo.ownNr);
+ }
}
}
}
@@ -6534,7 +6678,6 @@
gItem->groupItemList = gpL;
}
-
while (groupStackF.count() > 0)
{
bool isTableIt = false;
@@ -6562,6 +6705,37 @@
bool converted = false;
if (isTableIt)
converted = convertOldTable(m_Doc, gItem, gpL, &groupStackF, nullptr);
+ if (!converted)
+ gItem->groupItemList = gpL;
+ }
+
+ while (groupStackM.count() > 0)
+ {
+ bool isTableIt = false;
+ QList<PageItem*> gpL = groupStackM.pop();
+ PageItem* gItem = gpL.takeFirst();
+ for (int id = 0; id < gpL.count(); id++)
+ {
+ PageItem* cItem = gpL.at(id);
+ isTableIt = cItem->isTableItem;
+ cItem->gXpos = cItem->xPos() - gItem->xPos();
+ cItem->gYpos = cItem->yPos() - gItem->yPos();
+ cItem->Parent = gItem;
+ if (gItem->rotation() != 0)
+ {
+ QTransform ma;
+ ma.rotate(-gItem->rotation());
+ FPoint n = FPoint(cItem->gXpos, cItem->gYpos);
+ cItem->gXpos = ma.m11() * n.x() + ma.m21() * n.y() + ma.dx();
+ cItem->gYpos = ma.m22() * n.y() + ma.m12() * n.x() + ma.dy();
+ cItem->setRotation(cItem->rotation() - gItem->rotation());
+ cItem->oldRot = cItem->rotation();
+ }
+ m_Doc->MasterItems.removeOne(cItem);
+ }
+ bool converted = false;
+ if (isTableIt)
+ converted = convertOldTable(m_Doc, gItem, gpL, &groupStackM, &m_Doc->MasterItems);
if (!converted)
gItem->groupItemList = gpL;
}
More information about the scribus-commit
mailing list