r20563 by jghali -
scribus-commit
scribus-commit at lists.scribus.net
Thu Nov 19 22:19:56 UTC 2015
Author: jghali
Date: Thu Nov 19 22:19:56 2015
New Revision: 20563
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=20563
Log:
#11409: crash while importing masterpage, with gdb backtrace
Modified:
trunk/Scribus/scribus/pageitem.h
trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp
trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.h
trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp
trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.h
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.h
trunk/Scribus/scribus/scribusdoc.cpp
trunk/Scribus/scribus/scribusdoc.h
Modified: trunk/Scribus/scribus/pageitem.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=20563&path=/trunk/Scribus/scribus/pageitem.h
==============================================================================
--- trunk/Scribus/scribus/pageitem.h (original)
+++ trunk/Scribus/scribus/pageitem.h Thu Nov 19 22:19:56 2015
@@ -190,6 +190,17 @@
Table = 16,
NoteFrame = 17,
Multiple = 99
+ };
+
+ /**
+ * @brief Item kind
+ *
+ * Describe in which kind of list the item is placed.
+ */
+ enum ItemKind {
+ StandardItem = 0,
+ InlineItem = 1,
+ PatternItem = 2
};
/** @brief Text flow mode
Modified: trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=20563&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 Thu Nov 19 22:19:56 2015
@@ -1872,6 +1872,13 @@
else
doc->setMasterPageMode(true);
}
+
+ PageItem::ItemKind itemKind = PageItem::StandardItem;
+ if (tagName == "FRAMEOBJECT")
+ itemKind = PageItem::InlineItem;
+ else if (tagName == "PatternItem")
+ itemKind = PageItem::PatternItem;
+
int pagenr = -1;
if ((!attrs.value("OnMasterPage").isEmpty()) && (tagName == "MASTEROBJECT"))
{
@@ -1879,7 +1886,7 @@
pagenr = -2;
}
- PageItem* newItem = pasteItem(doc, attrs, baseDir, pagenr);
+ PageItem* newItem = pasteItem(doc, attrs, baseDir, itemKind, pagenr);
newItem->setRedrawBounding();
if (tagName == "MASTEROBJECT")
newItem->OwnPage = doc->OnPage(newItem);
@@ -2105,6 +2112,7 @@
uint itemCount1 = m_Doc->Items->count();
bool savedAlignGrid = m_Doc->SnapGrid;
bool savedAlignGuides = m_Doc->SnapGuides;
+ bool savedMasterPageMode = m_Doc->masterPageMode();
m_Doc->SnapGrid = false;
m_Doc->SnapGuides = false;
@@ -2160,6 +2168,7 @@
doc->SnapGuides = savedAlignGuides;
if (!success)
{
+ doc->setMasterPageMode(savedMasterPageMode);
return false;
}
@@ -2234,7 +2243,8 @@
pat.createPreview();
}
doc->docPatterns.insert(patternName, pat);
-
+
+ doc->setMasterPageMode(savedMasterPageMode);
return success;
}
@@ -2473,7 +2483,7 @@
return !reader.hasError();
}
-PageItem* Scribus134Format::pasteItem(ScribusDoc *doc, ScXmlStreamAttributes& attrs, const QString& baseDir, int pagenr)
+PageItem* Scribus134Format::pasteItem(ScribusDoc *doc, ScXmlStreamAttributes& attrs, const QString& baseDir, PageItem::ItemKind itemKind, int pagenr)
{
int z = 0;
struct ImageLoadRequest loadingInfo;
@@ -2504,7 +2514,7 @@
{
// OBSOLETE CR 2005-02-06
case PageItem::ItemType1:
- z = doc->itemAdd(PageItem::Polygon, PageItem::Ellipse, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Polygon, PageItem::Ellipse, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
@@ -2513,7 +2523,7 @@
case PageItem::ImageFrame:
case PageItem::OSGFrame:
case PageItem::LatexFrame: /*Everything that is valid for image frames is also valid for latex frames*/
- z = doc->itemAdd(pt, PageItem::Unspecified, x, y, w, h, 1, doc->itemToolPrefs().imageFillColor, CommonStrings::None);
+ z = doc->itemAdd(pt, PageItem::Unspecified, x, y, w, h, 1, doc->itemToolPrefs().imageFillColor, CommonStrings::None, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
@@ -2587,44 +2597,44 @@
break;
// OBSOLETE CR 2005-02-06
case PageItem::ItemType3:
- z = doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
//
case PageItem::PathText:
- z = doc->itemAdd(PageItem::PathText, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor);
+ z = doc->itemAdd(PageItem::PathText, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::TextFrame:
- z = doc->itemAdd(PageItem::TextFrame, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor);
+ z = doc->itemAdd(PageItem::TextFrame, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Line:
- z = doc->itemAdd(PageItem::Line, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor2);
+ z = doc->itemAdd(PageItem::Line, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Polygon:
- z = doc->itemAdd(PageItem::Polygon, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Polygon, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::PolyLine:
- z = doc->itemAdd(PageItem::PolyLine, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::PolyLine, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Group:
- z = doc->itemAdd(PageItem::Group, PageItem::Unspecified, x, y, w, h, 0, CommonStrings::None, CommonStrings::None);
+ z = doc->itemAdd(PageItem::Group, PageItem::Unspecified, x, y, w, h, 0, CommonStrings::None, CommonStrings::None, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
@@ -3152,7 +3162,7 @@
ScXmlStreamReader reader(ioDevice.data());
ScXmlStreamAttributes attrs;
- while(!reader.atEnd() && !reader.hasError())
+ while (!reader.atEnd() && !reader.hasError())
{
QXmlStreamReader::TokenType tType = reader.readNext();
if (tType != QXmlStreamReader::StartElement)
Modified: trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=20563&path=/trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.h
==============================================================================
--- trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.h (original)
+++ trunk/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.h Thu Nov 19 22:19:56 2015
@@ -115,7 +115,7 @@
bool readSections(ScribusDoc* doc, ScXmlStreamReader& reader);
bool readTableOfContents(ScribusDoc* doc, ScXmlStreamReader& reader);
- PageItem* pasteItem(ScribusDoc *doc, ScXmlStreamAttributes& attrs, const QString& baseDir, int pagenr = -2 /* currentPage*/);
+ PageItem* pasteItem(ScribusDoc *doc, ScXmlStreamAttributes& attrs, const QString& baseDir, PageItem::ItemKind itemKind, int pagenr = -2 /* currentPage*/);
QMap<QString, QString> parStyleMap;
QMap<uint, QString> legacyStyleMap;
Modified: trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=20563&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 Thu Nov 19 22:19:56 2015
@@ -877,7 +877,10 @@
itemNext[m_Doc->Items->count()] = pg.attribute("NEXTITEM").toInt();
}
}
- Neu = PasteItem(&pg, m_Doc, fileDir, pagenr);
+ PageItem::ItemKind itemKind = PageItem::StandardItem;
+ if (pg.tagName() == "FRAMEOBJECT")
+ itemKind = PageItem::InlineItem;
+ Neu = PasteItem(&pg, m_Doc, fileDir, itemKind, pagenr);
Neu->setRedrawBounding();
if (pg.tagName()=="MASTEROBJECT")
Neu->OwnPage = m_Doc->OnPage(Neu);
@@ -1473,7 +1476,7 @@
}
}
-PageItem* Scribus13Format::PasteItem(QDomElement *obj, ScribusDoc *doc, const QString& baseDir, int pagenr)
+PageItem* Scribus13Format::PasteItem(QDomElement *obj, ScribusDoc *doc, const QString& baseDir, PageItem::ItemKind itemKind, int pagenr)
{
struct ImageLoadRequest loadingInfo;
int z = 0;
@@ -1508,14 +1511,14 @@
{
// OBSOLETE CR 2005-02-06
case PageItem::ItemType1:
- z = doc->itemAdd(PageItem::Polygon, PageItem::Ellipse, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Polygon, PageItem::Ellipse, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
//
case PageItem::ImageFrame:
- z = doc->itemAdd(PageItem::ImageFrame, PageItem::Unspecified, x, y, w, h, 1, doc->itemToolPrefs().imageFillColor, CommonStrings::None);
+ z = doc->itemAdd(PageItem::ImageFrame, PageItem::Unspecified, x, y, w, h, 1, doc->itemToolPrefs().imageFillColor, CommonStrings::None, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
@@ -1593,38 +1596,38 @@
break;
// OBSOLETE CR 2005-02-06
case PageItem::ItemType3:
- z = doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
//
case PageItem::PathText:
- z = doc->itemAdd(PageItem::PathText, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor);
+ z = doc->itemAdd(PageItem::PathText, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::TextFrame:
- z = doc->itemAdd(PageItem::TextFrame, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor);
+ z = doc->itemAdd(PageItem::TextFrame, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Line:
- z = doc->itemAdd(PageItem::Line, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor2);
+ z = doc->itemAdd(PageItem::Line, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Polygon:
- z = doc->itemAdd(PageItem::Polygon, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Polygon, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::PolyLine:
- z = doc->itemAdd(PageItem::PolyLine, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::PolyLine, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
@@ -2272,9 +2275,12 @@
itemNext[m_Doc->Items->count()] = pg.attribute("NEXTITEM").toInt();
}
}
+ PageItem::ItemKind itemKind = PageItem::StandardItem;
+ if (pg.tagName() == "FRAMEOBJECT")
+ itemKind = PageItem::InlineItem;
/*int docGc = m_Doc->GroupCounter;
m_Doc->GroupCounter = 0;*/
- Neu = PasteItem(&pg, m_Doc, fileDir);
+ Neu = PasteItem(&pg, m_Doc, fileDir, itemKind);
Neu->moveBy(-pageX + Apage->xOffset(), - pageY + Apage->yOffset());
Neu->setRedrawBounding();
//CB Must run onpage as we cant use pagetoload if the page has been renamed.
Modified: trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=20563&path=/trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.h
==============================================================================
--- trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.h (original)
+++ trunk/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.h Thu Nov 19 22:19:56 2015
@@ -51,7 +51,7 @@
//Scribus Doc vars, not plugin vars
void GetItemText(QDomElement *it, ScribusDoc *doc, PageItem* obj, LastStyles* last, bool impo=false, bool VorLFound=false);
void readParagraphStyle(ParagraphStyle& vg, const QDomElement& pg, ScribusDoc *doc);
- PageItem* PasteItem(QDomElement *obj, ScribusDoc *doc, const QString& baseDir, int pagenr = -2 /* currentPage*/);
+ PageItem* PasteItem(QDomElement *obj, ScribusDoc *doc, const QString& baseDir, PageItem::ItemKind itemKind, int pagenr = -2 /* currentPage*/);
void GetStyle(QDomElement *pg, ParagraphStyle *vg, StyleSet<ParagraphStyle> *tempParagraphStyles, ScribusDoc* doc, bool fl);
QString readSLA(const QString & fileName);
QString AskForFont(QString fStr, ScribusDoc *doc);
Modified: trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=20563&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 Thu Nov 19 22:19:56 2015
@@ -3616,6 +3616,13 @@
else
doc->setMasterPageMode(true);
}
+
+ PageItem::ItemKind itemKind = PageItem::StandardItem;
+ if (tagName =="FRAMEOBJECT")
+ itemKind = PageItem::InlineItem;
+ else if (tagName =="PatternItem")
+ itemKind = PageItem::PatternItem;
+
int pagenr = -1;
if ((!attrs.value("OnMasterPage").isEmpty()) && (tagName == "MASTEROBJECT"))
{
@@ -3624,7 +3631,7 @@
}
layerFound = false;
clipPath = "";
- PageItem* newItem = pasteItem(doc, attrs, baseDir, pagenr);
+ PageItem* newItem = pasteItem(doc, attrs, baseDir, itemKind, pagenr);
newItem->setRedrawBounding();
if (tagName == "MASTEROBJECT")
newItem->OwnPage = doc->OnPage(newItem);
@@ -4136,6 +4143,7 @@
bool savedAlignGrid = m_Doc->SnapGrid;
bool savedAlignGuides = m_Doc->SnapGuides;
bool savedAlignElement = m_Doc->SnapElement;
+ bool savedMasterPageMode = m_Doc->masterPageMode();
m_Doc->SnapGrid = false;
m_Doc->SnapGuides = false;
m_Doc->SnapElement = false;
@@ -4206,6 +4214,7 @@
doc->SnapElement = savedAlignElement;
if (!success)
{
+ doc->setMasterPageMode(savedMasterPageMode);
return false;
}
if (isNewFormat)
@@ -4356,6 +4365,7 @@
}
doc->docPatterns.insert(patternName, pat);
+ doc->setMasterPageMode(savedMasterPageMode);
return success;
}
@@ -4665,7 +4675,7 @@
return !reader.hasError();
}
-PageItem* Scribus150Format::pasteItem(ScribusDoc *doc, ScXmlStreamAttributes& attrs, const QString& baseDir, int pagenr)
+PageItem* Scribus150Format::pasteItem(ScribusDoc *doc, ScXmlStreamAttributes& attrs, const QString& baseDir, PageItem::ItemKind itemKind, int pagenr)
{
int z = 0;
struct ImageLoadRequest loadingInfo;
@@ -4699,7 +4709,7 @@
{
// OBSOLETE CR 2005-02-06
case PageItem::ItemType1:
- z = doc->itemAdd(PageItem::Polygon, PageItem::Ellipse, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Polygon, PageItem::Ellipse, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
@@ -4708,7 +4718,7 @@
case PageItem::ImageFrame:
case PageItem::OSGFrame:
case PageItem::LatexFrame: /*Everything that is valid for image frames is also valid for latex frames*/
- z = doc->itemAdd(pt, PageItem::Unspecified, x, y, w, h, 1, doc->itemToolPrefs().imageFillColor, doc->itemToolPrefs().imageStrokeColor);
+ z = doc->itemAdd(pt, PageItem::Unspecified, x, y, w, h, 1, doc->itemToolPrefs().imageFillColor, doc->itemToolPrefs().imageStrokeColor, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
@@ -4788,52 +4798,52 @@
break;
// OBSOLETE CR 2005-02-06
case PageItem::ItemType3:
- z = doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
//
case PageItem::PathText:
- z = doc->itemAdd(PageItem::PathText, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor);
+ z = doc->itemAdd(PageItem::PathText, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::NoteFrame:
case PageItem::TextFrame:
- z = doc->itemAdd(pt, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor);
+ z = doc->itemAdd(pt, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Line:
- z = doc->itemAdd(PageItem::Line, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor2);
+ z = doc->itemAdd(PageItem::Line, PageItem::Unspecified, x, y, w, h, pw, CommonStrings::None, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Polygon:
- z = doc->itemAdd(PageItem::Polygon, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Polygon, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::PolyLine:
- z = doc->itemAdd(PageItem::PolyLine, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::PolyLine, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Symbol:
- z = doc->itemAdd(PageItem::Symbol, PageItem::Unspecified, x, y, w, h, 0, CommonStrings::None, CommonStrings::None);
+ z = doc->itemAdd(PageItem::Symbol, PageItem::Unspecified, x, y, w, h, 0, CommonStrings::None, CommonStrings::None, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
currItem->setPattern( attrs.valueAsString("pattern", "") );
break;
case PageItem::Group:
- z = doc->itemAdd(PageItem::Group, PageItem::Unspecified, x, y, w, h, 0, CommonStrings::None, CommonStrings::None);
+ z = doc->itemAdd(PageItem::Group, PageItem::Unspecified, x, y, w, h, 0, CommonStrings::None, CommonStrings::None, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
@@ -4842,25 +4852,25 @@
doc->GroupCounter++;
break;
case PageItem::RegularPolygon:
- z = doc->itemAdd(PageItem::RegularPolygon, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::RegularPolygon, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Arc:
- z = doc->itemAdd(PageItem::Arc, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Arc, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Spiral:
- z = doc->itemAdd(PageItem::Spiral, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2);
+ z = doc->itemAdd(PageItem::Spiral, PageItem::Unspecified, x, y, w, h, pw, Pcolor, Pcolor2, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
break;
case PageItem::Table:
- z = doc->itemAdd(PageItem::Table, PageItem::Unspecified, x, y, w, h, 0.0, CommonStrings::None, CommonStrings::None);
+ z = doc->itemAdd(PageItem::Table, PageItem::Unspecified, x, y, w, h, 0.0, CommonStrings::None, CommonStrings::None, itemKind);
currItem = doc->Items->at(z);
if (pagenr > -2)
currItem->OwnPage = pagenr;
Modified: trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=20563&path=/trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.h
==============================================================================
--- trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.h (original)
+++ trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.h Thu Nov 19 22:19:56 2015
@@ -154,7 +154,7 @@
void updateNames2Ptr(); //after document load items pointers should be updated in markeredItemList
- PageItem* pasteItem(ScribusDoc *doc, ScXmlStreamAttributes& attrs, const QString& baseDir, int pagenr = -2 /* currentPage*/);
+ PageItem* pasteItem(ScribusDoc *doc, ScXmlStreamAttributes& attrs, const QString& baseDir, PageItem::ItemKind itemKind, int pagenr = -2 /* currentPage*/);
void writeCheckerProfiles(ScXmlStreamWriter& docu);
void writeLinestyles(ScXmlStreamWriter& docu);
Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=20563&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp Thu Nov 19 22:19:56 2015
@@ -5572,7 +5572,7 @@
return newItem;
}
-int ScribusDoc::itemAdd(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double b, const double h, const double w, const QString& fill, const QString& outline)
+int ScribusDoc::itemAdd(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double b, const double h, const double w, const QString& fill, const QString& outline, PageItem::ItemKind itemKind)
{
UndoTransaction activeTransaction;
if (UndoManager::undoEnabled()) // && !m_itemCreationTransaction)
@@ -5592,6 +5592,12 @@
Q_CHECK_PTR(newItem);
if (newItem==NULL)
return -1;
+
+ if (itemKind == PageItem::InlineItem || itemKind == PageItem::PatternItem)
+ {
+ newItem->OnMasterPage.clear();
+ newItem->OwnPage = -1;
+ }
Items->append(newItem);
if (UndoManager::undoEnabled())
@@ -5616,14 +5622,14 @@
}
-int ScribusDoc::itemAddArea(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double w, const QString& fill, const QString& outline)
+int ScribusDoc::itemAddArea(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double w, const QString& fill, const QString& outline, PageItem::ItemKind itemKind)
{
double xo = m_currentPage->xOffset();
double yo = m_currentPage->yOffset();
QPair<double, double> tl = m_currentPage->guides.topLeft(x - xo, y - yo);
QPair<double, double> tr = m_currentPage->guides.topRight(x - xo, y - yo);
QPair<double, double> bl = m_currentPage->guides.bottomLeft(x - xo, y - yo);
- return itemAdd(itemType, frameType, tl.first + xo, tl.second + yo, tr.first - tl.first, bl.second - tl.second, w, fill, outline);
+ return itemAdd(itemType, frameType, tl.first + xo, tl.second + yo, tr.first - tl.first, bl.second - tl.second, w, fill, outline, itemKind);
}
Modified: trunk/Scribus/scribus/scribusdoc.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=20563&path=/trunk/Scribus/scribus/scribusdoc.h
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.h (original)
+++ trunk/Scribus/scribus/scribusdoc.h Thu Nov 19 22:19:56 2015
@@ -784,10 +784,10 @@
\param outline outline color name
\param noteFrame optional (default false) indicates that noteframes should be created, not text frame
*/
- int itemAdd(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double b, const double h, const double w, const QString& fill, const QString& outline);
+ int itemAdd(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double b, const double h, const double w, const QString& fill, const QString& outline, PageItem::ItemKind itemKind = PageItem::StandardItem);
/** Add an item to the page based on the x/y position. Item will be fitted to the closest guides/margins */
- int itemAddArea(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double w, const QString& fill, const QString& outline);
+ int itemAddArea(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double w, const QString& fill, const QString& outline, PageItem::ItemKind itemKind = PageItem::StandardItem);
/**
* @brief Allow the user to create a frame easily with some simple placement and sizing options
More information about the scribus-commit
mailing list