summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/widgets
diff options
context:
space:
mode:
authorAhmad Samir <a.samirh78@gmail.com>2023-11-06 22:42:19 +0200
committerAhmad Samir <a.samirh78@gmail.com>2023-11-17 23:07:01 +0200
commitc94bcecb22bce80101de79f4b3c0aff143ff34b5 (patch)
tree0c746923a8b43048ff711dbec3c6ab25fc90052b /tests/auto/widgets/widgets
parent17372faf3f5e4a9c2577007ed5b38275e64bad89 (diff)
QMdiArea: fix initial single-sub-window in TabbedView
This is somewhat of a corner case, where there is a single sub-window, setViewMode(TabbedView) is called before addSubWindow(), and the latter is called before show(). The sub-window would be active, i.e. subwindow->d_func()->isActive is true and QMdiArea::aboutToActivate() is emitted, but QMA::emitSubWindowActivated() is never called for that sub-window, resulting in that sub-window shown as unmaximized/with-a-title-bar instead of as maximized/tabbed as is expected in TabbedView. Pick-to: 6.6 6.5 Fixes: QTBUG-114188 Change-Id: Ia7b2cfd07c51867707866a1f99f70129bbdc0e3e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'tests/auto/widgets/widgets')
-rw-r--r--tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
index 1aa99f27cf..af604372ea 100644
--- a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
+++ b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
@@ -260,6 +260,7 @@ private slots:
void task_236750();
void qtbug92240_title_data();
void qtbug92240_title();
+ void tabbedview_singleSubWindow();
void tabbedview_activefirst();
void tabbedview_activesecond();
void tabbedview_activethird();
@@ -2728,6 +2729,21 @@ void tst_QMdiArea::qtbug92240_title()
QTRY_COMPARE(w.windowTitle(), QLatin1String("QTBUG-92240 - [2]"));
}
+void tst_QMdiArea::tabbedview_singleSubWindow()
+{
+ // With only one sub-window, setViewMode() before addSubWindow(); and addSubWindow()
+ // before show(), ensure the sub-window is properly activated.
+ QMdiArea mdiArea;
+ mdiArea.setViewMode(QMdiArea::TabbedView);
+ auto *w = new QWidget(&mdiArea);
+ mdiArea.addSubWindow(w);
+ mdiArea.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&mdiArea));
+ auto *sub = mdiArea.subWindowList().at(0);
+ QCOMPARE(mdiArea.activeSubWindow(), sub);
+ QVERIFY(sub->isMaximized());
+}
+
static void setupMdiAreaWithTabbedView(QMdiArea &mdiArea)
{
mdiArea.setViewMode(QMdiArea::TabbedView);