View Issue Details

IDProjectCategoryView StatusLast Update
0007631ScribusGeneralpublic2008-11-30 21:28
ReporterOssiLehtinen Assigned Tofschmid  
PrioritynormalSeveritymajorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version1.3.5svn 
Fixed in Version1.3.5svn 
Summary0007631: Object layers info not preserved when copying a page
DescriptionIf I copy a page with elements located on different layers, all the elements end up on the Background layer in the copy. This complicates work substantially.
Steps To Reproduce1. Create an empty document
2. Create a new layer
3. Create a text frame for example on the new layer
4. Copy page
5. Observe the text frame located in the background layer in the copy.
TagsNo tags attached.
Patch

Activities

BAlpha

2008-11-26 13:46

reporter   ~0020702

Last edited: 2008-11-26 13:50

I can confirm this. A workaround for now is to save the file and import the page from the saved .sla file.

I patched my Scribus version a while ago to keep the layers when duplicating pages (though in a quite dirty way, IIRC). If you build scribus yourself (and I still have that patch; I'm not sure, it's on another computer), I can mail it to you if you're interested.

BAlpha

2008-11-26 13:52

reporter   ~0020703

Also, Bug 0005299 is a duplicate of this; marked as "fixed", however.

OssiLehtinen

2008-11-26 14:01

reporter   ~0020704

Ah, I tried searching for a duplicate but didn't find that one. Strange though that it's marked fixed.

If you can easily locate the patch, I could take a look (ossi.lehtinen(at)gmail.com), but really don't look too hard if you don't find it. My current project is just about finished so this isn't urgent for me right now, so I can happily wait for an official fix to surface.

Thanks anyways.

BAlpha

2008-11-26 16:04

reporter   ~0020705

I have attached the mentioned patch now. Obviously it is not a patch to be applied identically to the svn code, but 1) it's a workaround for people who build scribus themselves and use the svn version (know what you're doing :-) ) and 2) it clarifies the problem.

2008-11-26 16:04

 

keepLayersOnPageCopy.diff (2,413 bytes)   
Index: scribusXml.h
===================================================================
--- scribusXml.h	(Revision 12902)
+++ scribusXml.h	(Arbeitskopie)
@@ -52,6 +52,7 @@
 	*/
 	bool    ReadElemHeader(QString file, bool isFile, double *x, double *y, double *w, double *h);
 	bool    ReadElem(QString fileName, SCFonts &avail, ScribusDoc *doc, double Xp, double Yp, bool Fi, bool loc, QMap<QString,QString> &FontSub, ScribusView *view);
+    bool    ReadElemToLayer(QString fileName, SCFonts &avail, ScribusDoc *doc, double Xp, double Yp, bool Fi, bool loc, QMap<QString,QString> &FontSub, ScribusView *view, int toLayer);
 	QString WriteElem(ScribusDoc *doc, ScribusView *view, Selection *selection);
 
 	ColorList Farben;
Index: scribusXml.cpp
===================================================================
--- scribusXml.cpp	(Revision 12902)
+++ scribusXml.cpp	(Arbeitskopie)
@@ -1023,6 +1023,11 @@
 
 bool ScriXmlDoc::ReadElem(QString fileName, SCFonts &avail, ScribusDoc *doc, double Xp, double Yp, bool Fi, bool loc, QMap<QString,QString> &FontSub, ScribusView *view)
 {
+    return ReadElemToLayer(fileName,avail,doc,Xp,Yp,Fi,loc,FontSub,view,0);
+}
+    
+bool ScriXmlDoc::ReadElemToLayer(QString fileName, SCFonts &avail, ScribusDoc *doc, double Xp, double Yp, bool Fi, bool loc, QMap<QString,QString> &FontSub, ScribusView *view, int toLayer)
+{
 	QString ff;
 	struct CopyPasteBuffer OB;
 	ParagraphStyle vg;
@@ -1265,7 +1270,7 @@
 				OB.IFont = doc->toolSettings.defFont;
 			else
 				OB.IFont = DoFonts[tmf];
-			OB.LayerNr   = 0;
+			OB.LayerNr   = toLayer;
 			OB.Language  = attrAsString(attrs, "LANGUAGE", doc->Language);
 			tmp = "";
 			int numGroup = attrAsInt(attrs, "NUMGROUP", 0);
Index: scribusdoc.cpp
===================================================================
--- scribusdoc.cpp	(Revision 12902)
+++ scribusdoc.cpp	(Arbeitskopie)
@@ -4805,7 +4805,7 @@
 					if (m_Selection->count() != 0)
 					{
 						ScriXmlDoc *ss = new ScriXmlDoc();
-						ss->ReadElem(ss->WriteElem(this, view(), m_Selection), prefsData.AvailFonts, this, destination->xOffset(), destination->yOffset(), false, true, prefsData.GFontSub, view());
+						ss->ReadElemToLayer(ss->WriteElem(this, view(), m_Selection), prefsData.AvailFonts, this, destination->xOffset(), destination->yOffset(), false, true, prefsData.GFontSub, view(),(*it).LNr);
 						m_Selection->clear();
 						delete ss;
 					}
keepLayersOnPageCopy.diff (2,413 bytes)   

cbradney

2008-11-26 17:22

administrator   ~0020706

Are you using the SVN version from today? You have not specified what revision or date is in the about window

OssiLehtinen

2008-11-26 17:25

reporter   ~0020707

The SVN version is from 03 November 2008, so it's not absolutely fresh.

BAlpha

2008-11-26 17:38

reporter   ~0020708

12902 here: Today's revision.

Issue History

Date Modified Username Field Change
2008-11-26 12:39 OssiLehtinen New Issue
2008-11-26 13:46 BAlpha Note Added: 0020702
2008-11-26 13:50 BAlpha Note Edited: 0020702
2008-11-26 13:52 BAlpha Note Added: 0020703
2008-11-26 14:01 OssiLehtinen Note Added: 0020704
2008-11-26 16:04 BAlpha Note Added: 0020705
2008-11-26 16:04 BAlpha File Added: keepLayersOnPageCopy.diff
2008-11-26 17:22 cbradney Note Added: 0020706
2008-11-26 17:25 OssiLehtinen Note Added: 0020707
2008-11-26 17:38 BAlpha Note Added: 0020708
2008-11-26 20:09 cbradney Status new => assigned
2008-11-26 20:09 cbradney Assigned To => fschmid
2008-11-29 08:23 fschmid Status assigned => resolved
2008-11-29 08:23 fschmid Fixed in Version => 1.3.5svn
2008-11-29 08:23 fschmid Resolution open => fixed
2008-11-30 21:28 cbradney Status resolved => closed