Author: jghali
Date: Thu Apr  5 22:42:52 2018
New Revision: 22466

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22466
Log:
#15248: After changing the "Hyphenation Character", Scribus crashes

Modified:
    trunk/Scribus/scribus/scribusdoc.cpp

Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22466&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp        (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp        Thu Apr  5 22:42:52 2018
@@ -8001,7 +8001,7 @@
 {
        CharStyle newStyle;
        newStyle.setHyphenWordMin(wordMin);
-       itemSelection_ApplyCharStyle(newStyle, customSelection, 
"HYPHENWORDMIN");
+       itemSelection_ApplyCharStyle(newStyle, customSelection, 
"HYPHEN_WORDMIN");
 }
 
 void ScribusDoc::itemSelection_SetHyphenConsecutiveLines(int consecutiveLines, 
Selection* customSelection)
@@ -8015,7 +8015,7 @@
 {
        CharStyle newStyle;
        newStyle.setHyphenChar(hyphenChar);
-       itemSelection_ApplyCharStyle(newStyle, customSelection);
+       itemSelection_ApplyCharStyle(newStyle, customSelection, "HYPHEN_CHAR");
 }
 
 void ScribusDoc::itemSelection_SetNamedCharStyle(const QString& name, 
Selection* customSelection)
@@ -9496,13 +9496,20 @@
                                                UndoState* state = 
m_undoManager->getLastUndo();
                                                
ScItemState<QPair<CharStyle,CharStyle> > *is = NULL;
                                                SimpleState *ss = NULL;
-                                               TransactionState *ts = 
dynamic_cast<TransactionState*>(state);
-                                               if (state && 
state->isTransaction())
+                                               TransactionState *ts = NULL;
+                                               while (state && 
state->isTransaction())
+                                               {
+                                                       ts = 
dynamic_cast<TransactionState*>(state);
                                                        ss = 
dynamic_cast<SimpleState*>(ts->last());
-                                               if (ss && ss->get("ETEA") == 
ETEA)
+                                                       state = ts->last();
+                                               }
+                                               if (ts && ss && ss->get("ETEA") 
== ETEA)
                                                {
-                                                       for (uint i=0; i < 
ts->sizet(); i++) {
-                                                               is = 
dynamic_cast<ScItemState<QPair<CharStyle,CharStyle> > *>(ts->at(i));
+                                                       for (int i = 
ts->sizet() - 1; i >= 0; --i)
+                                                       {
+                                                               is = 
dynamic_cast<ScItemState<QPair<CharStyle, CharStyle> > *>(ts->at(i));
+                                                               if (!is || 
(is->get("ETEA") != ETEA))
+                                                                       break;
                                                                
is->setItem(qMakePair(newStyle, is->getItem().second));
                                                        }
                                                }


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

Reply via email to