Author: jghali
Date: Fri Oct 22 22:41:47 2021
New Revision: 24748

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=24748
Log:
#16664: crash on markdown import

Modified:
    trunk/Scribus/scribus/plugins/gettext/markdownim/markdownim.cpp

Modified: trunk/Scribus/scribus/plugins/gettext/markdownim/markdownim.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24748&path=/trunk/Scribus/scribus/plugins/gettext/markdownim/markdownim.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/markdownim/markdownim.cpp     
(original)
+++ trunk/Scribus/scribus/plugins/gettext/markdownim/markdownim.cpp     Fri Oct 
22 22:41:47 2021
@@ -110,6 +110,8 @@
                        if (headingLevel > 0)
                        {
                                QString headingStyleName = QString("Heading 
%1").arg(headingLevel);
+                               if (m_prefixName)
+                                       headingStyleName = m_item->itemName() + 
"_" + headingStyleName;
                                if (!newParaStyleSet.contains(headingStyleName))
                                {
                                        ParagraphStyle newParaStyle;
@@ -117,16 +119,17 @@
                                        
newParaStyle.setLineSpacingMode(ParagraphStyle::AutomaticLineSpacing);
                                        
newParaStyle.setContext(m_item->itemText.defaultStyle().context());
                                        newParaStyle.charStyle().setFontSize(20 
* (7 - headingLevel) + newParaStyle.charStyle().fontSize());
-                                       QString styleName;
-                                       if (m_prefixName)
-                                               styleName = m_item->itemName() 
+ "_";
-                                       styleName += headingStyleName;
-                                       newParaStyle.setName(styleName);
-                                       newParaStyleSet.create(newParaStyle);
-                                       currentParagraphStyle = newParaStyle;
+                                       newParaStyle.setName(headingStyleName);
+                                       const auto* newParaStylePtr = 
newParaStyleSet.create(newParaStyle);
+                                       
currentParagraphStyle.setContext(newParaStylePtr->context());
+                                       currentParagraphStyle = 
*newParaStylePtr;
                                }
                                else
-                                       currentParagraphStyle = 
newParaStyleSet.get(headingStyleName);
+                               {
+                                       const auto& headingStyle = 
newParaStyleSet.get(headingStyleName);
+                                       
currentParagraphStyle.setContext(headingStyle.context());
+                                       currentParagraphStyle = headingStyle;
+                               }
                        }
 
                        //List items
@@ -138,6 +141,8 @@
                                        listStyleName = QString("List 
%1").arg(listStyleCount);
                                        if (tlf.style() == 
QTextListFormat::ListDecimal)
                                                listStyleName.prepend("Numbered 
");
+                                       if (m_prefixName)
+                                               listStyleName = 
m_item->itemName() + "_" + listStyleName;
                                        if 
(!newParaStyleSet.contains(listStyleName))
                                        {
                                                listStyleCount++;
@@ -169,17 +174,18 @@
                                                        case 
QTextListFormat::ListStyleUndefined:
                                                                break;
                                                }
-                                               QString styleName;
-                                               if (m_prefixName)
-                                                       styleName = 
m_item->itemName() + "_";
-                                               styleName += listStyleName;
-                                               newParaStyle.setName(styleName);
-                                               
newParaStyleSet.create(newParaStyle);
-                                               currentParagraphStyle = 
newParaStyle;
+                                               
newParaStyle.setName(listStyleName);
+                                               const auto* newParaStylePtr = 
newParaStyleSet.create(newParaStyle);
+                                               
currentParagraphStyle.setContext(newParaStylePtr->context());
+                                               currentParagraphStyle = 
*newParaStylePtr;
                                        }
                                }
                                else
-                                       currentParagraphStyle = 
newParaStyleSet.get(listStyleName);
+                               {
+                                       const auto& listStyle = 
newParaStyleSet.get(listStyleName);
+                                       
currentParagraphStyle.setContext(listStyle.context());
+                                       currentParagraphStyle = listStyle;
+                               }
                                if (listCounter++ == curblk.textList()->count())
                                        listCounter = 1;
                        }


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

Reply via email to