Author: jghali
Date: Mon Sep 10 16:10:02 2018
New Revision: 22677

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22677
Log:
#15402: accidentally pasting scribus object in story editor pastes bunch of XML 
in plain text

Modified:
    trunk/Scribus/scribus/scmimedata.cpp
    trunk/Scribus/scribus/scribus.cpp
    trunk/Scribus/scribus/ui/storyeditor.cpp

Modified: trunk/Scribus/scribus/scmimedata.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22677&path=/trunk/Scribus/scribus/scmimedata.cpp
==============================================================================
--- trunk/Scribus/scribus/scmimedata.cpp        (original)
+++ trunk/Scribus/scribus/scmimedata.cpp        Mon Sep 10 16:10:02 2018
@@ -18,6 +18,12 @@
 #include <QApplication>
 #include <QClipboard>
 #include <QMimeData>
+
+// Define to 1 if you need to debug data contained in ScElemMimeData.
+// This will have the effect of enabling the pasting of stored data
+// in any text editor. Leave defined to 0 otherwise as this may trigger
+// unwanted pasting of text in story editor (#15402). 
+#define DEBUG_SCELEMMIMEDATA 0
 
 const QString ScMimeData::ScribusElemMimeType     = 
"application/x-scribus-elem";
 const QString ScMimeData::ScribusFragmentMimeType = 
"application/x-scribus-fragment";
@@ -87,7 +93,7 @@
 
 QString ScMimeData::clipboardKnownDataExt()
 {
-       QString ext = "";
+       QString ext;
        const QMimeData* mimeData = QApplication::clipboard()->mimeData();
        if (mimeData)
        {
@@ -103,7 +109,7 @@
 
 QByteArray ScMimeData::clipboardKnownDataData()
 {
-       QByteArray data = "";
+       QByteArray data;
        const QMimeData* mimeData = QApplication::clipboard()->mimeData();
        if (mimeData)
        {
@@ -141,31 +147,39 @@
 
 ScElemMimeData::ScElemMimeData()
 {
-       m_formats << "application/x-scribus-elem" << "text/plain";
+       m_formats << ScMimeData::ScribusElemMimeType;
+#if DEBUG_SCELEMMIMEDATA
+       m_formats << "text/plain";
+#endif 
 }
 
 bool ScElemMimeData::hasFormat (const QString & mimeType) const
 {
-//     bool hasFmt = false;
        if (mimeType == ScMimeData::ScribusElemMimeType)
        {
-               if (!m_scribusElemData.isEmpty())
-               {
-                       QString elemtag = "SCRIBUSELEM";
-                       return (m_scribusElemData.lastIndexOf(elemtag, 50 + 
elemtag.length()) >= 0);
-               }
+               if (m_scribusElemData.isEmpty())
+                       return false;
+               QString elemtag = "SCRIBUSELEM";
+               return (m_scribusElemData.lastIndexOf(elemtag, 50 + 
elemtag.length()) >= 0);
        }
-       else if (mimeType == "text/plain")
-               return true;
+#if DEBUG_SCELEMMIMEDATA
+       if (mimeType == "text/plain")
+               return (!m_scribusElemData.isEmpty());
+#endif
        return QMimeData::hasFormat(mimeType);
 }
 
 QVariant ScElemMimeData::retrieveData (const QString &mimeType, QVariant::Type 
type) const
 {
-       QVariant variant;
        if (mimeType == ScMimeData::ScribusElemMimeType)
-               variant = QVariant(m_scribusElemData);
+       {
+               if (m_scribusElemData.isEmpty())
+                       return QVariant();
+               return QVariant(m_scribusElemData);
+       }
+#if DEBUG_SCELEMMIMEDATA
        if (mimeType == "text/plain")
-               variant = QVariant(m_scribusElemData);
-       return variant;
+               return QVariant(m_scribusElemData);
+#endif
+       return QVariant();
 }

Modified: trunk/Scribus/scribus/scribus.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22677&path=/trunk/Scribus/scribus/scribus.cpp
==============================================================================
--- trunk/Scribus/scribus/scribus.cpp   (original)
+++ trunk/Scribus/scribus/scribus.cpp   Mon Sep 10 16:10:02 2018
@@ -4616,7 +4616,6 @@
                }
                ScElemMimeData* mimeData = new ScElemMimeData();
                mimeData->setScribusElem(BufferS);
-               mimeData->setText(BufferS);
                QApplication::clipboard()->setMimeData(mimeData, 
QClipboard::Clipboard);
                for (int i=0; i < doc->m_Selection->count(); ++i)
                {
@@ -4694,7 +4693,6 @@
                        }
                        ScElemMimeData* mimeData = new ScElemMimeData();
                        mimeData->setScribusElem(BufferS);
-                       mimeData->setText(BufferS);
                        QApplication::clipboard()->setMimeData(mimeData, 
QClipboard::Clipboard);
                }
                else

Modified: trunk/Scribus/scribus/ui/storyeditor.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22677&path=/trunk/Scribus/scribus/ui/storyeditor.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/storyeditor.cpp    (original)
+++ trunk/Scribus/scribus/ui/storyeditor.cpp    Mon Sep 10 16:10:02 2018
@@ -2147,8 +2147,9 @@
                Editor->clear();
                setWindowTitle( tr( "Story Editor" ));
        }
-       if (!QApplication::clipboard()->text(QClipboard::Clipboard).isNull())
-               seActions["editPaste"]->setEnabled(true);
+
+       QString clipboardText = 
QApplication::clipboard()->text(QClipboard::Clipboard);
+       seActions["editPaste"]->setEnabled(!clipboardText.isEmpty());
 }
 
 void StoryEditor::setSpellActive(bool ssa)


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

Reply via email to