forked from qt-creator/qt-creator
QmlDesigner: Fix custom notifications to hidden views
Hidden views are detached, so custom notifications to those views don't get handled, which in many cases leads to desired outcome not happening. Fixing most cases by simply forcing the handling view visible before emitting custom notification. Fixes: QDS-13349 Change-Id: I65842ac429bcdb1caa4b1f60d4f4fdb4a48f8742 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
@@ -75,6 +75,13 @@ Item {
|
|||||||
root.numColumns = numColumns
|
root.numColumns = numColumns
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: ContentLibraryBackend.rootView
|
||||||
|
function onRequestTab(tabIndex) {
|
||||||
|
tabBar.currIndex = tabIndex
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
id: col
|
id: col
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include <designeractionmanager.h>
|
#include <designeractionmanager.h>
|
||||||
#include <designerpaths.h>
|
#include <designerpaths.h>
|
||||||
|
#include <designmodewidget.h>
|
||||||
#include <hdrimage.h>
|
#include <hdrimage.h>
|
||||||
#include <import.h>
|
#include <import.h>
|
||||||
#include <modelnodeoperations.h>
|
#include <modelnodeoperations.h>
|
||||||
@@ -662,6 +663,7 @@ void AssetsLibraryWidget::addResources(const QStringList &files, bool showDialog
|
|||||||
|
|
||||||
void AssetsLibraryWidget::addAssetsToContentLibrary(const QStringList &assetPaths)
|
void AssetsLibraryWidget::addAssetsToContentLibrary(const QStringList &assetPaths)
|
||||||
{
|
{
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary");
|
||||||
m_assetsView->emitCustomNotification("add_assets_to_content_lib", {}, {assetPaths});
|
m_assetsView->emitCustomNotification("add_assets_to_content_lib", {}, {assetPaths});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
#include "designeractionmanagerview.h"
|
#include "designeractionmanagerview.h"
|
||||||
#include "designericons.h"
|
#include "designericons.h"
|
||||||
#include "designermcumanager.h"
|
#include "designermcumanager.h"
|
||||||
|
#include "designmodewidget.h"
|
||||||
#include "formatoperation.h"
|
#include "formatoperation.h"
|
||||||
#include "groupitemaction.h"
|
#include "groupitemaction.h"
|
||||||
#include "modelnodecontextmenu_helper.h"
|
#include "modelnodecontextmenu_helper.h"
|
||||||
@@ -730,6 +731,7 @@ public:
|
|||||||
(propertyName + "OpenEditorId").toLatin1(),
|
(propertyName + "OpenEditorId").toLatin1(),
|
||||||
QString(QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Edit the Connection")),
|
QString(QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Edit the Connection")),
|
||||||
[=](const SelectionContext &) {
|
[=](const SelectionContext &) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ConnectionView");
|
||||||
signalHandler.view()
|
signalHandler.view()
|
||||||
->emitCustomNotification(EditConnectionNotification,
|
->emitCustomNotification(EditConnectionNotification,
|
||||||
{signalHandler.parentModelNode()},
|
{signalHandler.parentModelNode()},
|
||||||
@@ -811,6 +813,7 @@ public:
|
|||||||
(signalStr + "OpenEditorId").toLatin1(),
|
(signalStr + "OpenEditorId").toLatin1(),
|
||||||
QString(QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Add new Connection")),
|
QString(QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Add new Connection")),
|
||||||
[=](const SelectionContext &) {
|
[=](const SelectionContext &) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ConnectionView");
|
||||||
currentNode.view()->emitCustomNotification(AddConnectionNotification,
|
currentNode.view()->emitCustomNotification(AddConnectionNotification,
|
||||||
{currentNode},
|
{currentNode},
|
||||||
{signalStr});
|
{signalStr});
|
||||||
|
@@ -801,17 +801,20 @@ void moveToComponent(const SelectionContext &selectionContext)
|
|||||||
void add3DAssetToContentLibrary(const SelectionContext &selectionContext)
|
void add3DAssetToContentLibrary(const SelectionContext &selectionContext)
|
||||||
{
|
{
|
||||||
ModelNode node = selectionContext.currentSingleSelectedNode();
|
ModelNode node = selectionContext.currentSingleSelectedNode();
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary");
|
||||||
selectionContext.view()->emitCustomNotification("add_3d_to_content_lib", {node});
|
selectionContext.view()->emitCustomNotification("add_3d_to_content_lib", {node});
|
||||||
}
|
}
|
||||||
|
|
||||||
void importComponent(const SelectionContext &selectionContext)
|
void importComponent(const SelectionContext &selectionContext)
|
||||||
{
|
{
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary");
|
||||||
selectionContext.view()->emitCustomNotification("import_bundle_to_project");
|
selectionContext.view()->emitCustomNotification("import_bundle_to_project");
|
||||||
}
|
}
|
||||||
|
|
||||||
void exportComponent(const SelectionContext &selectionContext)
|
void exportComponent(const SelectionContext &selectionContext)
|
||||||
{
|
{
|
||||||
ModelNode node = selectionContext.currentSingleSelectedNode();
|
ModelNode node = selectionContext.currentSingleSelectedNode();
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary");
|
||||||
selectionContext.view()->emitCustomNotification("export_item_as_bundle", {node});
|
selectionContext.view()->emitCustomNotification("export_item_as_bundle", {node});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -857,7 +860,8 @@ void editMaterial(const SelectionContext &selectionContext)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (material.isValid()) {
|
if (material.isValid()) {
|
||||||
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialEditor");
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser");
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialEditor", true);
|
||||||
|
|
||||||
// to MaterialBrowser...
|
// to MaterialBrowser...
|
||||||
view->emitCustomNotification("select_material", {material});
|
view->emitCustomNotification("select_material", {material});
|
||||||
@@ -1676,6 +1680,7 @@ void openSignalDialog(const SelectionContext &selectionContext)
|
|||||||
void updateImported3DAsset(const SelectionContext &selectionContext)
|
void updateImported3DAsset(const SelectionContext &selectionContext)
|
||||||
{
|
{
|
||||||
if (selectionContext.view()) {
|
if (selectionContext.view()) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("Components");
|
||||||
selectionContext.view()->emitCustomNotification(
|
selectionContext.view()->emitCustomNotification(
|
||||||
"UpdateImported3DAsset", {selectionContext.currentSingleSelectedNode()});
|
"UpdateImported3DAsset", {selectionContext.currentSingleSelectedNode()});
|
||||||
}
|
}
|
||||||
@@ -2016,6 +2021,7 @@ bool dropAsImage3dTexture(const ModelNode &targetNode,
|
|||||||
QTimer::singleShot(0, view, [targetNode, imagePath, view]() {
|
QTimer::singleShot(0, view, [targetNode, imagePath, view]() {
|
||||||
if (view && targetNode.isValid()) {
|
if (view && targetNode.isValid()) {
|
||||||
// To MaterialBrowserView. Done async to avoid custom notification in transaction
|
// To MaterialBrowserView. Done async to avoid custom notification in transaction
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser");
|
||||||
view->emitCustomNotification("apply_asset_to_model3D",
|
view->emitCustomNotification("apply_asset_to_model3D",
|
||||||
{targetNode},
|
{targetNode},
|
||||||
{DocumentManager::currentFilePath()
|
{DocumentManager::currentFilePath()
|
||||||
@@ -2069,6 +2075,7 @@ void handleTextureDrop(const QMimeData *mimeData, const ModelNode &targetModelNo
|
|||||||
QTC_ASSERT(texNode.isValid(), return );
|
QTC_ASSERT(texNode.isValid(), return );
|
||||||
|
|
||||||
if (targetNode.modelNode().metaInfo().isQtQuick3DModel()) {
|
if (targetNode.modelNode().metaInfo().isQtQuick3DModel()) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser");
|
||||||
view->emitCustomNotification("apply_texture_to_model3D", {targetNode, texNode});
|
view->emitCustomNotification("apply_texture_to_model3D", {targetNode, texNode});
|
||||||
} else {
|
} else {
|
||||||
auto *dialog = ChooseFromPropertyListDialog::createIfNeeded(targetNode,
|
auto *dialog = ChooseFromPropertyListDialog::createIfNeeded(targetNode,
|
||||||
|
@@ -119,10 +119,9 @@ ViewManager::ViewManager(AsynchronousImageCache &imageCache,
|
|||||||
: d(std::make_unique<ViewManagerData>(imageCache, externalDependencies))
|
: d(std::make_unique<ViewManagerData>(imageCache, externalDependencies))
|
||||||
{
|
{
|
||||||
d->formEditorView.setGotoErrorCallback([this](int line, int column) {
|
d->formEditorView.setGotoErrorCallback([this](int line, int column) {
|
||||||
|
if (Internal::DesignModeWidget *w = QmlDesignerPlugin::instance()->mainWidget())
|
||||||
|
w->showDockWidget("TextEditor");
|
||||||
d->textEditorView.gotoCursorPosition(line, column);
|
d->textEditorView.gotoCursorPosition(line, column);
|
||||||
if (Internal::DesignModeWidget *designModeWidget = QmlDesignerPlugin::instance()
|
|
||||||
->mainWidget())
|
|
||||||
designModeWidget->showDockWidget("TextEditor");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
registerViewActions();
|
registerViewActions();
|
||||||
|
@@ -386,13 +386,16 @@ void ContentLibraryView::customNotification(const AbstractView *view,
|
|||||||
QTC_ASSERT(nodeList.size() == 1 && data.size() == 1, return);
|
QTC_ASSERT(nodeList.size() == 1 && data.size() == 1, return);
|
||||||
|
|
||||||
addLibItem(nodeList.first(), data.first().value<QPixmap>());
|
addLibItem(nodeList.first(), data.first().value<QPixmap>());
|
||||||
|
m_widget->showTab(ContentLibraryWidget::TabIndex::UserAssetsTab);
|
||||||
} else if (identifier == "add_assets_to_content_lib") {
|
} else if (identifier == "add_assets_to_content_lib") {
|
||||||
addLibAssets(data.first().toStringList());
|
addLibAssets(data.first().toStringList());
|
||||||
|
m_widget->showTab(ContentLibraryWidget::TabIndex::UserAssetsTab);
|
||||||
} else if (identifier == "add_3d_to_content_lib") {
|
} else if (identifier == "add_3d_to_content_lib") {
|
||||||
if (nodeList.first().isComponent())
|
if (nodeList.first().isComponent())
|
||||||
addLib3DComponent(nodeList.first());
|
addLib3DComponent(nodeList.first());
|
||||||
else
|
else
|
||||||
addLibItem(nodeList.first());
|
addLibItem(nodeList.first());
|
||||||
|
m_widget->showTab(ContentLibraryWidget::TabIndex::UserAssetsTab);
|
||||||
} else if (identifier == "export_item_as_bundle") {
|
} else if (identifier == "export_item_as_bundle") {
|
||||||
// TODO: support exporting 2D items
|
// TODO: support exporting 2D items
|
||||||
if (nodeList.first().isComponent())
|
if (nodeList.first().isComponent())
|
||||||
|
@@ -221,6 +221,11 @@ ContentLibraryIconProvider *ContentLibraryWidget::iconProvider() const
|
|||||||
return m_iconProvider.get();
|
return m_iconProvider.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ContentLibraryWidget::showTab(TabIndex tabIndex)
|
||||||
|
{
|
||||||
|
emit requestTab(int(tabIndex));
|
||||||
|
}
|
||||||
|
|
||||||
void ContentLibraryWidget::updateImportedState(const QString &bundleId)
|
void ContentLibraryWidget::updateImportedState(const QString &bundleId)
|
||||||
{
|
{
|
||||||
if (!m_importer)
|
if (!m_importer)
|
||||||
|
@@ -47,6 +47,16 @@ class ContentLibraryWidget : public QFrame
|
|||||||
Q_PROPERTY(bool isDragging MEMBER m_isDragging NOTIFY isDraggingChanged)
|
Q_PROPERTY(bool isDragging MEMBER m_isDragging NOTIFY isDraggingChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
enum class TabIndex {
|
||||||
|
MaterialsTab,
|
||||||
|
TexturesTab,
|
||||||
|
EnvironmentsTab,
|
||||||
|
EffectsTab,
|
||||||
|
UserAssetsTab
|
||||||
|
};
|
||||||
|
Q_ENUM(TabIndex)
|
||||||
|
|
||||||
ContentLibraryWidget();
|
ContentLibraryWidget();
|
||||||
~ContentLibraryWidget();
|
~ContentLibraryWidget();
|
||||||
|
|
||||||
@@ -97,6 +107,8 @@ public:
|
|||||||
ContentLibraryBundleImporter *importer() const;
|
ContentLibraryBundleImporter *importer() const;
|
||||||
ContentLibraryIconProvider *iconProvider() const;
|
ContentLibraryIconProvider *iconProvider() const;
|
||||||
|
|
||||||
|
void showTab(TabIndex tabIndex);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void bundleItemDragStarted(QmlDesigner::ContentLibraryItem *item);
|
void bundleItemDragStarted(QmlDesigner::ContentLibraryItem *item);
|
||||||
void bundleMaterialDragStarted(QmlDesigner::ContentLibraryMaterial *bundleMat);
|
void bundleMaterialDragStarted(QmlDesigner::ContentLibraryMaterial *bundleMat);
|
||||||
@@ -111,6 +123,7 @@ signals:
|
|||||||
void importerRunningChanged();
|
void importerRunningChanged();
|
||||||
void hasModelSelectionChanged();
|
void hasModelSelectionChanged();
|
||||||
void importBundle();
|
void importBundle();
|
||||||
|
void requestTab(int tabIndex);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool eventFilter(QObject *obj, QEvent *event) override;
|
bool eventFilter(QObject *obj, QEvent *event) override;
|
||||||
|
@@ -3,15 +3,17 @@
|
|||||||
|
|
||||||
#include "createtexture.h"
|
#include "createtexture.h"
|
||||||
|
|
||||||
#include "abstractview.h"
|
#include <abstractview.h>
|
||||||
#include "asset.h"
|
#include <asset.h>
|
||||||
#include "documentmanager.h"
|
#include <designmodewidget.h>
|
||||||
#include "modelnode.h"
|
#include <documentmanager.h>
|
||||||
#include "modelnodeoperations.h"
|
#include <modelnode.h>
|
||||||
#include "nodelistproperty.h"
|
#include <modelnodeoperations.h>
|
||||||
#include "nodemetainfo.h"
|
#include <nodelistproperty.h>
|
||||||
#include "qmlobjectnode.h"
|
#include <nodemetainfo.h>
|
||||||
#include "variantproperty.h"
|
#include <qmldesignerplugin.h>
|
||||||
|
#include <qmlobjectnode.h>
|
||||||
|
#include <variantproperty.h>
|
||||||
#include <utils3d.h>
|
#include <utils3d.h>
|
||||||
|
|
||||||
#include <coreplugin/messagebox.h>
|
#include <coreplugin/messagebox.h>
|
||||||
@@ -109,8 +111,10 @@ ModelNode CreateTexture::execute(const QString &filePath, AddTextureMode mode, i
|
|||||||
assignTextureAsLightProbe(texture, sceneId);
|
assignTextureAsLightProbe(texture, sceneId);
|
||||||
|
|
||||||
QTimer::singleShot(0, m_view, [this, texture]() {
|
QTimer::singleShot(0, m_view, [this, texture]() {
|
||||||
if (m_view->model())
|
if (m_view->model()) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser");
|
||||||
m_view->emitCustomNotification("select_texture", {texture}, {true});
|
m_view->emitCustomNotification("select_texture", {texture}, {true});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return texture;
|
return texture;
|
||||||
|
@@ -180,6 +180,7 @@ QAction *Edit3DMaterialsAction::createMaterialAction(const ModelNode &material,
|
|||||||
|
|
||||||
QAction *editMaterialAction = new QAction(tr("Edit"), menu);
|
QAction *editMaterialAction = new QAction(tr("Edit"), menu);
|
||||||
connect(editMaterialAction, &QAction::triggered, menu, [material] {
|
connect(editMaterialAction, &QAction::triggered, menu, [material] {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser");
|
||||||
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialEditor", true);
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialEditor", true);
|
||||||
if (auto materialView = material.view())
|
if (auto materialView = material.view())
|
||||||
materialView->emitCustomNotification("select_material", {material});
|
materialView->emitCustomNotification("select_material", {material});
|
||||||
|
@@ -6,29 +6,30 @@
|
|||||||
#include "backgroundcolorselection.h"
|
#include "backgroundcolorselection.h"
|
||||||
#include "bakelights.h"
|
#include "bakelights.h"
|
||||||
#include "cameraspeedconfiguration.h"
|
#include "cameraspeedconfiguration.h"
|
||||||
#include "designeractionmanager.h"
|
|
||||||
#include "designericons.h"
|
|
||||||
#include "designersettings.h"
|
|
||||||
#include "designmodecontext.h"
|
|
||||||
#include "edit3dcanvas.h"
|
#include "edit3dcanvas.h"
|
||||||
#include "edit3dviewconfig.h"
|
#include "edit3dviewconfig.h"
|
||||||
#include "edit3dwidget.h"
|
#include "edit3dwidget.h"
|
||||||
#include "materialutils.h"
|
|
||||||
#include "metainfo.h"
|
|
||||||
#include "nodeabstractproperty.h"
|
|
||||||
#include "nodehints.h"
|
|
||||||
#include "nodeinstanceview.h"
|
|
||||||
#include "qmldesignerconstants.h"
|
|
||||||
#include "qmldesignerplugin.h"
|
|
||||||
#include "qmlitemnode.h"
|
|
||||||
#include "qmlvisualnode.h"
|
|
||||||
#include "seekerslider.h"
|
|
||||||
#include "snapconfiguration.h"
|
#include "snapconfiguration.h"
|
||||||
#include "variantproperty.h"
|
|
||||||
|
|
||||||
#include <auxiliarydataproperties.h>
|
#include <auxiliarydataproperties.h>
|
||||||
|
#include <designeractionmanager.h>
|
||||||
|
#include <designericons.h>
|
||||||
|
#include <designersettings.h>
|
||||||
|
#include <designmodecontext.h>
|
||||||
|
#include <designmodewidget.h>
|
||||||
|
#include <materialutils.h>
|
||||||
|
#include <metainfo.h>
|
||||||
#include <modelutils.h>
|
#include <modelutils.h>
|
||||||
|
#include <nodeabstractproperty.h>
|
||||||
|
#include <nodehints.h>
|
||||||
|
#include <nodeinstanceview.h>
|
||||||
|
#include <qmldesignerconstants.h>
|
||||||
|
#include <qmldesignerplugin.h>
|
||||||
|
#include <qmlitemnode.h>
|
||||||
|
#include <qmlvisualnode.h>
|
||||||
|
#include <seekerslider.h>
|
||||||
#include <utils3d.h>
|
#include <utils3d.h>
|
||||||
|
#include <variantproperty.h>
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <coreplugin/messagebox.h>
|
#include <coreplugin/messagebox.h>
|
||||||
@@ -435,9 +436,7 @@ void Edit3DView::customNotification([[maybe_unused]] const AbstractView *view,
|
|||||||
[[maybe_unused]] const QList<ModelNode> &nodeList,
|
[[maybe_unused]] const QList<ModelNode> &nodeList,
|
||||||
[[maybe_unused]] const QList<QVariant> &data)
|
[[maybe_unused]] const QList<QVariant> &data)
|
||||||
{
|
{
|
||||||
if (identifier == "asset_import_update") {
|
if (identifier == "pick_3d_node_from_2d_scene" && data.size() == 1 && nodeList.size() == 1) {
|
||||||
resetPuppet();
|
|
||||||
} else if (identifier == "pick_3d_node_from_2d_scene" && data.size() == 1 && nodeList.size() == 1) {
|
|
||||||
// Pick via 2D view, data has pick coordinates in main scene coordinates
|
// Pick via 2D view, data has pick coordinates in main scene coordinates
|
||||||
QTimer::singleShot(0, this, [=, self = QPointer{this}]() {
|
QTimer::singleShot(0, this, [=, self = QPointer{this}]() {
|
||||||
if (!self)
|
if (!self)
|
||||||
@@ -491,11 +490,14 @@ void Edit3DView::nodeAtPosReady(const ModelNode &modelNode, const QVector3D &pos
|
|||||||
} else if (m_nodeAtPosReqType == NodeAtPosReqType::BundleEffectDrop) {
|
} else if (m_nodeAtPosReqType == NodeAtPosReqType::BundleEffectDrop) {
|
||||||
emitCustomNotification("drop_bundle_item", {modelNode}, {pos3d}); // To ContentLibraryView
|
emitCustomNotification("drop_bundle_item", {modelNode}, {pos3d}); // To ContentLibraryView
|
||||||
} else if (m_nodeAtPosReqType == NodeAtPosReqType::TextureDrop) {
|
} else if (m_nodeAtPosReqType == NodeAtPosReqType::TextureDrop) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser");
|
||||||
emitCustomNotification("apply_texture_to_model3D", {modelNode, m_droppedModelNode});
|
emitCustomNotification("apply_texture_to_model3D", {modelNode, m_droppedModelNode});
|
||||||
} else if (m_nodeAtPosReqType == NodeAtPosReqType::AssetDrop) {
|
} else if (m_nodeAtPosReqType == NodeAtPosReqType::AssetDrop) {
|
||||||
bool isModel = modelNode.metaInfo().isQtQuick3DModel();
|
bool isModel = modelNode.metaInfo().isQtQuick3DModel();
|
||||||
if (!m_droppedFile.isEmpty() && isModel)
|
if (!m_droppedFile.isEmpty() && isModel) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser");
|
||||||
emitCustomNotification("apply_asset_to_model3D", {modelNode}, {m_droppedFile}); // To MaterialBrowserView
|
emitCustomNotification("apply_asset_to_model3D", {modelNode}, {m_droppedFile}); // To MaterialBrowserView
|
||||||
|
}
|
||||||
} else if (m_nodeAtPosReqType == NodeAtPosReqType::MainScenePick) {
|
} else if (m_nodeAtPosReqType == NodeAtPosReqType::MainScenePick) {
|
||||||
if (modelNode.isValid())
|
if (modelNode.isValid())
|
||||||
setSelectedModelNode(modelNode);
|
setSelectedModelNode(modelNode);
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include <designdocument.h>
|
#include <designdocument.h>
|
||||||
#include <designericons.h>
|
#include <designericons.h>
|
||||||
#include <designermcumanager.h>
|
#include <designermcumanager.h>
|
||||||
|
#include <designmodewidget.h>
|
||||||
#include <externaldependenciesinterface.h>
|
#include <externaldependenciesinterface.h>
|
||||||
#include <generatedcomponentutils.h>
|
#include <generatedcomponentutils.h>
|
||||||
#include <import.h>
|
#include <import.h>
|
||||||
@@ -363,18 +364,21 @@ void Edit3DWidget::createContextMenu()
|
|||||||
m_addToContentLibAction = m_contextMenu->addAction(
|
m_addToContentLibAction = m_contextMenu->addAction(
|
||||||
contextIcon(DesignerIcons::CreateIcon), // TODO: placeholder icon
|
contextIcon(DesignerIcons::CreateIcon), // TODO: placeholder icon
|
||||||
tr("Add to Content Library"), [&] {
|
tr("Add to Content Library"), [&] {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary");
|
||||||
view()->emitCustomNotification("add_3d_to_content_lib", {m_contextMenuTarget}); // To ContentLibrary
|
view()->emitCustomNotification("add_3d_to_content_lib", {m_contextMenuTarget}); // To ContentLibrary
|
||||||
});
|
});
|
||||||
|
|
||||||
m_importBundleAction = m_contextMenu->addAction(
|
m_importBundleAction = m_contextMenu->addAction(
|
||||||
contextIcon(DesignerIcons::CreateIcon), // TODO: placeholder icon
|
contextIcon(DesignerIcons::CreateIcon), // TODO: placeholder icon
|
||||||
tr("Import Component"), [&] {
|
tr("Import Component"), [&] {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary");
|
||||||
view()->emitCustomNotification("import_bundle_to_project"); // To ContentLibrary
|
view()->emitCustomNotification("import_bundle_to_project"); // To ContentLibrary
|
||||||
});
|
});
|
||||||
|
|
||||||
m_exportBundleAction = m_contextMenu->addAction(
|
m_exportBundleAction = m_contextMenu->addAction(
|
||||||
contextIcon(DesignerIcons::CreateIcon), // TODO: placeholder icon
|
contextIcon(DesignerIcons::CreateIcon), // TODO: placeholder icon
|
||||||
tr("Export Component"), [&] {
|
tr("Export Component"), [&] {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary");
|
||||||
view()->emitCustomNotification("export_item_as_bundle", {m_contextMenuTarget}); // To ContentLibrary
|
view()->emitCustomNotification("export_item_as_bundle", {m_contextMenuTarget}); // To ContentLibrary
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -747,6 +747,7 @@ void ItemLibraryAssetImporter::finalizeQuick3DImport()
|
|||||||
} else if (counter >= 50) {
|
} else if (counter >= 50) {
|
||||||
for (const ParseData &pd : std::as_const(m_parseData)) {
|
for (const ParseData &pd : std::as_const(m_parseData)) {
|
||||||
if (!pd.overwrittenImports.isEmpty()) {
|
if (!pd.overwrittenImports.isEmpty()) {
|
||||||
|
model->rewriterView()->resetPuppet();
|
||||||
model->rewriterView()->emitCustomNotification("asset_import_update");
|
model->rewriterView()->emitCustomNotification("asset_import_update");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -3,19 +3,22 @@
|
|||||||
|
|
||||||
#include "materialbrowserview.h"
|
#include "materialbrowserview.h"
|
||||||
|
|
||||||
#include "bindingproperty.h"
|
|
||||||
#include "createtexture.h"
|
|
||||||
#include "designmodecontext.h"
|
|
||||||
#include "externaldependenciesinterface.h"
|
|
||||||
#include "materialbrowsermodel.h"
|
#include "materialbrowsermodel.h"
|
||||||
#include "materialbrowsertexturesmodel.h"
|
#include "materialbrowsertexturesmodel.h"
|
||||||
#include "materialbrowserwidget.h"
|
#include "materialbrowserwidget.h"
|
||||||
#include "nodeabstractproperty.h"
|
|
||||||
#include "nodeinstanceview.h"
|
#include <bindingproperty.h>
|
||||||
#include "nodemetainfo.h"
|
#include <createtexture.h>
|
||||||
#include "qmldesignerconstants.h"
|
#include <designmodecontext.h>
|
||||||
#include "qmlobjectnode.h"
|
#include <designmodewidget.h>
|
||||||
#include "variantproperty.h"
|
#include <externaldependenciesinterface.h>
|
||||||
|
#include <nodeabstractproperty.h>
|
||||||
|
#include <nodeinstanceview.h>
|
||||||
|
#include <nodemetainfo.h>
|
||||||
|
#include <qmldesignerconstants.h>
|
||||||
|
#include <qmldesignerplugin.h>
|
||||||
|
#include <qmlobjectnode.h>
|
||||||
|
#include <variantproperty.h>
|
||||||
#include <utils3d.h>
|
#include <utils3d.h>
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
@@ -75,20 +78,24 @@ WidgetInfo MaterialBrowserView::widgetInfo()
|
|||||||
|
|
||||||
connect(matBrowserModel, &MaterialBrowserModel::applyToSelectedTriggered, this,
|
connect(matBrowserModel, &MaterialBrowserModel::applyToSelectedTriggered, this,
|
||||||
[&] (const ModelNode &material, bool add) {
|
[&] (const ModelNode &material, bool add) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialEditor");
|
||||||
emitCustomNotification("apply_to_selected_triggered", {material}, {add});
|
emitCustomNotification("apply_to_selected_triggered", {material}, {add});
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(matBrowserModel, &MaterialBrowserModel::renameMaterialTriggered, this,
|
connect(matBrowserModel, &MaterialBrowserModel::renameMaterialTriggered, this,
|
||||||
[&] (const ModelNode &material, const QString &newName) {
|
[&] (const ModelNode &material, const QString &newName) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialEditor");
|
||||||
emitCustomNotification("rename_material", {material}, {newName});
|
emitCustomNotification("rename_material", {material}, {newName});
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(matBrowserModel, &MaterialBrowserModel::addNewMaterialTriggered, this, [&] {
|
connect(matBrowserModel, &MaterialBrowserModel::addNewMaterialTriggered, this, [&] {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialEditor");
|
||||||
emitCustomNotification("add_new_material");
|
emitCustomNotification("add_new_material");
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(matBrowserModel, &MaterialBrowserModel::duplicateMaterialTriggered, this,
|
connect(matBrowserModel, &MaterialBrowserModel::duplicateMaterialTriggered, this,
|
||||||
[&] (const ModelNode &material) {
|
[&] (const ModelNode &material) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialEditor");
|
||||||
emitCustomNotification("duplicate_material", {material});
|
emitCustomNotification("duplicate_material", {material});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -170,6 +177,7 @@ WidgetInfo MaterialBrowserView::widgetInfo()
|
|||||||
});
|
});
|
||||||
connect(texturesModel, &MaterialBrowserTexturesModel::duplicateTextureTriggered, this,
|
connect(texturesModel, &MaterialBrowserTexturesModel::duplicateTextureTriggered, this,
|
||||||
[&] (const ModelNode &texture) {
|
[&] (const ModelNode &texture) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("TextureEditor");
|
||||||
emitCustomNotification("duplicate_texture", {texture});
|
emitCustomNotification("duplicate_texture", {texture});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -189,6 +197,7 @@ WidgetInfo MaterialBrowserView::widgetInfo()
|
|||||||
});
|
});
|
||||||
|
|
||||||
connect(texturesModel, &MaterialBrowserTexturesModel::addNewTextureTriggered, this, [&] {
|
connect(texturesModel, &MaterialBrowserTexturesModel::addNewTextureTriggered, this, [&] {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("TextureEditor");
|
||||||
emitCustomNotification("add_new_texture");
|
emitCustomNotification("add_new_texture");
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -235,6 +244,7 @@ void MaterialBrowserView::modelAttached(Model *model)
|
|||||||
{
|
{
|
||||||
AbstractView::modelAttached(model);
|
AbstractView::modelAttached(model);
|
||||||
|
|
||||||
|
m_pendingTextureSelection = {};
|
||||||
m_widget->clearSearchFilter();
|
m_widget->clearSearchFilter();
|
||||||
m_widget->materialBrowserModel()->setHasMaterialLibrary(false);
|
m_widget->materialBrowserModel()->setHasMaterialLibrary(false);
|
||||||
m_hasQuick3DImport = model->hasImport("QtQuick3D");
|
m_hasQuick3DImport = model->hasImport("QtQuick3D");
|
||||||
@@ -245,6 +255,10 @@ void MaterialBrowserView::modelAttached(Model *model)
|
|||||||
QTimer::singleShot(1000, model, [this] {
|
QTimer::singleShot(1000, model, [this] {
|
||||||
refreshModel(true);
|
refreshModel(true);
|
||||||
loadPropertyGroups(); // Needs the delay because it uses metaInfo
|
loadPropertyGroups(); // Needs the delay because it uses metaInfo
|
||||||
|
|
||||||
|
if (m_pendingTextureSelection.isValid())
|
||||||
|
emitCustomNotification("select_texture", {m_pendingTextureSelection}, {true});
|
||||||
|
m_pendingTextureSelection = {};
|
||||||
});
|
});
|
||||||
|
|
||||||
m_sceneId = Utils3D::active3DSceneId(model);
|
m_sceneId = Utils3D::active3DSceneId(model);
|
||||||
@@ -559,6 +573,8 @@ void MaterialBrowserView::customNotification(const AbstractView *view,
|
|||||||
m_widget->materialBrowserTexturesModel()->refreshSearch();
|
m_widget->materialBrowserTexturesModel()->refreshSearch();
|
||||||
if (!data.isEmpty() && data[0].toBool())
|
if (!data.isEmpty() && data[0].toBool())
|
||||||
m_widget->focusMaterialSection(false);
|
m_widget->focusMaterialSection(false);
|
||||||
|
} else {
|
||||||
|
m_pendingTextureSelection = nodeList.first();
|
||||||
}
|
}
|
||||||
} else if (identifier == "refresh_material_browser") {
|
} else if (identifier == "refresh_material_browser") {
|
||||||
QTimer::singleShot(0, model(), [this] {
|
QTimer::singleShot(0, model(), [this] {
|
||||||
@@ -571,8 +587,6 @@ void MaterialBrowserView::customNotification(const AbstractView *view,
|
|||||||
applyTextureToModel3D(nodeList.at(0));
|
applyTextureToModel3D(nodeList.at(0));
|
||||||
} else if (identifier == "apply_texture_to_model3D") {
|
} else if (identifier == "apply_texture_to_model3D") {
|
||||||
applyTextureToModel3D(nodeList.at(0), nodeList.at(1));
|
applyTextureToModel3D(nodeList.at(0), nodeList.at(1));
|
||||||
} else if (identifier == "apply_texture_to_material") {
|
|
||||||
applyTextureToMaterial({nodeList.at(0)}, nodeList.at(1));
|
|
||||||
} else if (identifier == "focus_material_section") {
|
} else if (identifier == "focus_material_section") {
|
||||||
m_widget->focusMaterialSection(true);
|
m_widget->focusMaterialSection(true);
|
||||||
}
|
}
|
||||||
|
@@ -101,6 +101,7 @@ private:
|
|||||||
QString m_appliedTextureId;
|
QString m_appliedTextureId;
|
||||||
QString m_appliedTexturePath; // defers texture creation until dialog apply
|
QString m_appliedTexturePath; // defers texture creation until dialog apply
|
||||||
int m_sceneId = -1;
|
int m_sceneId = -1;
|
||||||
|
ModelNode m_pendingTextureSelection;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -3,23 +3,24 @@
|
|||||||
|
|
||||||
#include "materialbrowserwidget.h"
|
#include "materialbrowserwidget.h"
|
||||||
|
|
||||||
#include "asset.h"
|
|
||||||
#include "assetimageprovider.h"
|
|
||||||
#include "createtexture.h"
|
|
||||||
#include "documentmanager.h"
|
|
||||||
#include "hdrimage.h"
|
|
||||||
#include "materialbrowsermodel.h"
|
#include "materialbrowsermodel.h"
|
||||||
#include "materialbrowsertexturesmodel.h"
|
#include "materialbrowsertexturesmodel.h"
|
||||||
#include "materialbrowserview.h"
|
#include "materialbrowserview.h"
|
||||||
#include "qmldesignerconstants.h"
|
|
||||||
#include "qmldesignerplugin.h"
|
#include <asset.h>
|
||||||
#include "theme.h"
|
#include <assetimageprovider.h>
|
||||||
#include "variantproperty.h"
|
#include <createtexture.h>
|
||||||
|
#include <designmodewidget.h>
|
||||||
|
#include <documentmanager.h>
|
||||||
|
#include <hdrimage.h>
|
||||||
|
#include <qmldesignerconstants.h>
|
||||||
|
#include <qmldesignerplugin.h>
|
||||||
|
#include <studioquickwidget.h>
|
||||||
|
#include <theme.h>
|
||||||
|
#include <variantproperty.h>
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <studioquickwidget.h>
|
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/environment.h>
|
#include <utils/environment.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
@@ -371,6 +372,7 @@ void MaterialBrowserWidget::focusMaterialSection(bool focusMatSec)
|
|||||||
void MaterialBrowserWidget::addMaterialToContentLibrary()
|
void MaterialBrowserWidget::addMaterialToContentLibrary()
|
||||||
{
|
{
|
||||||
ModelNode mat = m_materialBrowserModel->selectedMaterial();
|
ModelNode mat = m_materialBrowserModel->selectedMaterial();
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary");
|
||||||
m_materialBrowserView->emitCustomNotification("add_material_to_content_lib", {mat},
|
m_materialBrowserView->emitCustomNotification("add_material_to_content_lib", {mat},
|
||||||
{m_previewImageProvider->getPixmap(mat)}); // to ContentLibrary
|
{m_previewImageProvider->getPixmap(mat)}); // to ContentLibrary
|
||||||
}
|
}
|
||||||
@@ -378,11 +380,13 @@ void MaterialBrowserWidget::addMaterialToContentLibrary()
|
|||||||
void MaterialBrowserWidget::importMaterial()
|
void MaterialBrowserWidget::importMaterial()
|
||||||
{
|
{
|
||||||
ModelNode mat = m_materialBrowserModel->selectedMaterial();
|
ModelNode mat = m_materialBrowserModel->selectedMaterial();
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary");
|
||||||
m_materialBrowserView->emitCustomNotification("import_bundle_to_project"); // to ContentLibrary
|
m_materialBrowserView->emitCustomNotification("import_bundle_to_project"); // to ContentLibrary
|
||||||
}
|
}
|
||||||
void MaterialBrowserWidget::exportMaterial()
|
void MaterialBrowserWidget::exportMaterial()
|
||||||
{
|
{
|
||||||
ModelNode mat = m_materialBrowserModel->selectedMaterial();
|
ModelNode mat = m_materialBrowserModel->selectedMaterial();
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary");
|
||||||
m_materialBrowserView->emitCustomNotification("export_material_as_bundle", {mat},
|
m_materialBrowserView->emitCustomNotification("export_material_as_bundle", {mat},
|
||||||
{m_previewImageProvider->getPixmap(mat)}); // to ContentLibrary
|
{m_previewImageProvider->getPixmap(mat)}); // to ContentLibrary
|
||||||
}
|
}
|
||||||
|
@@ -715,6 +715,8 @@ void MaterialEditorView::modelAttached(Model *model)
|
|||||||
}
|
}
|
||||||
resetView();
|
resetView();
|
||||||
|
|
||||||
|
selectedNodesChanged(selectedModelNodes(), {});
|
||||||
|
|
||||||
m_locked = false;
|
m_locked = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1056,17 +1058,22 @@ void MaterialEditorView::customNotification([[maybe_unused]] const AbstractView
|
|||||||
const QList<ModelNode> &nodeList,
|
const QList<ModelNode> &nodeList,
|
||||||
const QList<QVariant> &data)
|
const QList<QVariant> &data)
|
||||||
{
|
{
|
||||||
if (identifier == "selected_material_changed") {
|
auto changeSelected = [&]() {
|
||||||
if (!m_hasMaterialRoot) {
|
if (!m_hasMaterialRoot && m_selectedMaterial != nodeList.first()) {
|
||||||
m_selectedMaterial = nodeList.first();
|
m_selectedMaterial = nodeList.first();
|
||||||
m_dynamicPropertiesModel->setSelectedNode(m_selectedMaterial);
|
m_dynamicPropertiesModel->setSelectedNode(m_selectedMaterial);
|
||||||
QTimer::singleShot(0, this, &MaterialEditorView::resetView);
|
QTimer::singleShot(0, this, &MaterialEditorView::resetView);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (identifier == "selected_material_changed") {
|
||||||
|
changeSelected();
|
||||||
} else if (identifier == "apply_to_selected_triggered") {
|
} else if (identifier == "apply_to_selected_triggered") {
|
||||||
|
changeSelected();
|
||||||
applyMaterialToSelectedModels(nodeList.first(), data.first().toBool());
|
applyMaterialToSelectedModels(nodeList.first(), data.first().toBool());
|
||||||
} else if (identifier == "rename_material") {
|
} else if (identifier == "rename_material") {
|
||||||
if (m_selectedMaterial == nodeList.first())
|
changeSelected();
|
||||||
renameMaterial(m_selectedMaterial, data.first().toString());
|
renameMaterial(m_selectedMaterial, data.first().toString());
|
||||||
} else if (identifier == "add_new_material") {
|
} else if (identifier == "add_new_material") {
|
||||||
handleToolBarAction(MaterialEditorContextObject::AddNewMaterial);
|
handleToolBarAction(MaterialEditorContextObject::AddNewMaterial);
|
||||||
} else if (identifier == "duplicate_material") {
|
} else if (identifier == "duplicate_material") {
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <designeractionmanager.h>
|
#include <designeractionmanager.h>
|
||||||
#include <designersettings.h>
|
#include <designersettings.h>
|
||||||
|
#include <designmodewidget.h>
|
||||||
#include <import.h>
|
#include <import.h>
|
||||||
#include <invalididexception.h>
|
#include <invalididexception.h>
|
||||||
#include <itemlibraryentry.h>
|
#include <itemlibraryentry.h>
|
||||||
@@ -565,8 +566,10 @@ bool NavigatorTreeModel::dropMimeData(const QMimeData *mimeData,
|
|||||||
ModelNodeOperations::handleMaterialDrop(mimeData, targetNode);
|
ModelNodeOperations::handleMaterialDrop(mimeData, targetNode);
|
||||||
} else if (mimeData->hasFormat(Constants::MIME_TYPE_BUNDLE_TEXTURE)) {
|
} else if (mimeData->hasFormat(Constants::MIME_TYPE_BUNDLE_TEXTURE)) {
|
||||||
QByteArray filePath = mimeData->data(Constants::MIME_TYPE_BUNDLE_TEXTURE);
|
QByteArray filePath = mimeData->data(Constants::MIME_TYPE_BUNDLE_TEXTURE);
|
||||||
if (targetNode.metaInfo().isQtQuick3DModel())
|
if (targetNode.metaInfo().isQtQuick3DModel()) {
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser");
|
||||||
m_view->emitCustomNotification("apply_asset_to_model3D", {targetNode}, {filePath}); // To MaterialBrowserView
|
m_view->emitCustomNotification("apply_asset_to_model3D", {targetNode}, {filePath}); // To MaterialBrowserView
|
||||||
|
}
|
||||||
} else if (mimeData->hasFormat(Constants::MIME_TYPE_BUNDLE_MATERIAL)) {
|
} else if (mimeData->hasFormat(Constants::MIME_TYPE_BUNDLE_MATERIAL)) {
|
||||||
if (targetNode.isValid())
|
if (targetNode.isValid())
|
||||||
m_view->emitCustomNotification("drop_bundle_material", {targetNode}); // To ContentLibraryView
|
m_view->emitCustomNotification("drop_bundle_material", {targetNode}); // To ContentLibraryView
|
||||||
|
@@ -535,6 +535,7 @@ void PropertyEditorValue::commitDrop(const QString &dropData)
|
|||||||
|
|
||||||
void PropertyEditorValue::openMaterialEditor(int idx)
|
void PropertyEditorValue::openMaterialEditor(int idx)
|
||||||
{
|
{
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser");
|
||||||
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialEditor", true);
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialEditor", true);
|
||||||
m_modelNode.view()->emitCustomNotification("select_material", {}, {idx});
|
m_modelNode.view()->emitCustomNotification("select_material", {}, {idx});
|
||||||
}
|
}
|
||||||
|
@@ -364,6 +364,7 @@ void TextureEditorView::applyTextureToSelectedModel(const ModelNode &texture)
|
|||||||
|
|
||||||
QTC_ASSERT(texture.isValid(), return);
|
QTC_ASSERT(texture.isValid(), return);
|
||||||
|
|
||||||
|
QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser");
|
||||||
emitCustomNotification("apply_texture_to_model3D", {m_selectedModel, m_selectedTexture});
|
emitCustomNotification("apply_texture_to_model3D", {m_selectedModel, m_selectedTexture});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -837,8 +838,6 @@ void TextureEditorView::customNotification([[maybe_unused]] const AbstractView *
|
|||||||
m_dynamicPropertiesModel->setSelectedNode(m_selectedTexture);
|
m_dynamicPropertiesModel->setSelectedNode(m_selectedTexture);
|
||||||
QTimer::singleShot(0, this, &TextureEditorView::resetView);
|
QTimer::singleShot(0, this, &TextureEditorView::resetView);
|
||||||
}
|
}
|
||||||
} else if (identifier == "apply_texture_to_selected_model") {
|
|
||||||
applyTextureToSelectedModel(nodeList.first());
|
|
||||||
} else if (identifier == "add_new_texture") {
|
} else if (identifier == "add_new_texture") {
|
||||||
handleToolBarAction(TextureEditorContextObject::AddNewTexture);
|
handleToolBarAction(TextureEditorContextObject::AddNewTexture);
|
||||||
} else if (identifier == "duplicate_texture") {
|
} else if (identifier == "duplicate_texture") {
|
||||||
|
@@ -77,9 +77,6 @@ public:
|
|||||||
void nodeOrderChanged(const NodeListProperty &listProperty) override;
|
void nodeOrderChanged(const NodeListProperty &listProperty) override;
|
||||||
void rootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion) override;
|
void rootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion) override;
|
||||||
void nodeTypeChanged(const ModelNode& node, const TypeName &type, int majorVersion, int minorVersion) override;
|
void nodeTypeChanged(const ModelNode& node, const TypeName &type, int majorVersion, int minorVersion) override;
|
||||||
void customNotification(const AbstractView *view, const QString &identifier,
|
|
||||||
const QList<ModelNode> &nodeList,
|
|
||||||
const QList<QVariant> &data) override;
|
|
||||||
|
|
||||||
void rewriterBeginTransaction() override;
|
void rewriterBeginTransaction() override;
|
||||||
void rewriterEndTransaction() override;
|
void rewriterEndTransaction() override;
|
||||||
|
@@ -385,15 +385,6 @@ void RewriterView::nodeTypeChanged(const ModelNode &node,
|
|||||||
applyChanges();
|
applyChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RewriterView::customNotification(const AbstractView * /*view*/,
|
|
||||||
const QString &identifier,
|
|
||||||
const QList<ModelNode> & /* nodeList */,
|
|
||||||
const QList<QVariant> & /*data */)
|
|
||||||
{
|
|
||||||
if (identifier == StartRewriterAmend || identifier == EndRewriterAmend)
|
|
||||||
return; // we emitted this ourselves, so just ignore these notifications.
|
|
||||||
}
|
|
||||||
|
|
||||||
void RewriterView::rewriterBeginTransaction()
|
void RewriterView::rewriterBeginTransaction()
|
||||||
{
|
{
|
||||||
transactionLevel++;
|
transactionLevel++;
|
||||||
|
Reference in New Issue
Block a user