aboutsummaryrefslogtreecommitdiffstats
diff options
authorEike Ziller <eike.ziller@qt.io>2025-04-23 16:31:05 +0200
committerEike Ziller <eike.ziller@qt.io>2025-04-29 08:00:53 +0000
commitcf83c0b651790446c73dae29f68cec9e2ba6af9e (patch)
tree4176f416e3776b8cbf5a178839d1030e23467807
parenta2fda5c048f4f91f9558c0e162bd4451751d19aa (diff)
QmlDesigner: Fix crash when switching to first .ui.qml file16.0
if Qt Creator is already in Design mode. QmlDesignerPlugin::showDesigner() was only called on a switch to Design mode while the editor is a .ui.qml file. So it wasn't called when opening a .ui file in Design mode and then switching to a .ui.qml file. But showDesigner() creates the QmlDesigner widgets, so it must be called. Fixes: QTCREATORBUG-32854 Change-Id: I02a498ce00fc1afdee900752ade7af6c62b787b7 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r--src/plugins/qmldesigner/designmodewidget.cpp5
-rw-r--r--src/plugins/qmldesigner/designmodewidget.h2
-rw-r--r--src/plugins/qmldesigner/qmldesignerplugin.cpp11
3 files changed, 16 insertions, 2 deletions
diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp
index 34183af8b26..3dea9e15762 100644
--- a/src/plugins/qmldesigner/designmodewidget.cpp
+++ b/src/plugins/qmldesigner/designmodewidget.cpp
@@ -651,6 +651,11 @@ void DesignModeWidget::setMinimumSizeHintFromContentMinimumSize(bool value)
dockContainer->layout()->update();
}
+bool DesignModeWidget::isInitialized() const
+{
+ return m_initStatus == Initialized;
+}
+
void DesignModeWidget::dragEnterEvent(QDragEnterEvent *event)
{
event->accept();
diff --git a/src/plugins/qmldesigner/designmodewidget.h b/src/plugins/qmldesigner/designmodewidget.h
index 881335da75c..38be692b109 100644
--- a/src/plugins/qmldesigner/designmodewidget.h
+++ b/src/plugins/qmldesigner/designmodewidget.h
@@ -75,6 +75,8 @@ public:
void setMinimumSizeHintFromContentMinimumSize(bool value);
+ bool isInitialized() const;
+
signals:
void navigationHistoryChanged();
void initialized();
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp
index 61dfb8adf45..b0f7c7f0891 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.cpp
+++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp
@@ -529,8 +529,15 @@ void QmlDesignerPlugin::hideDesigner()
void QmlDesignerPlugin::changeEditor()
{
- clearDesigner();
- setupDesigner();
+ if (d->mainWidget.isInitialized()) {
+ // showDesigner was already already called
+ clearDesigner();
+ setupDesigner();
+ } else {
+ // we are already in Design mode, but showDesigner wasn't called yet,
+ // so we need to call that to set up the widgets
+ showDesigner();
+ }
}
void QmlDesignerPlugin::jumpTextCursorToSelectedModelNode()
close