Author: jghali
Date: Tue Dec 10 08:35:00 2019
New Revision: 23414

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=23414
Log:
Fix some canvas update issues when changing start/end arrows

Modified:
    trunk/Scribus/scribus/scribusdoc.cpp

Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=23414&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp        (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp        Tue Dec 10 08:35:00 2019
@@ -13780,6 +13780,9 @@
        if (selectedItemCount == 0)
                return;
 
+       if ((startArrowID < 0) && (endArrowID < 0))
+               return;
+
        UndoTransaction activeTransaction;
        m_updateManager.setUpdatesDisabled();
        if (UndoManager::undoEnabled() && selectedItemCount > 1)
@@ -13787,24 +13790,32 @@
        QString tooltip = Um::ItemsInvolved + "\n";
        if (selectedItemCount > Um::ItemsInvolvedLimit)
                tooltip = Um::ItemsInvolved2 + "\n";
+
+       QRectF updateRect;
        for (int i = 0; i < selectedItemCount; ++i)
        {
                PageItem *currItem = itemSelection->itemAt(i);
                if (!(currItem->asLine() || currItem->asPolyLine() || 
currItem->asSpiral()))
                        continue;
+               updateRect = updateRect.united(currItem->getBoundingRect());
                if (startArrowID != -1)
                        currItem->setStartArrowIndex(startArrowID);
                if (endArrowID != -1)
                        currItem->setEndArrowIndex(endArrowID);
+               updateRect = updateRect.united(currItem->getBoundingRect());
                if (selectedItemCount <= Um::ItemsInvolvedLimit)
                        tooltip += "\t" + currItem->getUName() + "\n";
-               currItem->update();
-       }
+               //currItem->update();
+       }
+
+       if (!updateRect.isEmpty())
+               regionsChanged()->update(updateRect);
+
        QString undoText;
        if (startArrowID!=-1 && endArrowID!=-1)
-               undoText=Um::StartAndEndArrow;
+               undoText = Um::StartAndEndArrow;
        else
-               undoText=(startArrowID!=-1) ? Um::StartArrow : Um::EndArrow;
+               undoText = (startArrowID != -1) ? Um::StartArrow : Um::EndArrow;
        if (activeTransaction)
        {
                activeTransaction.commit(Um::Selection,


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

Reply via email to