Author: jghali
Date: Fri Mar 15 13:18:09 2019
New Revision: 22896

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22896
Log:
#15604: wrong undo when resizing multiple items

Modified:
    trunk/Scribus/scribus/scribusdoc.cpp

Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22896&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp        (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp        Fri Mar 15 13:18:09 2019
@@ -14366,7 +14366,8 @@
 {
        if (currItem->isArc())
                return;
-       m_undoManager->setUndoEnabled(false);
+       // Added by r17735: why? this break resizing of multiple item selections
+       //m_undoManager->setUndoEnabled(false);
        bool siz = currItem->Sizing;
        currItem->Sizing = false;
        if ((!(currItem->isGroup() || currItem->isSymbol())) || includeGroup)
@@ -14439,7 +14440,8 @@
                currItem->Clip = FlattenPath(currItem->PoLine, 
currItem->Segments);
        currItem->updateGradientVectors();
        currItem->Sizing = siz;
-       m_undoManager->setUndoEnabled(true);
+       // Added by r17735: why? this break resizing of multiple item selections
+       //m_undoManager->setUndoEnabled(true);
 }
 
 void ScribusDoc::moveGroup(double x, double y, Selection* customSelection)
@@ -14555,6 +14557,10 @@
        double origGW = gw;
        double origGH = gh;
        updateManager()->setUpdatesDisabled();
+
+       UndoTransaction activeTransaction;
+       if (UndoManager::undoEnabled())
+               activeTransaction = 
m_undoManager->beginTransaction(Um::Selection, Um::IResize, Um::Resize, "", 
Um::IResize);
 
        for (int i = 0; i < selectedItemCount; ++i)
        {
@@ -14700,6 +14706,9 @@
                                        bb->updatePolyClip();
                        }
                }
+
+               bb->checkChanges();
+
                bb->setImageXYOffset(oldLocalX, oldLocalY);
                bb->OldB2 = bb->width();
                bb->OldH2 = bb->height();
@@ -14763,6 +14772,9 @@
                currItem->gWidth = gw;
                currItem->gHeight = gh;
        }
+
+       if (activeTransaction)
+               activeTransaction.commit();
        // FIXME:av emit DocChanged();
 }
 


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

Reply via email to