diff options
-rw-r--r-- | lslayoutwindow.cpp | 4 | ||||
-rw-r--r-- | lsscenemodel.cpp | 17 | ||||
-rw-r--r-- | lsscenemodel.h | 3 |
3 files changed, 24 insertions, 0 deletions
diff --git a/lslayoutwindow.cpp b/lslayoutwindow.cpp index 518d022..7360dcb 100644 --- a/lslayoutwindow.cpp +++ b/lslayoutwindow.cpp @@ -75,6 +75,10 @@ LSLayoutWindow::LSLayoutWindow(LYTPackageBase *pkg, const QString &layoutName, Q m_widthBox->setValue(m_layout->width); m_heightBox->setValue(m_layout->height); + m_sceneGraph->setSelectionMode(QAbstractItemView::ExtendedSelection); + m_sceneGraph->setDragEnabled(true); + m_sceneGraph->setAcceptDrops(true); + m_sceneGraph->setDropIndicatorShown(true); m_sceneGraph->setModel(new LSSceneModel(m_layout, this)); m_sceneGraph->expandAll(); diff --git a/lsscenemodel.cpp b/lsscenemodel.cpp index 38da4e7..e2e411c 100644 --- a/lsscenemodel.cpp +++ b/lsscenemodel.cpp @@ -68,3 +68,20 @@ QVariant LSSceneModel::data(const QModelIndex &index, int role) const { } return QVariant(); } + + +Qt::ItemFlags LSSceneModel::flags(const QModelIndex &index) const { + Qt::ItemFlags flag; + flag = Qt::ItemIsEnabled | Qt::ItemIsSelectable | + Qt::ItemIsDropEnabled | Qt::ItemIsEditable; + + if (index.isValid() && index.parent().isValid()) + flag |= Qt::ItemIsDragEnabled; + + return flag; +} + + +Qt::DropActions LSSceneModel::supportedDropActions() const { + return Qt::CopyAction | Qt::MoveAction; +} diff --git a/lsscenemodel.h b/lsscenemodel.h index 00cb736..c769857 100644 --- a/lsscenemodel.h +++ b/lsscenemodel.h @@ -18,6 +18,9 @@ public: int columnCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; + Qt::ItemFlags flags(const QModelIndex &index) const; + Qt::DropActions supportedDropActions() const; + private: LYTLayout *m_layout; |