summaryrefslogtreecommitdiffstats
path: root/editorlib/src/editorscene.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2016-06-08 15:16:57 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2016-06-08 12:47:54 +0000
commitd2c299786b7367ddd88a1e3bab7900a366c728a0 (patch)
tree17b01ffa8ded9a530a09b15e06b77abc02084af3 /editorlib/src/editorscene.cpp
parente6868e1a207c4887de68048b2b6c4e59fef29ccf (diff)
Group box changed to encompass all grouped entities
Related changes also included: - When grouping items, the new group will be centered to items - Fixes to missing drag handles on group box and extra selection boxes after multiselection. Change-Id: I323324d674021a5487fed0953bea67012cb73abf Reviewed-by: Titta Heikkala <titta.heikkala@qt.io>
Diffstat (limited to 'editorlib/src/editorscene.cpp')
-rw-r--r--editorlib/src/editorscene.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/editorlib/src/editorscene.cpp b/editorlib/src/editorscene.cpp
index 19f51ff..ce870ee 100644
--- a/editorlib/src/editorscene.cpp
+++ b/editorlib/src/editorscene.cpp
@@ -201,6 +201,7 @@ void EditorScene::addEntity(Qt3DCore::QEntity *entity, int index, Qt3DCore::QEnt
if (!m_selectedEntityNameList.isEmpty()) {
// Clear multiselection list, otherwise treeview gets messed up
m_selectedEntityNameList.clear();
+ m_multiSelect = false;
emit multiSelectionChanged(m_selectedEntityNameList);
}
}
@@ -1724,6 +1725,8 @@ void EditorScene::setSelection(Qt3DCore::QEntity *entity)
// Emit signal to highlight the entity from the list
emit selectionChanged(m_selectedEntity);
+ } else if (!m_multiSelect) {
+ clearSelectionBoxes(m_selectedEntity);
}
m_dragHandlesTransform->setEnabled(item->isSelectionBoxShowing() && !m_multiSelect);
@@ -1820,6 +1823,19 @@ void EditorScene::addToMultiSelection(const QString &name)
}
}
+QVector3D EditorScene::getMultiSelectionCenter()
+{
+ QVector3D pos;
+ for (int i = 0; i < m_selectedEntityNameList.size(); i++) {
+ EditorSceneItem *item = m_sceneModel->getItemByName(m_selectedEntityNameList.at(i));
+ if (item) {
+ item->doUpdateSelectionBoxTransform();
+ pos += item->selectionBoxCenter();
+ }
+ }
+ return m_selectedEntityNameList.size() ? (pos / m_selectedEntityNameList.size()) : QVector3D();
+}
+
void EditorScene::setClipboardOperation(ClipboardOperation operation)
{
if (operation != m_clipboardOperation) {
@@ -1915,10 +1931,12 @@ void EditorScene::setViewport(EditorViewportItem *viewport)
}
}
-void EditorScene::clearSelectionBoxes()
+void EditorScene::clearSelectionBoxes(Qt3DCore::QEntity *skipEntity)
{
- Q_FOREACH (EditorSceneItem *item, m_sceneItems.values())
- item->setShowSelectionBox(false);
+ Q_FOREACH (EditorSceneItem *item, m_sceneItems.values()) {
+ if (item->entity() != skipEntity)
+ item->setShowSelectionBox(false);
+ }
}
void EditorScene::endSelectionHandling()
@@ -1940,6 +1958,7 @@ void EditorScene::endSelectionHandling()
Qt3DRender::QCamera *cameraEntity = qobject_cast<Qt3DRender::QCamera *>(m_pickedEntity);
bool viewCenterDrag = cameraEntity && m_cameraViewCenterSelected && !m_viewCenterLocked;
bool entityDrag = m_dragHandleTranslateTransform->isEnabled()
+ && m_dragHandlesTransform->isEnabled()
&& (!cameraEntity || !m_cameraViewCenterSelected);
if (viewCenterDrag || entityDrag) {
m_dragMode = DragTranslate;