Author: jghali
Date: Tue Nov 19 11:42:56 2019
New Revision: 23368

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=23368
Log:
Fix issue where incorrect frame link would be drawn on canvas when using frame 
link/unlink tool

Modified:
    trunk/Scribus/scribus/canvas.cpp

Modified: trunk/Scribus/scribus/canvas.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=23368&path=/trunk/Scribus/scribus/canvas.cpp
==============================================================================
--- trunk/Scribus/scribus/canvas.cpp    (original)
+++ trunk/Scribus/scribus/canvas.cpp    Tue Nov 19 11:42:56 2019
@@ -2117,48 +2117,24 @@
  */
 void Canvas::drawFrameLinks(ScPainter* painter)
 {
+       PageItem *currItem = nullptr;
+       if ((m_doc->appMode == modeLinkFrames) || (m_doc->appMode == 
modeUnlinkFrames))
+       {
+               if (m_doc->m_Selection->count() > 0)
+                       currItem = m_doc->m_Selection->itemAt(0);
+               else if (m_viewMode.linkedFramesToShow.count() > 0)
+                       currItem = m_viewMode.linkedFramesToShow.at(0);
+               if (currItem && (currItem->itemType() != PageItem::TextFrame))
+                       currItem = nullptr;
+       }
+
+       //Draw the frame links
        painter->save();
-       PageItem *currItem;
-       if ((m_doc->guidesPrefs().linkShown || 
m_viewMode.drawFramelinksWithContents) && 
(m_viewMode.linkedFramesToShow.count() != 0))
-               currItem = m_viewMode.linkedFramesToShow.at(0);
-       else
-       {
-               if (m_viewMode.linkedFramesToShow.count() != 0)
-                       currItem = m_viewMode.linkedFramesToShow.at(0);
-               else
-                       currItem = m_doc->m_Selection->itemAt(0);
-       }
-       //Draw the frame links
-       if ((((m_doc->appMode == modeLinkFrames) || (m_doc->appMode == 
modeUnlinkFrames))
-                && (currItem->itemType() == PageItem::TextFrame)) || 
(m_doc->guidesPrefs().linkShown || m_viewMode.drawFramelinksWithContents))
-       {
-               PageItem *nextItem = currItem;
-               if (m_doc->guidesPrefs().linkShown || 
m_viewMode.drawFramelinksWithContents)
-               {
-                       for (int lks = 0; lks < 
m_viewMode.linkedFramesToShow.count(); ++lks)
-                       {
-                               nextItem = 
m_viewMode.linkedFramesToShow.at(lks);
-                               while (nextItem != nullptr)
-                               {
-                                       if (nextItem->nextInChain() != nullptr)
-                                       {
-                                               FPoint start, end;
-                                               
calculateFrameLinkPoints(nextItem, nextItem->nextInChain(), start, end);
-                                               drawLinkFrameLine(painter, 
start, end);
-                                       }
-                                       nextItem = nextItem->nextInChain();
-                               }
-                       }
-               }
-               else
-               {
-                       while (nextItem != nullptr)
-                       {
-                               if (nextItem->prevInChain() != nullptr)
-                                       nextItem = nextItem->prevInChain();
-                               else
-                                       break;
-                       }
+       if (m_doc->guidesPrefs().linkShown || 
m_viewMode.drawFramelinksWithContents)
+       {
+               for (int i = 0; i < m_viewMode.linkedFramesToShow.count(); ++i)
+               {
+                       PageItem* nextItem = 
m_viewMode.linkedFramesToShow.at(i);
                        while (nextItem != nullptr)
                        {
                                if (nextItem->nextInChain() != nullptr)
@@ -2169,6 +2145,20 @@
                                }
                                nextItem = nextItem->nextInChain();
                        }
+               }
+       }
+       else if ((((m_doc->appMode == modeLinkFrames) || (m_doc->appMode == 
modeUnlinkFrames)) && (currItem != nullptr)))
+       {
+               PageItem *nextItem = currItem->firstInChain();
+               while (nextItem != nullptr)
+               {
+                       if (nextItem->nextInChain() != nullptr)
+                       {
+                               FPoint start, end;
+                               calculateFrameLinkPoints(nextItem, 
nextItem->nextInChain(), start, end);
+                               drawLinkFrameLine(painter, start, end);
+                       }
+                       nextItem = nextItem->nextInChain();
                }
        }
        painter->setLineWidth(1);


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

Reply via email to