View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0016323 | Scribus | General | public | 2020-11-08 16:22 | 2021-03-23 06:25 |
| Reporter | achalk | Assigned To | jghali | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Product Version | 1.4.8 | ||||
| Fixed in Version | 1.5.7.svn | ||||
| Summary | 0016323: Starting page not stored | ||||
| Description | To reproduce: Set starting page to "Left" and "Apply". Next document you create (after a restart) of Scribus has the option set back to "Right". | ||||
| Steps To Reproduce | To reproduce: Set starting page to "Left" and "Apply". Next document you create (after a restart) of Scribus has the option set back to "Right". | ||||
| Tags | options, start page | ||||
| Attached Files | |||||
| Patch | Yes | ||||
|
|
this still happens in 1.5.6svn... |
|
|
the code is checking for a PageNames tag around the Set. but there is only a PageNames inside of the Set. the whole thing feels way over complicated -- and this made tracking the error way too hard -- but, well, here is a patch. page-layout-left.diff (3,029 bytes)
diff --git a/scribus/prefsmanager.cpp b/scribus/prefsmanager.cpp
index 383704b04..6299dfb70 100644
--- a/scribus/prefsmanager.cpp
+++ b/scribus/prefsmanager.cpp
@@ -2351,40 +2351,34 @@ bool PrefsManager::ReadPref(const QString& ho)
if (dc.tagName()=="PageSets")
{
QDomNode PGS = DOC.firstChild();
- if (!PGS.namedItem("PageNames").isNull())
+ appPrefs.pageSets.clear();
+ while (!PGS.isNull())
{
- appPrefs.pageSets.clear();
- while (!PGS.isNull())
+ QDomElement PgsAttr = PGS.toElement();
+ if(PgsAttr.tagName() == "Set")
{
- QDomElement PgsAttr = PGS.toElement();
- if(PgsAttr.tagName() == "Set")
+ struct PageSet pageS;
+ pageS.Name = PgsAttr.attribute("Name");
+ pageS.FirstPage = PgsAttr.attribute("FirstPage", "0").toInt();
+ pageS.Rows = PgsAttr.attribute("Rows", "1").toInt();
+ pageS.Columns = PgsAttr.attribute("Columns", "1").toInt();
+ pageS.pageNames.clear();
+ QDomNode PGSN = PGS.firstChild();
+ while (!PGSN.isNull())
{
- struct PageSet pageS;
- pageS.Name = PgsAttr.attribute("Name");
- pageS.FirstPage = PgsAttr.attribute("FirstPage", "0").toInt();
- pageS.Rows = PgsAttr.attribute("Rows", "1").toInt();
- pageS.Columns = PgsAttr.attribute("Columns", "1").toInt();
-// pageS.GapHorizontal = PgsAttr.attribute("GapHorizontal", "0").toDouble();
-// pageS.GapVertical = PgsAttr.attribute("GapVertical", "0").toDouble();
-// pageS.GapBelow = PgsAttr.attribute("GapBelow", "0").toDouble();
- pageS.pageNames.clear();
- QDomNode PGSN = PGS.firstChild();
- while (!PGSN.isNull())
- {
- QDomElement PgsAttrN = PGSN.toElement();
- if(PgsAttrN.tagName() == "PageNames")
- pageS.pageNames.append(PgsAttrN.attribute("Name"));
- PGSN = PGSN.nextSibling();
- }
- appPrefs.pageSets.append(pageS);
- if ((appPrefs.pageSets.count() == appPrefs.docSetupPrefs.pagePositioning) && ((appPrefs.displayPrefs.pageGapHorizontal < 0) && (appPrefs.displayPrefs.pageGapVertical < 0)))
- {
- appPrefs.displayPrefs.pageGapHorizontal = ScCLocale::toDoubleC(PgsAttr.attribute("GapHorizontal"), 0.0);
- appPrefs.displayPrefs.pageGapVertical = ScCLocale::toDoubleC(PgsAttr.attribute("GapBelow"), 40.0);
- }
+ QDomElement PgsAttrN = PGSN.toElement();
+ if(PgsAttrN.tagName() == "PageNames")
+ pageS.pageNames.append(PgsAttrN.attribute("Name"));
+ PGSN = PGSN.nextSibling();
+ }
+ appPrefs.pageSets.append(pageS);
+ if ((appPrefs.pageSets.count() == appPrefs.docSetupPrefs.pagePositioning) && ((appPrefs.displayPrefs.pageGapHorizontal < 0) && (appPrefs.displayPrefs.pageGapVertical < 0)))
+ {
+ appPrefs.displayPrefs.pageGapHorizontal = ScCLocale::toDoubleC(PgsAttr.attribute("GapHorizontal"), 0.0);
+ appPrefs.displayPrefs.pageGapVertical = ScCLocale::toDoubleC(PgsAttr.attribute("GapBelow"), 40.0);
}
- PGS = PGS.nextSibling();
}
+ PGS = PGS.nextSibling();
}
}
|
|
|
Qt's QDomNode::namedItem() is buggy but it is here to avoid ending with an empty page set list. So it is necessary to add a few more safety checks to avoid potential crashes on startup. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2020-11-08 16:22 | achalk | New Issue | |
| 2020-11-08 16:22 | achalk | Tag Attached: options | |
| 2020-11-08 16:22 | achalk | Tag Attached: start page | |
| 2020-11-09 07:27 | ale | Note Added: 0048351 | |
| 2020-11-10 14:44 | ale | File Added: page-layout-left.diff | |
| 2020-11-10 14:44 | ale | Note Added: 0048373 | |
| 2020-11-10 14:44 | ale | Summary | Starting page not stored => [PATCH] Starting page not stored |
| 2020-11-10 14:44 | ale | Patch | No => Yes |
| 2020-11-11 13:12 | jghali | Note Added: 0048378 | |
| 2020-11-11 13:17 | jghali | Note Edited: 0048378 | |
| 2020-11-11 13:21 | jghali | Assigned To | => jghali |
| 2020-11-11 13:21 | jghali | Status | new => resolved |
| 2020-11-11 13:21 | jghali | Resolution | open => fixed |
| 2020-11-11 13:21 | jghali | Fixed in Version | => 1.5.7.svn |
| 2020-11-11 13:21 | jghali | Summary | [PATCH] Starting page not stored => Starting page not stored |
| 2021-03-23 06:25 | cbradney | Status | resolved => closed |