From 41606a67e4bad4184841ac2f492f309fa2f233a5 Mon Sep 17 00:00:00 2001 From: Marek Kochanowicz Date: Sat, 15 Feb 2014 20:49:09 +0100 Subject: [PATCH] implemented whitelist of allowed types in the scripts --- apps/opencs/view/world/scriptedit.cpp | 41 +++++++++++++++++++++++---- apps/opencs/view/world/scriptedit.hpp | 5 ++++ 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/apps/opencs/view/world/scriptedit.cpp b/apps/opencs/view/world/scriptedit.cpp index 4eb652add..20b76ad72 100644 --- a/apps/opencs/view/world/scriptedit.cpp +++ b/apps/opencs/view/world/scriptedit.cpp @@ -1,25 +1,51 @@ #include "scriptedit.hpp" -#include - #include #include "../../model/world/universalid.hpp" #include "../../model/world/tablemimedata.hpp" CSVWorld::ScriptEdit::ScriptEdit (QWidget* parent) : -QTextEdit(parent) + QTextEdit (parent) { - + mAllowedTypes <pos())); event->acceptProposedAction(); } void CSVWorld::ScriptEdit::dragMoveEvent (QDragMoveEvent* event) { + setTextCursor (cursorForPosition (event->pos())); event->accept(); } @@ -27,11 +53,16 @@ void CSVWorld::ScriptEdit::dropEvent (QDropEvent* event) { const CSMWorld::TableMimeData* mime = dynamic_cast (event->mimeData()); + setTextCursor (cursorForPosition (event->pos())); + std::vector records (mime->getData()); for (std::vector::iterator it = records.begin(); it != records.end(); ++it) { - insertPlainText (QString::fromStdString (it->getId())); + if (mAllowedTypes.contains (it->getType())) + { + insertPlainText (QString::fromStdString (it->getId() + " ")); + } } } // kate: indent-mode cstyle; indent-width 4; replace-tabs on; diff --git a/apps/opencs/view/world/scriptedit.hpp b/apps/opencs/view/world/scriptedit.hpp index 6df4acc5f..5355b57ce 100644 --- a/apps/opencs/view/world/scriptedit.hpp +++ b/apps/opencs/view/world/scriptedit.hpp @@ -2,6 +2,9 @@ #define SCRIPTEDIT_H #include +#include + +#include "../../model/world/universalid.hpp" class QWidget; @@ -14,6 +17,8 @@ namespace CSVWorld ScriptEdit (QWidget* parent); private: + QVector mAllowedTypes; + void dragEnterEvent (QDragEnterEvent* event); void dropEvent (QDropEvent* event);