summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/commands.pri6
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/enable3dviewcommand.cpp (renamed from share/qtcreator/qml/qmlpuppet/commands/change3dviewcommand.cpp)28
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/enable3dviewcommand.h (renamed from share/qtcreator/qml/qmlpuppet/commands/change3dviewcommand.h)25
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/update3dviewstatecommand.cpp106
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/update3dviewstatecommand.h (renamed from src/plugins/qmldesigner/components/formeditor/editview3dproxydialog.h)52
-rw-r--r--share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.cpp21
-rw-r--r--share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.h6
-rw-r--r--share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp10
-rw-r--r--share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.h6
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml12
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp6
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h3
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp117
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h12
-rw-r--r--src/plugins/coreplugin/icore.h2
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp13
-rw-r--r--src/plugins/coreplugin/mainwindow.h2
-rw-r--r--src/plugins/qmldesigner/CMakeLists.txt4
-rw-r--r--src/plugins/qmldesigner/components/formeditor/editview3dproxydialog.cpp168
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditor.pri2
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorview.cpp5
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp15
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorwidget.h5
-rw-r--r--src/plugins/qmldesigner/designercore/include/nodeinstanceview.h9
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp10
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h3
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp34
-rw-r--r--src/plugins/qmldesigner/qmldesignerplugin.cpp11
-rw-r--r--src/plugins/qmldesigner/qmldesignerplugin.qbs8
-rw-r--r--src/tools/qml2puppet/CMakeLists.txt3
-rw-r--r--src/tools/qml2puppet/qml2puppet.qbs6
31 files changed, 307 insertions, 403 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/commands/commands.pri b/share/qtcreator/qml/qmlpuppet/commands/commands.pri
index ffd1ce6dea..7985b25975 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/commands.pri
+++ b/share/qtcreator/qml/qmlpuppet/commands/commands.pri
@@ -28,7 +28,8 @@ HEADERS += $$PWD/removesharedmemorycommand.h
HEADERS += $$PWD/puppetalivecommand.h
HEADERS += $$PWD/changeselectioncommand.h
HEADERS += $$PWD/drop3dlibraryitemcommand.h
-HEADERS += $$PWD/change3dviewcommand.h
+HEADERS += $$PWD/update3dviewstatecommand.h
+HEADERS += $$PWD/enable3dviewcommand.h
SOURCES += $$PWD/synchronizecommand.cpp
SOURCES += $$PWD/debugoutputcommand.cpp
@@ -58,4 +59,5 @@ SOURCES += $$PWD/removesharedmemorycommand.cpp
SOURCES += $$PWD/puppetalivecommand.cpp
SOURCES += $$PWD/changeselectioncommand.cpp
SOURCES += $$PWD/drop3dlibraryitemcommand.cpp
-SOURCES += $$PWD/change3dviewcommand.cpp
+SOURCES += $$PWD/update3dviewstatecommand.cpp
+SOURCES += $$PWD/enable3dviewcommand.cpp
diff --git a/share/qtcreator/qml/qmlpuppet/commands/change3dviewcommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/enable3dviewcommand.cpp
index ad4832d86b..7fd3b3f350 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/change3dviewcommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/enable3dviewcommand.cpp
@@ -23,41 +23,43 @@
**
****************************************************************************/
-#include "change3dviewcommand.h"
+#include "enable3dviewcommand.h"
#include <QDebug>
+#include <QDataStream>
namespace QmlDesigner {
-Change3DViewCommand::Change3DViewCommand() = default;
-
-Change3DViewCommand::Change3DViewCommand(const QVector<InformationContainer> &informationVector)
- : m_informationVector(informationVector)
+// open / close edit view 3D command
+Enable3DViewCommand::Enable3DViewCommand(bool enable)
+ : m_enable(enable)
{
}
-QVector<InformationContainer> Change3DViewCommand::informationVector() const
+bool Enable3DViewCommand::isEnable() const
{
- return m_informationVector;
+ return m_enable;
}
-QDataStream &operator<<(QDataStream &out, const Change3DViewCommand &command)
+QDataStream &operator<<(QDataStream &out, const Enable3DViewCommand &command)
{
- out << command.informationVector();
+ out << qint32(command.isEnable());
return out;
}
-QDataStream &operator>>(QDataStream &in, Change3DViewCommand &command)
+QDataStream &operator>>(QDataStream &in, Enable3DViewCommand &command)
{
- in >> command.m_informationVector;
+ qint32 enable;
+ in >> enable;
+ command.m_enable = enable;
return in;
}
-QDebug operator <<(QDebug debug, const Change3DViewCommand &command)
+QDebug operator<<(QDebug debug, const Enable3DViewCommand &command)
{
- return debug.nospace() << "Change3DViewCommand(auxiliaryChanges: " << command.m_informationVector << ")";
+ return debug.nospace() << "Enable3DViewCommand(enable: " << command.m_enable << ")";
}
} // namespace QmlDesigner
diff --git a/share/qtcreator/qml/qmlpuppet/commands/change3dviewcommand.h b/share/qtcreator/qml/qmlpuppet/commands/enable3dviewcommand.h
index 6b1b062da0..cd9529fbb5 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/change3dviewcommand.h
+++ b/share/qtcreator/qml/qmlpuppet/commands/enable3dviewcommand.h
@@ -26,32 +26,29 @@
#pragma once
#include <QMetaType>
-#include <QVector>
-
-#include "informationcontainer.h"
namespace QmlDesigner {
-class Change3DViewCommand
+class Enable3DViewCommand
{
- friend QDataStream &operator>>(QDataStream &in, Change3DViewCommand &command);
- friend QDebug operator <<(QDebug debug, const Change3DViewCommand &command);
+ friend QDataStream &operator>>(QDataStream &in, Enable3DViewCommand &command);
+ friend QDebug operator<<(QDebug debug, const Enable3DViewCommand &command);
public:
- Change3DViewCommand();
- explicit Change3DViewCommand(const QVector<InformationContainer> &auxiliaryChangeVector);
+ explicit Enable3DViewCommand(bool enable);
+ Enable3DViewCommand() = default;
- QVector<InformationContainer> informationVector() const;
+ bool isEnable() const;
private:
- QVector<InformationContainer> m_informationVector;
+ bool m_enable = true;
};
-QDataStream &operator<<(QDataStream &out, const Change3DViewCommand &command);
-QDataStream &operator>>(QDataStream &in, Change3DViewCommand &command);
+QDataStream &operator<<(QDataStream &out, const Enable3DViewCommand &command);
+QDataStream &operator>>(QDataStream &in, Enable3DViewCommand &command);
-QDebug operator <<(QDebug debug, const Change3DViewCommand &command);
+QDebug operator<<(QDebug debug, const Enable3DViewCommand &command);
} // namespace QmlDesigner
-Q_DECLARE_METATYPE(QmlDesigner::Change3DViewCommand)
+Q_DECLARE_METATYPE(QmlDesigner::Enable3DViewCommand)
diff --git a/share/qtcreator/qml/qmlpuppet/commands/update3dviewstatecommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/update3dviewstatecommand.cpp
new file mode 100644
index 0000000000..b387cf09f3
--- /dev/null
+++ b/share/qtcreator/qml/qmlpuppet/commands/update3dviewstatecommand.cpp
@@ -0,0 +1,106 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+#include "update3dviewstatecommand.h"
+
+#include <QDebug>
+#include <QDataStream>
+
+namespace QmlDesigner {
+
+Update3dViewStateCommand::Update3dViewStateCommand(Qt::WindowStates previousStates,
+ Qt::WindowStates currentStates)
+ : m_previousStates(previousStates)
+ , m_currentStates(currentStates)
+ , m_type(Update3dViewStateCommand::StateChange)
+{
+}
+
+Update3dViewStateCommand::Update3dViewStateCommand(bool active, bool hasPopup)
+ : m_active(active)
+ , m_hasPopup(hasPopup)
+ , m_type(Update3dViewStateCommand::ActiveChange)
+{
+}
+
+Qt::WindowStates Update3dViewStateCommand::previousStates() const
+{
+ return m_previousStates;
+}
+
+Qt::WindowStates Update3dViewStateCommand::currentStates() const
+{
+ return m_currentStates;
+}
+
+bool Update3dViewStateCommand::isActive() const
+{
+ return m_active;
+}
+
+bool Update3dViewStateCommand::hasPopup() const
+{
+ return m_hasPopup;
+}
+
+Update3dViewStateCommand::Type Update3dViewStateCommand::type() const
+{
+ return m_type;
+}
+
+QDataStream &operator<<(QDataStream &out, const Update3dViewStateCommand &command)
+{
+ out << command.previousStates();
+ out << command.currentStates();
+ out << qint32(command.isActive());
+ out << qint32(command.hasPopup());
+ out << qint32(command.type());
+
+ return out;
+}
+
+QDataStream &operator>>(QDataStream &in, Update3dViewStateCommand &command)
+{
+ in >> command.m_previousStates;
+ in >> command.m_currentStates;
+ qint32 active;
+ qint32 hasPopup;
+ qint32 type;
+ in >> active;
+ in >> hasPopup;
+ in >> type;
+ command.m_active = active;
+ command.m_hasPopup = hasPopup;
+ command.m_type = Update3dViewStateCommand::Type(type);
+
+ return in;
+}
+
+QDebug operator<<(QDebug debug, const Update3dViewStateCommand &command)
+{
+ return debug.nospace() << "Update3dViewStateCommand(type: " << command.m_type << ")";
+}
+
+} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/components/formeditor/editview3dproxydialog.h b/share/qtcreator/qml/qmlpuppet/commands/update3dviewstatecommand.h
index 717deca7f9..de8511255d 100644
--- a/src/plugins/qmldesigner/components/formeditor/editview3dproxydialog.h
+++ b/share/qtcreator/qml/qmlpuppet/commands/update3dviewstatecommand.h
@@ -25,43 +25,45 @@
#pragma once
-#include "abstractcustomtool.h"
-
-#include <QObject>
-#include <QDialog>
+#include <QMetaType>
namespace QmlDesigner {
-class FormEditorView;
-class NodeInstanceView;
-
-class EditView3DProxyDialog : public QDialog
+class Update3dViewStateCommand
{
- Q_OBJECT
+ friend QDataStream &operator>>(QDataStream &in, Update3dViewStateCommand &command);
+ friend QDebug operator<<(QDebug debug, const Update3dViewStateCommand &command);
public:
- explicit EditView3DProxyDialog(FormEditorView *view);
+ enum Type { StateChange, ActiveChange, Empty };
+
+ explicit Update3dViewStateCommand(Qt::WindowStates previousStates, Qt::WindowStates currentStates);
+ explicit Update3dViewStateCommand(bool active, bool hasPopup);
+ Update3dViewStateCommand() = default;
- void invalidate();
+ Qt::WindowStates previousStates() const;
+ Qt::WindowStates currentStates() const;
-protected:
- void moveEvent(QMoveEvent *event) override;
- void closeEvent(QCloseEvent *event) override;
- void hideEvent(QHideEvent *event) override;
- void focusOutEvent(QFocusEvent *event) override;
- void focusInEvent(QFocusEvent *event) override;
- void resizeEvent(QResizeEvent *event) override;
- bool event(QEvent *event) override;
+ bool isActive() const;
+ bool hasPopup() const;
+
+ Type type() const;
private:
- QRect adjustedRect() const;
- NodeInstanceView *nodeInstanceView() const;
- void showView();
- void hideView();
+ Qt::WindowStates m_previousStates = Qt::WindowNoState;
+ Qt::WindowStates m_currentStates = Qt::WindowNoState;
- QPointer<FormEditorView> m_formEditorView;
+ bool m_active = false;
+ bool m_hasPopup = false;
+ Type m_type = Empty;
};
-} //QmlDesigner
+QDataStream &operator<<(QDataStream &out, const Update3dViewStateCommand &command);
+QDataStream &operator>>(QDataStream &in, Update3dViewStateCommand &command);
+
+QDebug operator<<(QDebug debug, const Update3dViewStateCommand &command);
+
+} // namespace QmlDesigner
+Q_DECLARE_METATYPE(QmlDesigner::Update3dViewStateCommand)
diff --git a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.cpp b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.cpp
index 93520c2f7d..d12cfe327f 100644
--- a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.cpp
+++ b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.cpp
@@ -41,7 +41,8 @@
#include "instancecontainer.h"
#include "createinstancescommand.h"
#include "createscenecommand.h"
-#include "change3dviewcommand.h"
+#include "update3dviewstatecommand.h"
+#include "enable3dviewcommand.h"
#include "changevaluescommand.h"
#include "changebindingscommand.h"
#include "changeauxiliarycommand.h"
@@ -361,9 +362,14 @@ void NodeInstanceClientProxy::createScene(const CreateSceneCommand &command)
nodeInstanceServer()->createScene(command);
}
-void NodeInstanceClientProxy::change3DView(const Change3DViewCommand &command)
+void NodeInstanceClientProxy::update3DViewState(const Update3dViewStateCommand &command)
{
- nodeInstanceServer()->change3DView(command);
+ nodeInstanceServer()->update3DViewState(command);
+}
+
+void NodeInstanceClientProxy::enable3DView(const Enable3DViewCommand &command)
+{
+ nodeInstanceServer()->enable3DView(command);
}
void NodeInstanceClientProxy::clearScene(const ClearSceneCommand &command)
@@ -453,7 +459,8 @@ void NodeInstanceClientProxy::changeSelection(const ChangeSelectionCommand &comm
void NodeInstanceClientProxy::dispatchCommand(const QVariant &command)
{
static const int createInstancesCommandType = QMetaType::type("CreateInstancesCommand");
- static const int change3DViewCommandType = QMetaType::type("Change3DViewCommand");
+ static const int update3dViewStateCommand = QMetaType::type("Update3dViewStateCommand");
+ static const int enable3DViewCommandType = QMetaType::type("Enable3DViewCommand");
static const int changeFileUrlCommandType = QMetaType::type("ChangeFileUrlCommand");
static const int createSceneCommandType = QMetaType::type("CreateSceneCommand");
static const int clearSceneCommandType = QMetaType::type("ClearSceneCommand");
@@ -477,8 +484,10 @@ void NodeInstanceClientProxy::dispatchCommand(const QVariant &command)
if (commandType == createInstancesCommandType)
createInstances(command.value<CreateInstancesCommand>());
- else if (commandType == change3DViewCommandType)
- change3DView(command.value<Change3DViewCommand>());
+ else if (commandType == update3dViewStateCommand)
+ update3DViewState(command.value<Update3dViewStateCommand>());
+ else if (commandType == enable3DViewCommandType)
+ enable3DView(command.value<Enable3DViewCommand>());
else if (commandType == changeFileUrlCommandType)
changeFileUrl(command.value<ChangeFileUrlCommand>());
else if (commandType == createSceneCommandType)
diff --git a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.h b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.h
index e9044b63ef..5a742947d2 100644
--- a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.h
+++ b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.h
@@ -45,7 +45,8 @@ class CreateSceneCommand;
class CreateInstancesCommand;
class ClearSceneCommand;
class ReparentInstancesCommand;
-class Change3DViewCommand;
+class Update3dViewStateCommand;
+class Enable3DViewCommand;
class ChangeFileUrlCommand;
class ChangeValuesCommand;
class ChangeAuxiliaryCommand;
@@ -96,7 +97,8 @@ protected:
void changeFileUrl(const ChangeFileUrlCommand &command);
void createScene(const CreateSceneCommand &command);
void clearScene(const ClearSceneCommand &command);
- void change3DView(const Change3DViewCommand &command);
+ void update3DViewState(const Update3dViewStateCommand &command);
+ void enable3DView(const Enable3DViewCommand &command);
void removeInstances(const RemoveInstancesCommand &command);
void removeProperties(const RemovePropertiesCommand &command);
void changePropertyBindings(const ChangeBindingsCommand &command);
diff --git a/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp b/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp
index 83c8c67ef7..bbd73e63ca 100644
--- a/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp
+++ b/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp
@@ -32,7 +32,8 @@
#include "instancecontainer.h"
#include "createinstancescommand.h"
#include "createscenecommand.h"
-#include "change3dviewcommand.h"
+#include "update3dviewstatecommand.h"
+#include "enable3dviewcommand.h"
#include "changevaluescommand.h"
#include "changebindingscommand.h"
#include "changeauxiliarycommand.h"
@@ -91,8 +92,11 @@ void NodeInstanceServerInterface::registerCommands()
qRegisterMetaType<CreateSceneCommand>("CreateSceneCommand");
qRegisterMetaTypeStreamOperators<CreateSceneCommand>("CreateSceneCommand");
- qRegisterMetaType<Change3DViewCommand>("Change3DViewCommand");
- qRegisterMetaTypeStreamOperators<Change3DViewCommand>("Change3DViewCommand");
+ qRegisterMetaType<Update3dViewStateCommand>("Update3dViewStateCommand");
+ qRegisterMetaTypeStreamOperators<Update3dViewStateCommand>("Update3dViewStateCommand");
+
+ qRegisterMetaType<Enable3DViewCommand>("Enable3DViewCommand");
+ qRegisterMetaTypeStreamOperators<Enable3DViewCommand>("Enable3DViewCommand");
qRegisterMetaType<ChangeBindingsCommand>("ChangeBindingsCommand");
qRegisterMetaTypeStreamOperators<ChangeBindingsCommand>("ChangeBindingsCommand");
diff --git a/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.h b/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.h
index 3dc651ef2f..e60d99b1e1 100644
--- a/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.h
+++ b/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.h
@@ -33,7 +33,8 @@ class PropertyAbstractContainer;
class PropertyBindingContainer;
class PropertyValueContainer;
-class Change3DViewCommand;
+class Update3dViewStateCommand;
+class Enable3DViewCommand;
class ChangeFileUrlCommand;
class ChangeValuesCommand;
class ChangeBindingsCommand;
@@ -67,7 +68,8 @@ public:
virtual void changeFileUrl(const ChangeFileUrlCommand &command) = 0;
virtual void createScene(const CreateSceneCommand &command) = 0;
virtual void clearScene(const ClearSceneCommand &command) = 0;
- virtual void change3DView(const Change3DViewCommand &command) = 0;
+ virtual void update3DViewState(const Update3dViewStateCommand &command) = 0;
+ virtual void enable3DView(const Enable3DViewCommand &command) = 0;
virtual void removeInstances(const RemoveInstancesCommand &command) = 0;
virtual void removeProperties(const RemovePropertiesCommand &command) = 0;
virtual void changePropertyBindings(const ChangeBindingsCommand &command) = 0;
diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml
index 9cdb74fc12..1e471d73f1 100644
--- a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml
+++ b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml
@@ -34,14 +34,10 @@ Window {
id: viewWindow
width: 1024
height: 768
- visible: false
- title: "3D"
- flags: Qt.Widget | Qt.SplashScreen
-
- onActiveChanged: {
- if (viewWindow.active)
- cameraControl.forceActiveFocus()
- }
+ visible: true
+ title: "3D Edit View"
+ // need all those flags otherwise the title bar disappears after setting WindowStaysOnTopHint flag later
+ flags: Qt.Window | Qt.WindowTitleHint | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint | Qt.WindowCloseButtonHint
property alias scene: editView.importScene
property alias showEditLight: btnEditViewLight.toggled
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
index d19c0faea4..5f277bf6bb 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
@@ -332,7 +332,11 @@ void NodeInstanceServer::clearScene(const ClearSceneCommand &/*command*/)
m_fileUrl.clear();
}
-void NodeInstanceServer::change3DView(const Change3DViewCommand &/*command*/)
+void NodeInstanceServer::update3DViewState(const Update3dViewStateCommand &/*command*/)
+{
+}
+
+void NodeInstanceServer::enable3DView(const Enable3DViewCommand &/*command*/)
{
}
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
index ba74636733..861b674af9 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
@@ -101,7 +101,8 @@ public:
void changeIds(const ChangeIdsCommand &command) override;
void createScene(const CreateSceneCommand &command) override;
void clearScene(const ClearSceneCommand &command) override;
- void change3DView(const Change3DViewCommand &command) override;
+ void update3DViewState(const Update3dViewStateCommand &command) override;
+ void enable3DView(const Enable3DViewCommand &command) override;
void removeInstances(const RemoveInstancesCommand &command) override;
void removeProperties(const RemovePropertiesCommand &command) override;
void reparentInstances(const ReparentInstancesCommand &command) override;
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
index dcaf9a7345..e65b1b4b2d 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
@@ -40,7 +40,8 @@
#include "changefileurlcommand.h"
#include "clearscenecommand.h"
#include "reparentinstancescommand.h"
-#include "change3dviewcommand.h"
+#include "update3dviewstatecommand.h"
+#include "enable3dviewcommand.h"
#include "changevaluescommand.h"
#include "changebindingscommand.h"
#include "changeidscommand.h"
@@ -59,7 +60,7 @@
#include "tokencommand.h"
#include "removesharedmemorycommand.h"
#include "objectnodeinstance.h"
-#include <drop3dlibraryitemcommand.h>
+#include "drop3dlibraryitemcommand.h"
#include "dummycontextobject.h"
#include "../editor3d/generalhelper.h"
@@ -119,7 +120,7 @@ QObject *Qt5InformationNodeInstanceServer::createEditView3D(QQmlEngine *engine)
QWindow *window = qobject_cast<QWindow *>(component.create());
if (!window) {
- qWarning() << "Could not create edit view" << component.errors();
+ qWarning() << "Could not create edit view 3D: " << component.errors();
return nullptr;
}
@@ -130,8 +131,6 @@ QObject *Qt5InformationNodeInstanceServer::createEditView3D(QQmlEngine *engine)
this, SLOT(handleObjectPropertyCommit(QVariant, QVariant)));
QObject::connect(window, SIGNAL(changeObjectProperty(QVariant, QVariant)),
this, SLOT(handleObjectPropertyChange(QVariant, QVariant)));
- QObject::connect(window, SIGNAL(activeChanged()),
- this, SLOT(handleActiveChanged()));
QObject::connect(&m_propertyChangeTimer, &QTimer::timeout,
this, &Qt5InformationNodeInstanceServer::handleObjectPropertyChangeTimeout);
QObject::connect(&m_selectionChangeTimer, &QTimer::timeout,
@@ -150,7 +149,7 @@ QObject *Qt5InformationNodeInstanceServer::createEditView3D(QQmlEngine *engine)
return window;
}
-// The selection has changed in the 3D edit view. Empty list indicates selection is cleared.
+// The selection has changed in the edit view 3D. Empty list indicates selection is cleared.
void Qt5InformationNodeInstanceServer::handleSelectionChanged(const QVariant &objs)
{
QList<ServerNodeInstance> instanceList;
@@ -231,65 +230,6 @@ void Qt5InformationNodeInstanceServer::modifyVariantValue(
}
}
-void Qt5InformationNodeInstanceServer::showEditView(const QPoint &pos, const QSize &size)
-{
- m_blockViewActivate = false;
- auto window = qobject_cast<QWindow *>(m_editView3D);
- if (window) {
- activateEditView();
- window->setPosition(pos);
- window->resize(size);
- }
-}
-
-void Qt5InformationNodeInstanceServer::hideEditView()
-{
- m_blockViewActivate = true;
- auto window = qobject_cast<QWindow *>(m_editView3D);
- if (window)
- window->hide();
-}
-
-void Qt5InformationNodeInstanceServer::activateEditView()
-{
- auto window = qobject_cast<QWindow *>(m_editView3D);
- if (window) {
- Qt::WindowFlags flags = window->flags();
-
-#ifdef Q_OS_MACOS
- window->setFlags(Qt::Popup);
- window->show();
- window->setFlags(flags);
-#else
- window->raise();
- window->setFlags(flags | Qt::WindowStaysOnTopHint);
- window->show();
-
- window->requestActivate();
- window->raise();
- window->setFlags(flags);
-#endif
- }
-}
-
-void Qt5InformationNodeInstanceServer::moveEditView(const QPoint &pos)
-{
- auto window = qobject_cast<QWindow*>(m_editView3D);
- if (window) {
- activateEditView();
- window->setPosition(pos);
- }
-}
-
-void Qt5InformationNodeInstanceServer::resizeEditView(const QSize &size)
-{
- auto window = qobject_cast<QWindow *>(m_editView3D);
- if (window) {
- activateEditView();
- window->resize(size);
- }
-}
-
void Qt5InformationNodeInstanceServer::handleObjectPropertyCommit(const QVariant &object,
const QVariant &propName)
{
@@ -324,14 +264,6 @@ void Qt5InformationNodeInstanceServer::updateViewPortRect()
viewPortProperty.write(viewPortrect);
}
-void Qt5InformationNodeInstanceServer::handleActiveChanged()
-{
- if (m_blockViewActivate)
- return;
-
- activateEditView();
-}
-
Qt5InformationNodeInstanceServer::Qt5InformationNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) :
Qt5NodeInstanceServer(nodeInstanceClient)
{
@@ -759,17 +691,36 @@ void Qt5InformationNodeInstanceServer::changePropertyValues(const ChangeValuesCo
startRenderTimer();
}
-void Qt5InformationNodeInstanceServer::change3DView(const Change3DViewCommand &command)
+// update 3D view window state when the main app window state change
+void Qt5InformationNodeInstanceServer::update3DViewState(const Update3dViewStateCommand &command)
+{
+ auto window = qobject_cast<QWindow *>(m_editView3D);
+ if (window) {
+ if (command.type() == Update3dViewStateCommand::StateChange) {
+ if (command.previousStates() & Qt::WindowMinimized) // main window expanded from minimize state
+ window->show();
+ else if (command.currentStates() & Qt::WindowMinimized) // main window minimized
+ window->hide();
+ } else if (command.type() == Update3dViewStateCommand::ActiveChange) {
+ window->setFlag(Qt::WindowStaysOnTopHint, command.isActive());
+
+ // main window has a popup open, lower the edit view 3D so that the pop up is visible
+ if (command.hasPopup())
+ window->lower();
+ }
+ }
+}
+
+void Qt5InformationNodeInstanceServer::enable3DView(const Enable3DViewCommand &command)
{
- for (const InformationContainer &container : command.informationVector()) {
- if (container.name() == InformationName::ShowView)
- showEditView(container.information().toPoint(), container.secondInformation().toSize());
- else if (container.name() == InformationName::HideView)
- hideEditView();
- else if (container.name() == InformationName::MoveView)
- moveEditView(container.information().toPoint());
- else if (container.name() == InformationName::ResizeView)
- resizeEditView(container.secondInformation().toSize());
+ // TODO: this method is not currently in use as the 3D view is currently enabled by resetting the puppet.
+ // It should however be implemented here.
+
+ auto window = qobject_cast<QWindow *>(m_editView3D);
+ if (window && !command.isEnable()) {
+ // TODO: remove the 3D view
+ } else if (!window && command.isEnable()) {
+ // TODO: create the 3D view
}
}
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h
index 0ac073655b..079b811c05 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h
@@ -38,12 +38,14 @@ namespace QmlDesigner {
class Qt5InformationNodeInstanceServer : public Qt5NodeInstanceServer
{
Q_OBJECT
+
public:
explicit Qt5InformationNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient);
void reparentInstances(const ReparentInstancesCommand &command) override;
void clearScene(const ClearSceneCommand &command) override;
- void change3DView(const Change3DViewCommand &command) override;
+ void update3DViewState(const Update3dViewStateCommand &command) override;
+ void enable3DView(const Enable3DViewCommand &command) override;
void createScene(const CreateSceneCommand &command) override;
void completeComponent(const CompleteComponentCommand &command) override;
void token(const TokenCommand &command) override;
@@ -56,7 +58,6 @@ private slots:
void handleObjectPropertyCommit(const QVariant &object, const QVariant &propName);
void handleObjectPropertyChange(const QVariant &object, const QVariant &propName);
void updateViewPortRect();
- void handleActiveChanged();
protected:
void collectItemChangesAndSendChangeCommands() override;
@@ -84,12 +85,6 @@ private:
const PropertyName &propertyName,
ValuesModifiedCommand::TransactionOption option);
- void showEditView(const QPoint &pos, const QSize &size);
- void hideEditView();
- void activateEditView();
- void moveEditView(const QPoint &pos);
- void resizeEditView(const QSize &size);
-
QObject *m_editView3D = nullptr;
QSet<ServerNodeInstance> m_parentChangedSet;
QList<ServerNodeInstance> m_completedComponentList;
@@ -99,7 +94,6 @@ private:
QVariant m_changedNode;
PropertyName m_changedProperty;
ServerNodeInstance m_viewPortInstance;
- bool m_blockViewActivate = false;
QObject *m_rootNode = nullptr;
ChangeSelectionCommand m_pendingSelectionChangeCommand;
};
diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h
index b338839110..783f890599 100644
--- a/src/plugins/coreplugin/icore.h
+++ b/src/plugins/coreplugin/icore.h
@@ -164,6 +164,8 @@ signals:
void coreAboutToClose();
void contextAboutToChange(const QList<Core::IContext *> &context);
void contextChanged(const Core::Context &context);
+ void windowStateChanged(Qt::WindowStates previousStates, Qt::WindowStates currentStates);
+ void windowActivationChanged(bool isActive, bool hasPopup);
public:
/* internal use */
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 94e5aa78fe..da53dd7528 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -201,6 +201,19 @@ MainWindow::MainWindow()
this, &MainWindow::openDroppedFiles);
}
+// Edit View 3D needs to know when the main windows's state or activation change
+void MainWindow::changeEvent(QEvent *event)
+{
+ if (event->type() == QEvent::WindowStateChange) {
+ emit m_coreImpl->windowStateChanged(m_previousWindowStates, windowState());
+ m_previousWindowStates = windowState();
+ } else if (event->type() == QEvent::ActivationChange) {
+ auto lastChild = qobject_cast<QWidget *>(children().last());
+ bool hasPopup = lastChild && lastChild->isActiveWindow();
+ emit m_coreImpl->windowActivationChanged(isActiveWindow(), hasPopup);
+ }
+}
+
NavigationWidget *MainWindow::navigationWidget(Side side) const
{
return side == Side::Left ? m_leftNavigationWidget : m_rightNavigationWidget;
diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h
index 26dc607cbe..a3a537b231 100644
--- a/src/plugins/coreplugin/mainwindow.h
+++ b/src/plugins/coreplugin/mainwindow.h
@@ -114,6 +114,7 @@ public slots:
protected:
void closeEvent(QCloseEvent *event) override;
+ void changeEvent(QEvent *event) override;
private:
void openFile();
@@ -192,6 +193,7 @@ private:
QToolButton *m_toggleRightSideBarButton = nullptr;
QColor m_overrideColor;
QList<std::function<bool()>> m_preCloseListeners;
+ Qt::WindowStates m_previousWindowStates = Qt::WindowNoState;
};
} // namespace Internal
diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt
index 1685aeaa79..6d3bca379c 100644
--- a/src/plugins/qmldesigner/CMakeLists.txt
+++ b/src/plugins/qmldesigner/CMakeLists.txt
@@ -140,7 +140,8 @@ extend_qtc_plugin(QmlDesigner
valueschangedcommand.cpp valueschangedcommand.h
changeselectioncommand.cpp changeselectioncommand.h
drop3dlibraryitemcommand.cpp drop3dlibraryitemcommand.h
- change3dviewcommand.cpp change3dviewcommand.h
+ update3dviewstatecommand.cpp update3dviewstatecommand.h
+ enable3dviewcommand.cpp enable3dviewcommand.h
)
extend_qtc_plugin(QmlDesigner
@@ -235,7 +236,6 @@ extend_qtc_plugin(QmlDesigner
snappinglinecreator.cpp snappinglinecreator.h
toolbox.cpp toolbox.h
option3daction.cpp option3daction.h
- editview3dproxydialog.cpp editview3dproxydialog.h
)
extend_qtc_plugin(QmlDesigner
diff --git a/src/plugins/qmldesigner/components/formeditor/editview3dproxydialog.cpp b/src/plugins/qmldesigner/components/formeditor/editview3dproxydialog.cpp
deleted file mode 100644
index 505eeacd1f..0000000000
--- a/src/plugins/qmldesigner/components/formeditor/editview3dproxydialog.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "editview3dproxydialog.h"
-#include "formeditorview.h"
-
-#include <nodeinstanceview.h>
-
-#include <coreplugin/icore.h>
-
-#include <utils/hostosinfo.h>
-
-#include <QApplication>
-#include <QMouseEvent>
-#include <QStyle>
-#include <QWindow>
-
-namespace QmlDesigner {
-
-const int borderOffset = 8;
-
-static int titleBarHeight() {
- return QApplication::style()->pixelMetric(QStyle::PM_TitleBarHeight);
-}
-
-EditView3DProxyDialog::EditView3DProxyDialog(FormEditorView *view) :
- QDialog(Core::ICore::dialogParent())
- ,m_formEditorView(view)
-{
- setFocusPolicy(Qt::ClickFocus);
- setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
-
- if (Utils::HostOsInfo::isMacHost()) {
- setWindowFlag(Qt::Tool);
- setAttribute(Qt::WA_MacAlwaysShowToolWindow);
- }
-
- resize(1024, 768);
-}
-
-void EditView3DProxyDialog::invalidate()
-{
- if (nodeInstanceView() && isVisible())
- nodeInstanceView()->show3DView(adjustedRect());
-}
-
-void EditView3DProxyDialog::moveEvent(QMoveEvent *event)
-{
- if (nodeInstanceView())
- nodeInstanceView()->move3DView(pos() + QPoint(borderOffset, titleBarHeight() + 2 * borderOffset));
-
- QDialog::moveEvent(event);
-}
-
-void EditView3DProxyDialog::closeEvent(QCloseEvent *event)
-{
- if (m_formEditorView) {
- m_formEditorView->toggle3DViewEnabled(false);
- m_formEditorView->setupOption3DAction();
- }
-
- nodeInstanceView()->hide3DView();
-
- QDialog::closeEvent(event);
-}
-
-void EditView3DProxyDialog::hideEvent(QHideEvent *event)
-{
- if (m_formEditorView) {
- m_formEditorView->toggle3DViewEnabled(false);
- m_formEditorView->setupOption3DAction();
- }
-
- nodeInstanceView()->hide3DView();
-
- QDialog::hideEvent(event);
-}
-
-void EditView3DProxyDialog::focusOutEvent(QFocusEvent *event)
-{
- if (isVisible())
- showView();
-
- QDialog::focusOutEvent(event);
-}
-
-void EditView3DProxyDialog::focusInEvent(QFocusEvent *event)
-{
- showView();
-
- QDialog::focusInEvent(event);
-}
-
-void EditView3DProxyDialog::resizeEvent(QResizeEvent *event)
-{
- if (nodeInstanceView())
- nodeInstanceView()->show3DView(adjustedRect());
-
- QDialog::resizeEvent(event);
-}
-
-bool EditView3DProxyDialog::event(QEvent *event)
-{
- if (event->type() == QEvent::WindowActivate) {
- showView();
- } else if (event->type() == QEvent::NonClientAreaMouseButtonPress) {
- auto mouseMoveEvent = static_cast<QMouseEvent *>(event);
- if (mouseMoveEvent->buttons() & Qt::LeftButton)
- hideView();
- } else if (event->type() == QEvent::NonClientAreaMouseButtonRelease) {
- auto mouseMoveEvent = static_cast<QMouseEvent *>(event);
- if (mouseMoveEvent->buttons() & Qt::LeftButton)
- showView();
- }
-
- return QDialog::event(event);
-}
-
-QRect EditView3DProxyDialog::adjustedRect() const
-{
- return QRect(pos(), size()).adjusted(borderOffset,
- titleBarHeight() + 2 * borderOffset,
- -borderOffset, titleBarHeight());
-}
-
-NodeInstanceView *EditView3DProxyDialog::nodeInstanceView() const
-{
- if (m_formEditorView)
- return m_formEditorView->nodeInstanceView();
-
- return nullptr;
-}
-
-void EditView3DProxyDialog::showView()
-{
- if (nodeInstanceView())
- nodeInstanceView()->show3DView(adjustedRect());
-}
-
-void EditView3DProxyDialog::hideView()
-{
- if (nodeInstanceView())
- nodeInstanceView()->hide3DView();
-}
-
-} //QmlDesigner
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditor.pri b/src/plugins/qmldesigner/components/formeditor/formeditor.pri
index 15de28f504..5bff19e664 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditor.pri
+++ b/src/plugins/qmldesigner/components/formeditor/formeditor.pri
@@ -1,6 +1,5 @@
VPATH += $$PWD
SOURCES += formeditoritem.cpp \
- editview3dproxydialog.cpp \
formeditorview.cpp \
formeditorscene.cpp \
formeditorwidget.cpp \
@@ -41,7 +40,6 @@ SOURCES += formeditoritem.cpp \
option3daction.cpp
HEADERS += formeditorscene.h \
- editview3dproxydialog.h \
formeditorwidget.h \
formeditoritem.h \
formeditorview.h \
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
index 90707a5887..ee7b3f18a9 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
@@ -24,6 +24,7 @@
****************************************************************************/
#include "formeditorview.h"
+#include "nodeinstanceview.h"
#include "selectiontool.h"
#include "movetool.h"
#include "option3daction.h"
@@ -475,8 +476,6 @@ void FormEditorView::instancesCompleted(const QVector<ModelNode> &completedNodeL
itemNodeList.append(item);
}
}
- if (node.isRootNode())
- formEditorWidget()->invalidate3DEditor();
}
currentTool()->instancesCompleted(itemNodeList);
}
@@ -598,7 +597,7 @@ void FormEditorView::toggle3DViewEnabled(bool enabled)
else
rootModelNode().setAuxiliaryData("3d-view", false);
- formEditorWidget()->set3dEditorVisibility(enabled);
+ nodeInstanceView()->enable3DView(enabled);
}
QmlItemNode findRecursiveQmlItemNode(const QmlObjectNode &firstQmlObjectNode)
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
index fdad23a880..f5970dc0e0 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
@@ -24,7 +24,6 @@
****************************************************************************/
#include "designeractionmanager.h"
-#include "editview3dproxydialog.h"
#include "formeditorwidget.h"
#include "formeditorscene.h"
#include "qmldesignerplugin.h"
@@ -174,14 +173,11 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view) :
fillLayout->addWidget(m_graphicsView.data());
m_graphicsView.data()->setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(Utils::FileReader::fetchQrc(QLatin1String(":/qmldesigner/scrollbar.css")))));
-
- m_editView3DProxyDialog = new EditView3DProxyDialog(view);
}
void FormEditorWidget::changeTransformTool(bool checked)
{
if (checked)
-
m_formEditorView->changeToTransformTools();
}
@@ -397,17 +393,6 @@ FormEditorGraphicsView *FormEditorWidget::graphicsView() const
return m_graphicsView;
}
-void FormEditorWidget::set3dEditorVisibility(bool b)
-{
- m_editView3DProxyDialog->setVisible(b);
-}
-
-void FormEditorWidget::invalidate3DEditor()
-{
- if (m_editView3DProxyDialog)
- m_editView3DProxyDialog->invalidate();
-}
-
DocumentWarningWidget *FormEditorWidget::errorWidget()
{
if (m_documentErrorWidget.isNull()) {
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
index d1c5588528..f7e0d8a92d 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
@@ -37,7 +37,6 @@ QT_END_NAMESPACE
namespace QmlDesigner {
-class EditView3DProxyDialog;
class ZoomAction;
class LineEditAction;
class BackgroundAction;
@@ -87,9 +86,6 @@ public:
FormEditorGraphicsView *graphicsView() const;
- void set3dEditorVisibility(bool b);
- void invalidate3DEditor();
-
protected:
void wheelEvent(QWheelEvent *event) override;
QActionGroup *toolActionGroup() const;
@@ -120,7 +116,6 @@ private:
QPointer<Option3DAction> m_option3DAction;
QPointer<QAction> m_resetAction;
QPointer<DocumentWarningWidget> m_documentErrorWidget;
- QPointer<EditView3DProxyDialog> m_editView3DProxyDialog;
};
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
index a6de5fd6c6..f6b705acc3 100644
--- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
+++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
@@ -59,7 +59,6 @@ class CreateSceneCommand;
class CreateInstancesCommand;
class ClearSceneCommand;
class ReparentInstancesCommand;
-class Change3DViewCommand;
class ChangeFileUrlCommand;
class ChangeValuesCommand;
class ChangeBindingsCommand;
@@ -143,15 +142,14 @@ public:
void selectedNodesChanged(const QList<ModelNode> &selectedNodeList,
const QList<ModelNode> &lastSelectedNodeList) override;
- void show3DView(const QRect &rect);
- void move3DView(const QPoint &position);
- void hide3DView();
+ void mainWindowStateChanged(Qt::WindowStates previousStates, Qt::WindowStates currentStates);
+ void mainWindowActiveChanged(bool active, bool hasPopup);
+ void enable3DView(bool enable);
protected:
void timerEvent(QTimerEvent *event) override;
private: // functions
- enum ViewAction { Show, Move, Hide };
void activateState(const NodeInstance &instance);
void activateBaseState();
@@ -176,7 +174,6 @@ private: // functions
CreateSceneCommand createCreateSceneCommand();
- Change3DViewCommand createChange3DViewCommand(ViewAction action, const QPoint &pos = {}, const QSize &size = {}) const;
ClearSceneCommand createClearSceneCommand() const;
CreateInstancesCommand createCreateInstancesCommand(const QList<NodeInstance> &instanceList) const;
CompleteComponentCommand createComponentCompleteCommand(const QList<NodeInstance> &instanceList) const;
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp
index 39de64f9ae..d979e3dd32 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp
@@ -29,7 +29,8 @@
#include <createinstancescommand.h>
#include <createscenecommand.h>
-#include <change3dviewcommand.h>
+#include <update3dviewstatecommand.h>
+#include <enable3dviewcommand.h>
#include <changevaluescommand.h>
#include <changebindingscommand.h>
#include <changeauxiliarycommand.h>
@@ -652,7 +653,12 @@ void NodeInstanceServerProxy::clearScene(const ClearSceneCommand &command)
writeCommand(QVariant::fromValue(command));
}
-void NodeInstanceServerProxy::change3DView(const Change3DViewCommand &command)
+void NodeInstanceServerProxy::update3DViewState(const Update3dViewStateCommand &command)
+{
+ writeCommand(QVariant::fromValue(command));
+}
+
+void NodeInstanceServerProxy::enable3DView(const Enable3DViewCommand &command)
{
writeCommand(QVariant::fromValue(command));
}
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h
index 62c361dbd1..25dd7bec1f 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h
@@ -69,7 +69,8 @@ public:
void createInstances(const CreateInstancesCommand &command) override;
void changeFileUrl(const ChangeFileUrlCommand &command) override;
void createScene(const CreateSceneCommand &command) override;
- void change3DView(const Change3DViewCommand &command) override;
+ void update3DViewState(const Update3dViewStateCommand &command) override;
+ void enable3DView(const Enable3DViewCommand &command) override;
void clearScene(const ClearSceneCommand &command) override;
void removeInstances(const RemoveInstancesCommand &command) override;
void changeSelection(const ChangeSelectionCommand &command) override;
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
index 9aa8d2f41c..9528328754 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
@@ -48,7 +48,8 @@
#include "clearscenecommand.h"
#include "changefileurlcommand.h"
#include "reparentinstancescommand.h"
-#include "change3dviewcommand.h"
+#include "update3dviewstatecommand.h"
+#include "enable3dviewcommand.h"
#include "changevaluescommand.h"
#include "changeauxiliarycommand.h"
#include "changebindingscommand.h"
@@ -979,20 +980,6 @@ ClearSceneCommand NodeInstanceView::createClearSceneCommand() const
return {};
}
-Change3DViewCommand NodeInstanceView::createChange3DViewCommand(ViewAction action, const QPoint &pos, const QSize &size) const
-{
- InformationName informationName = InformationName::ShowView;
-
- if (action == ViewAction::Move)
- informationName = InformationName::MoveView;
- else if (action == ViewAction::Hide)
- informationName = InformationName::HideView;
-
- const qint32 instanceId = 0;
-
- return Change3DViewCommand({ InformationContainer(instanceId, informationName, pos, size) });
-}
-
CompleteComponentCommand NodeInstanceView::createComponentCompleteCommand(const QList<NodeInstance> &instanceList) const
{
QVector<qint32> containerList;
@@ -1473,21 +1460,22 @@ void NodeInstanceView::selectedNodesChanged(const QList<ModelNode> &selectedNode
nodeInstanceServer()->changeSelection(createChangeSelectionCommand(selectedNodeList));
}
-void NodeInstanceView::move3DView(const QPoint &position)
+void NodeInstanceView::mainWindowStateChanged(Qt::WindowStates previousStates, Qt::WindowStates currentStates)
{
- nodeInstanceServer()->change3DView(createChange3DViewCommand(ViewAction::Move, position));
+ if (nodeInstanceServer())
+ nodeInstanceServer()->update3DViewState(Update3dViewStateCommand(previousStates, currentStates));
}
-void NodeInstanceView::hide3DView()
+void NodeInstanceView::mainWindowActiveChanged(bool active, bool hasPopup)
{
- nodeInstanceServer()->change3DView(createChange3DViewCommand(ViewAction::Hide));
+ if (nodeInstanceServer())
+ nodeInstanceServer()->update3DViewState(Update3dViewStateCommand(active, hasPopup));
}
-void NodeInstanceView::show3DView(const QRect &rect)
+// enable / disable 3D edit View
+void NodeInstanceView::enable3DView(bool enable)
{
- nodeInstanceServer()->change3DView(createChange3DViewCommand(ViewAction::Show,
- rect.topLeft(),
- rect.size()));
+ nodeInstanceServer()->enable3DView(Enable3DViewCommand(enable));
}
void NodeInstanceView::timerEvent(QTimerEvent *event)
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp
index 928c19b02c..0fb5f19f2b 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.cpp
+++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp
@@ -31,6 +31,7 @@
#include "designmodecontext.h"
#include "openuiqmlfiledialog.h"
#include "generateresource.h"
+#include "nodeinstanceview.h"
#include <metainfo.h>
#include <connectionview.h>
@@ -249,6 +250,16 @@ void QmlDesignerPlugin::extensionsInitialized()
connect(Core::ICore::instance(), &Core::ICore::coreAboutToOpen, this, [this] {
integrateIntoQtCreator(&d->mainWidget);
});
+
+ connect(Core::ICore::instance(), &Core::ICore::windowStateChanged, this,
+ [this] (Qt::WindowStates previousStates, Qt::WindowStates currentStates) {
+ d->viewManager.nodeInstanceView()->mainWindowStateChanged(previousStates, currentStates);
+ });
+
+ connect(Core::ICore::instance(), &Core::ICore::windowActivationChanged, this,
+ [this] (bool isActive, bool hasPopup) {
+ d->viewManager.nodeInstanceView()->mainWindowActiveChanged(isActive, hasPopup);
+ });
}
static QStringList allUiQmlFilesforCurrentProject(const Utils::FilePath &fileName)
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs
index 7047ffa1b8..1ef8407d8e 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.qbs
+++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs
@@ -171,8 +171,10 @@ Project {
"commands/changeselectioncommand.h",
"commands/drop3dlibraryitemcommand.cpp",
"commands/drop3dlibraryitemcommand.h",
- "commands/change3dviewcommand.cpp",
- "commands/change3dviewcommand.h",
+ "commands/update3dviewstatecommand.cpp",
+ "commands/update3dviewstatecommand.h",
+ "commands/enable3dviewcommand.cpp",
+ "commands/enable3dviewcommand.h",
"container/addimportcontainer.cpp",
"container/addimportcontainer.h",
"container/idcontainer.cpp",
@@ -454,8 +456,6 @@ Project {
"formeditor/controlelement.h",
"formeditor/dragtool.cpp",
"formeditor/dragtool.h",
- "formeditor/editview3dproxydialog.cpp",
- "formeditor/editview3dproxydialog.h",
"formeditor/formeditor.qrc",
"formeditor/formeditorgraphicsview.cpp",
"formeditor/formeditorgraphicsview.h",
diff --git a/src/tools/qml2puppet/CMakeLists.txt b/src/tools/qml2puppet/CMakeLists.txt
index ea449b4010..eb9abeda16 100644
--- a/src/tools/qml2puppet/CMakeLists.txt
+++ b/src/tools/qml2puppet/CMakeLists.txt
@@ -46,7 +46,8 @@ extend_qtc_executable(qml2puppet
tokencommand.cpp tokencommand.h
changeselectioncommand.cpp changeselectioncommand.h
drop3dlibraryitemcommand.cpp drop3dlibraryitemcommand.h
- change3dviewcommand.cpp change3dviewcommand.h
+ update3dviewstatecommand.cpp update3dviewstatecommand.h
+ enable3dviewcommand.cpp enable3dviewcommand.h
valueschangedcommand.cpp
)
diff --git a/src/tools/qml2puppet/qml2puppet.qbs b/src/tools/qml2puppet/qml2puppet.qbs
index 4071978749..fb73413038 100644
--- a/src/tools/qml2puppet/qml2puppet.qbs
+++ b/src/tools/qml2puppet/qml2puppet.qbs
@@ -97,8 +97,10 @@ QtcTool {
"commands/changeselectioncommand.h",
"commands/drop3dlibraryitemcommand.cpp",
"commands/drop3dlibraryitemcommand.h",
- "commands/change3dviewcommand.cpp",
- "commands/change3dviewcommand.h",
+ "commands/update3dviewstatecommand.cpp",
+ "commands/update3dviewstatecommand.h",
+ "commands/enable3dviewcommand.cpp",
+ "commands/enable3dviewcommand.h",
"container/addimportcontainer.cpp",
"container/addimportcontainer.h",
"container/idcontainer.cpp",