diff --git a/thirdparty/next/src/core/objectsystem.cpp b/thirdparty/next/src/core/objectsystem.cpp index 40b634331..f00255068 100644 --- a/thirdparty/next/src/core/objectsystem.cpp +++ b/thirdparty/next/src/core/objectsystem.cpp @@ -460,6 +460,7 @@ void ObjectSystem::addObject(Object *object) { } /*! \internal + Removes an \a object from operation lists. */ void ObjectSystem::removeObject(Object *object) { PROFILE_FUNCTION(); @@ -467,12 +468,6 @@ void ObjectSystem::removeObject(Object *object) { m_objectList.remove(object); } } -/*! - \internal -*/ -void ObjectSystem::suspendObject(Object *object) { - m_suspendObject = object; -} /*! Returns a list of objects with specified \a type. \warning This is very small function! @@ -486,3 +481,9 @@ Object::ObjectList ObjectSystem::getAllObjectsByType(const string &type) const { } return result; } +/*! + \internal +*/ +void ObjectSystem::suspendObject(Object *object) { + m_suspendObject = object; +} diff --git a/worldeditor/src/screens/objecthierarchy/hierarchybrowser.cpp b/worldeditor/src/screens/objecthierarchy/hierarchybrowser.cpp index 1794b4ced..f72d0755e 100644 --- a/worldeditor/src/screens/objecthierarchy/hierarchybrowser.cpp +++ b/worldeditor/src/screens/objecthierarchy/hierarchybrowser.cpp @@ -349,24 +349,27 @@ void HierarchyBrowser::onDragStarted(Qt::DropActions supportedActions) { } void HierarchyBrowser::onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { - QList list; - - foreach(QModelIndex it, selected.indexes()) { - if(it.column() == 0) { - Object *object = static_cast(m_filter->mapToSource(it).internalPointer()); - - list.push_back(object); - } + if(selected.indexes().isEmpty()) { + emit objectsSelected({}, false); } - - emit objectsSelected(list, false); } void HierarchyBrowser::on_treeView_clicked(const QModelIndex &index) { Object *object = static_cast(m_filter->mapToSource(index).internalPointer()); Actor *actor = dynamic_cast(object); if(actor) { - if(index.column() == 2) { + if(index.column() == 0) { + QList list; + + QItemSelectionModel *selectionModel = ui->treeView->selectionModel(); + for(auto it : selectionModel->selectedIndexes()) { + Object *object = static_cast(m_filter->mapToSource(it).internalPointer()); + + list.push_back(object); + } + + emit objectsSelected(list, false); + } else if(index.column() == 2) { actor->setHideFlags(actor->hideFlags() ^ Actor::ENABLE); onUpdated(); } else if(index.column() == 3) { diff --git a/worldeditor/src/screens/propertyedit/custom/objectselect/objectselect.cpp b/worldeditor/src/screens/propertyedit/custom/objectselect/objectselect.cpp index f80940cc9..ba1f8dda6 100644 --- a/worldeditor/src/screens/propertyedit/custom/objectselect/objectselect.cpp +++ b/worldeditor/src/screens/propertyedit/custom/objectselect/objectselect.cpp @@ -137,7 +137,7 @@ void ObjectSelect::onAssetSelected(QString asset) { } void ObjectSelect::dragEnterEvent(QDragEnterEvent *event) { - if(event->mimeData()->hasFormat(gMimeObject)) { + if(event->mimeData()->hasFormat(gMimeObject) && m_objectData.scene) { sBrowser->onSetRootObject(m_objectData.scene); QString path(event->mimeData()->data(gMimeObject)); foreach(const QString &it, path.split(";")) { @@ -151,7 +151,7 @@ void ObjectSelect::dragEnterEvent(QDragEnterEvent *event) { } } } - } else if(event->mimeData()->hasFormat(gMimeContent)) { + } else if(event->mimeData()->hasFormat(gMimeContent) && !m_templateData.type.isEmpty()) { QString path(event->mimeData()->data(gMimeContent)); QString type = AssetManager::instance()->assetTypeName(path); if(type == m_templateData.type) {