diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-10-20 16:25:47 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-10-21 06:30:15 +0200 |
commit | 6c7a348cf82665f7f09bc3e0cfe03256f1462744 (patch) | |
tree | 8c18fe06b7c68bd205c96f2b6275e5b8e510bc79 /tests | |
parent | 520b10be4cab66f3f66d3692d0bbbef57eff09e1 (diff) |
Set correct transient parent in q_createNativeChildrenAndSetParent().
Fix warning:
void QWindow::setTransientParent(QWindow*) ... must be a top level window.
which occurred for example when parenting a QMenu onto a native child
widget.
Task-number: QTBUG-41898
Change-Id: Icc25fb2108bd68b2d9c0e551949b90fc7a82d358
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index ec3e8ece6a..44d7671ca3 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -55,6 +55,7 @@ #include <qmainwindow.h> #include <qdockwidget.h> #include <qtoolbar.h> +#include <qtoolbutton.h> #include <QtGui/qpaintengine.h> #include <QtGui/qbackingstore.h> #include <QtGui/qguiapplication.h> @@ -268,6 +269,7 @@ private slots: void winIdChangeEvent(); void persistentWinId(); void showNativeChild(); + void transientParent(); void qobject_castInDestroyedSlot(); void showHideEvent_data(); @@ -3992,6 +3994,21 @@ void tst_QWidget::persistentWinId() QCOMPARE(w3->winId(), winId3); } +void tst_QWidget::transientParent() +{ + QWidget topLevel; + topLevel.setGeometry(QRect(m_availableTopLeft + QPoint(100, 100), m_testWidgetSize)); + topLevel.setWindowTitle(__FUNCTION__); + QWidget *child = new QWidget(&topLevel); + QMenu *menu = new QMenu(child); // QTBUG-41898: Use top level as transient parent for native widgets as well. + QToolButton *toolButton = new QToolButton(child); + toolButton->setMenu(menu); + toolButton->winId(); + topLevel.show(); + QVERIFY(QTest::qWaitForWindowExposed(&topLevel)); + QCOMPARE(menu->windowHandle()->transientParent(), topLevel.windowHandle()); +} + void tst_QWidget::showNativeChild() { QWidget topLevel; |