Author: jghali
Date: Wed Nov 22 18:00:22 2017
New Revision: 22222

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22222
Log:
#15045: Editing table cells is not reliable

Modified:
    trunk/Scribus/scribus/pageitem.h
    trunk/Scribus/scribus/pageitem_group.cpp
    trunk/Scribus/scribus/pageitem_group.h
    trunk/Scribus/scribus/pageitem_table.cpp
    trunk/Scribus/scribus/pageitem_table.h
    
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
    trunk/Scribus/scribus/scribusdoc.cpp
    trunk/Scribus/scribus/tablecell.cpp
    trunk/Scribus/scribus/ui/pagepalette_masterpages.cpp
    trunk/Scribus/scribus/util.cpp

Modified: trunk/Scribus/scribus/pageitem.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22222&path=/trunk/Scribus/scribus/pageitem.h
==============================================================================
--- trunk/Scribus/scribus/pageitem.h    (original)
+++ trunk/Scribus/scribus/pageitem.h    Wed Nov 22 18:00:22 2017
@@ -776,7 +776,27 @@
         */
        void setItemName(const QString& newName);
 
-       /** @brief Get the name of the gradient of the object */
+       /**
+       * @brief Set the masterpage the object is on
+       * @param mpName name of the master page
+       */
+       virtual void setMasterPage(int page, const QString& mpName) { OwnPage = 
page; OnMasterPage = mpName; }
+
+       /**
+        * @brief Set the masterpage the object is on
+        * @param mpName name of the master page
+        */
+       virtual void setMasterPageName(const QString& mpName) { OnMasterPage = 
mpName; }
+
+       /**
+       * @brief Set the page "owning" the object
+       * @param page index of the page
+       */
+       virtual void setOwnerPage(int page) { OwnPage = page; }
+
+       /** 
+        * @brief Get the name of the gradient of the object
+        */
        QString gradient() const { return gradientVal; }
 
        /**
@@ -1099,9 +1119,9 @@
        void convertTo(ItemType newType);
 
        /**
-       * Set the layer for the item
-       * @param layerId layer where this item is moved
-       */
+        * Set the layer for the item
+        * @param layerId layer where this item is moved
+        */
        virtual void setLayer(int layerId);
 
        /**

Modified: trunk/Scribus/scribus/pageitem_group.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22222&path=/trunk/Scribus/scribus/pageitem_group.cpp
==============================================================================
--- trunk/Scribus/scribus/pageitem_group.cpp    (original)
+++ trunk/Scribus/scribus/pageitem_group.cpp    Wed Nov 22 18:00:22 2017
@@ -100,6 +100,28 @@
                embedded->setLayer(newLayerID);
        }
        LayerID = newLayerID;
+}
+
+void PageItem_Group::setMasterPage(int page, const QString& mpName)
+{
+       PageItem::setMasterPage(page, mpName);
+
+       for (int em = 0; em < groupItemList.count(); ++em)
+       {
+               PageItem* embedded = groupItemList.at(em);
+               embedded->setMasterPage(page, mpName);
+       }
+}
+
+void PageItem_Group::setMasterPageName(const QString& mpName)
+{
+       PageItem::setMasterPageName(mpName);
+
+       for (int em = 0; em < groupItemList.count(); ++em)
+       {
+               PageItem* embedded = groupItemList.at(em);
+               embedded->setMasterPageName(mpName);
+       }
 }
 
 void PageItem_Group::replaceNamedResources(ResourceCollection& newNames)

Modified: trunk/Scribus/scribus/pageitem_group.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22222&path=/trunk/Scribus/scribus/pageitem_group.h
==============================================================================
--- trunk/Scribus/scribus/pageitem_group.h      (original)
+++ trunk/Scribus/scribus/pageitem_group.h      Wed Nov 22 18:00:22 2017
@@ -45,7 +45,9 @@
        virtual ItemType realItemType() const { return PageItem::Group; }
        void adjustXYPosition();
        virtual QList<PageItem*> getItemList() const;
-       virtual void setLayer(int layerId);
+       virtual void setLayer(int layerId);
+       virtual void setMasterPage(int page, const QString& mpName);
+       virtual void setMasterPageName(const QString& mpName);
        virtual void getNamedResources(ResourceCollection& lists) const;
        virtual void replaceNamedResources(ResourceCollection& newNames);
        virtual void applicableActions(QStringList& actionList);

Modified: trunk/Scribus/scribus/pageitem_table.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22222&path=/trunk/Scribus/scribus/pageitem_table.cpp
==============================================================================
--- trunk/Scribus/scribus/pageitem_table.cpp    (original)
+++ trunk/Scribus/scribus/pageitem_table.cpp    Wed Nov 22 18:00:22 2017
@@ -210,6 +210,91 @@
                        {
                                PageItem* textFrame = cell.textFrame();
                                textFrame->layout();
+                       }
+               }
+       }
+}
+
+void PageItem_Table::setLayer(int newLayerID)
+{
+       LayerID = newLayerID;
+
+       int rowCount = rows();
+       int columnCount = columns();
+
+       for (int row = 0; row < rowCount; ++row)
+       {
+               for (int col = 0; col < columnCount; col++)
+               {
+                       TableCell cell = cellAt(row, col);
+                       if (cell.row() == row && cell.column() == col)
+                       {
+                               PageItem* textFrame = cell.textFrame();
+                               textFrame->LayerID = newLayerID;
+                       }
+               }
+       }
+}
+
+void PageItem_Table::setMasterPage(int page, const QString& mpName)
+{
+       PageItem::setMasterPage(page, mpName);
+
+       int rowCount = rows();
+       int columnCount = columns();
+
+       for (int row = 0; row < rowCount; ++row)
+       {
+               for (int col = 0; col < columnCount; col++)
+               {
+                       TableCell cell = cellAt(row, col);
+                       if (cell.row() == row && cell.column() == col)
+                       {
+                               PageItem* textFrame = cell.textFrame();
+                               textFrame->OwnPage = page;
+                               textFrame->OnMasterPage = mpName;
+                       }
+               }
+       }
+}
+
+void PageItem_Table::setMasterPageName(const QString& mpName)
+{
+       PageItem::setMasterPageName(mpName);
+
+       int rowCount = rows();
+       int columnCount = columns();
+
+       for (int row = 0; row < rowCount; ++row)
+       {
+               for (int col = 0; col < columnCount; col++)
+               {
+                       TableCell cell = cellAt(row, col);
+                       if (cell.row() == row && cell.column() == col)
+                       {
+                               PageItem* textFrame = cell.textFrame();
+                               textFrame->OnMasterPage = mpName;
+                       }
+               }
+       }
+}
+
+void PageItem_Table::setOwnerPage(int page)
+{
+       PageItem::setOwnerPage(page);
+
+       int rowCount = rows();
+       int columnCount = columns();
+
+       for (int row = 0; row < rowCount; ++row)
+       {
+               for (int col = 0; col < columnCount; col++)
+               {
+                       TableCell cell = cellAt(row, col);
+                       if (cell.row() == row && cell.column() == col)
+                       {
+                               PageItem* textFrame = cell.textFrame();
+                               textFrame->OwnPage = page;
                        }
                }
        }

Modified: trunk/Scribus/scribus/pageitem_table.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22222&path=/trunk/Scribus/scribus/pageitem_table.h
==============================================================================
--- trunk/Scribus/scribus/pageitem_table.h      (original)
+++ trunk/Scribus/scribus/pageitem_table.h      Wed Nov 22 18:00:22 2017
@@ -485,6 +485,18 @@
        /// Returns the rows of the table for writing to SLA
        QList<QList<TableCell> > cellRows() const { return m_cellRows; }
 
+       /// Set the layer for the item
+       virtual void setLayer(int layerId);
+
+       /// Set the masterpage the object is on
+       virtual void setMasterPage(int page, const QString& mpName);
+
+       /// Set the masterpage the object is on
+       virtual void setMasterPageName(const QString& mpName);
+
+       /// Set the page "owning" the object
+       virtual void setOwnerPage(int page);
+
        /// Collect named resource of table and its cells
        virtual void getNamedResources(ResourceCollection& lists) const;
 

Modified: 
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22222&path=/trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
==============================================================================
--- 
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp  
    (original)
+++ 
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp  
    Wed Nov 22 18:00:22 2017
@@ -3728,16 +3728,15 @@
        PageItem* newItem = pasteItem(doc, attrs, baseDir, itemKind, pagenr);
        newItem->setRedrawBounding();
        if (tagName == "MASTEROBJECT")
-               newItem->OwnPage = doc->OnPage(newItem);
+               newItem->setOwnerPage(doc->OnPage(newItem));
        else
-               newItem->OwnPage = attrs.valueAsInt("OwnPage");
+               newItem->setOwnerPage(attrs.valueAsInt("OwnPage"));
        if ((tagName == "PAGEOBJECT") || (tagName == "ITEM"))
-               newItem->OnMasterPage = "";
+               newItem->setMasterPageName(QString());
        if (tagName == "ITEM")
        {
-               newItem->LayerID = LayerToPaste;
-               newItem->OwnPage = doc->OnPage(newItem);
-               newItem->OnMasterPage = doc->currentPage()->pageName();
+               newItem->setLayer(LayerToPaste);
+               newItem->setMasterPage(doc->OnPage(newItem), 
doc->currentPage()->pageName());
        }
        QString tmpf = attrs.valueAsString("IFONT", 
doc->itemToolPrefs().textFont);
        m_AvailableFonts->findFont(tmpf, doc);

Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22222&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp        (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp        Wed Nov 22 18:00:22 2017
@@ -2697,7 +2697,7 @@
        for (int i = 0; i < masterItemsCount; ++i)
        {
                if (MasterItems.at(i)->OnMasterPage == oldPageName)
-                       MasterItems.at(i)->OnMasterPage = newPageName;
+                       MasterItems.at(i)->setMasterPageName(newPageName);
        }
        changed();
        if (UndoManager::undoEnabled())
@@ -5323,8 +5323,7 @@
        for (int a = end2; a < end3; ++a)
        {
                PageItem *newItem = MasterItems.at(a);
-               newItem->OnMasterPage = masterPageName;
-               newItem->OwnPage = MasterNames[masterPageName];
+               newItem->setMasterPage(MasterNames[masterPageName], 
masterPageName);
        }
        targetPage->MPageNam = "";
        setLoading(false);
@@ -6051,7 +6050,7 @@
                }
 
                // If no or page owner is incorrect, recompute page owner
-               currItem->OwnPage = OnPage(currItem);
+               currItem->setOwnerPage(OnPage(currItem));
        }
 
        // #10379: Scribus crash when opening .sla document

Modified: trunk/Scribus/scribus/tablecell.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22222&path=/trunk/Scribus/scribus/tablecell.cpp
==============================================================================
--- trunk/Scribus/scribus/tablecell.cpp (original)
+++ trunk/Scribus/scribus/tablecell.cpp Wed Nov 22 18:00:22 2017
@@ -34,6 +34,9 @@
        d->textFrame = new PageItem_TextFrame(d->table->m_Doc,
                0, 0, 0, 0, 0, CommonStrings::None, CommonStrings::None);
        d->textFrame->Parent = table;
+       d->textFrame->OwnPage = table->OwnPage;
+       d->textFrame->OnMasterPage = table->OnMasterPage;
+       d->textFrame->LayerID = table->LayerID;
 
        setValid(true);
        setRow(row);

Modified: trunk/Scribus/scribus/ui/pagepalette_masterpages.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22222&path=/trunk/Scribus/scribus/ui/pagepalette_masterpages.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/pagepalette_masterpages.cpp        (original)
+++ trunk/Scribus/scribus/ui/pagepalette_masterpages.cpp        Wed Nov 22 
18:00:22 2017
@@ -312,22 +312,8 @@
        for (uint a = end2; a < end3; ++a)
        {
                PageItem *newItem = m_doc->MasterItems.at(a);
-               newItem->OnMasterPage = masterPageName;
-               newItem->OwnPage = m_doc->MasterNames[masterPageName];
-               if (!newItem->isGroup())
-                       continue;
-
                int masterPageIndex = m_doc->MasterNames[masterPageName];
-               PageItem_Group* group = newItem->asGroupFrame();
-               QList<PageItem*> groupList = group->groupItemList;
-               while (!groupList.isEmpty())
-               {
-                       newItem = groupList.takeFirst();
-                       newItem->OnMasterPage = masterPageName;
-                       newItem->OwnPage = masterPageIndex;
-                       if (newItem->isGroup())
-                               groupList = 
newItem->asGroupFrame()->groupItemList + groupList;
-               }
+               newItem->setMasterPage(masterPageIndex, masterPageName);
        }
        from->guides.copy(&destination->guides);
        m_doc->GroupCounter = GrMax + 1;

Modified: trunk/Scribus/scribus/util.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22222&path=/trunk/Scribus/scribus/util.cpp
==============================================================================
--- trunk/Scribus/scribus/util.cpp      (original)
+++ trunk/Scribus/scribus/util.cpp      Wed Nov 22 18:00:22 2017
@@ -1130,6 +1130,8 @@
                tr = tr->BottomLink;
        }
        m_Doc->dontResize = true;
+       currItem->setLayer(gItem->LayerID);
+       currItem->setMasterPage(gItem->OwnPage, gItem->OnMasterPage);
        currItem->adjustFrameToTable();
        if (target != NULL)
        {


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

Reply via email to