From 0ff8b0eaee762fa34282e8799417e2dfbba8cd38 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 1 Mar 2023 08:46:05 +0100 Subject: Qt Designer: Fix a crash with main windows with no central widgets In the container extension for QMainWindow, check if the central widget is actually a managed widget. Fixes: QTBUG-111603 Change-Id: I50161a386084bc90d695461149486f3a7415e317 Reviewed-by: Jarek Kobus (cherry picked from commit 177c702534a6e43d4bde03433b24c397e2c12329) Reviewed-by: Qt Cherry-pick Bot --- src/designer/src/components/formeditor/qmainwindow_container.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/designer/src/components/formeditor/qmainwindow_container.cpp b/src/designer/src/components/formeditor/qmainwindow_container.cpp index e25dcb36c..d4bd19d49 100644 --- a/src/designer/src/components/formeditor/qmainwindow_container.cpp +++ b/src/designer/src/components/formeditor/qmainwindow_container.cpp @@ -30,15 +30,14 @@ int QMainWindowContainer::count() const QWidget *QMainWindowContainer::widget(int index) const { - if (index == -1) - return nullptr; - - return m_widgets.at(index); + return m_widgets.value(index, nullptr); } int QMainWindowContainer::currentIndex() const { - return m_mainWindow->centralWidget() ? 0 : -1; + // QTBUG-111603, handle plugins with unmanaged central widgets + auto *cw = m_mainWindow->centralWidget(); + return cw != nullptr && m_widgets.contains(cw) ? 0 : -1; } void QMainWindowContainer::setCurrentIndex(int index) -- cgit v1.2.1