summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-09-24 09:49:07 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-09-24 12:04:52 +0200
commitc96426f19f8c244c0f5748f0009016f576db9616 (patch)
treef6365344e8a24415e7a67694af2f0c043bb0dae6 /tests/auto/widgets
parent2137cb7dc5c902ce71855901c83c4c9d87b1ce2d (diff)
parentc5a3e5edd9e63b18abf1838c86a27a662224b02c (diff)
Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp32
-rw-r--r--tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp24
-rw-r--r--tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp32
-rwxr-xr-x[-rw-r--r--]tests/auto/widgets/kernel/qwidget_window/qwidget_window.pro0
-rwxr-xr-x[-rw-r--r--]tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp35
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp5
-rw-r--r--tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp25
-rw-r--r--tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp28
8 files changed, 180 insertions, 1 deletions
diff --git a/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp b/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp
index 850bedd9cc..4167d633b0 100644
--- a/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp
+++ b/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp
@@ -79,6 +79,8 @@ private slots:
void taskQTBUG_7103_minMaxWidthNotRespected();
void taskQTBUG_27420_takeAtShouldUnparentLayout();
+ void taskQTBUG_40609_addingWidgetToItsOwnLayout();
+ void taskQTBUG_40609_addingLayoutToItself();
void replaceWidget();
};
@@ -329,6 +331,36 @@ void tst_QBoxLayout::taskQTBUG_27420_takeAtShouldUnparentLayout()
QVERIFY(!inner.isNull());
}
+void tst_QBoxLayout::taskQTBUG_40609_addingWidgetToItsOwnLayout(){
+ QWidget widget;
+ widget.setObjectName("347b469225a24a0ef05150a");
+ QVBoxLayout layout(&widget);
+ layout.setObjectName("ef9e2b42298e0e6420105bb");
+
+ QTest::ignoreMessage(QtWarningMsg, "QLayout: Cannot add a null widget to QVBoxLayout/ef9e2b42298e0e6420105bb");
+ layout.addWidget(Q_NULLPTR);
+ QCOMPARE(layout.count(), 0);
+
+ QTest::ignoreMessage(QtWarningMsg, "QLayout: Cannot add parent widget QWidget/347b469225a24a0ef05150a to its child layout QVBoxLayout/ef9e2b42298e0e6420105bb");
+ layout.addWidget(&widget);
+ QCOMPARE(layout.count(), 0);
+}
+
+void tst_QBoxLayout::taskQTBUG_40609_addingLayoutToItself(){
+ QWidget widget;
+ widget.setObjectName("fe44e5cb6c08006597126a");
+ QVBoxLayout layout(&widget);
+ layout.setObjectName("cc751dd0f50f62b05a62da");
+
+ QTest::ignoreMessage(QtWarningMsg, "QLayout: Cannot add a null layout to QVBoxLayout/cc751dd0f50f62b05a62da");
+ layout.addLayout(Q_NULLPTR);
+ QCOMPARE(layout.count(), 0);
+
+ QTest::ignoreMessage(QtWarningMsg, "QLayout: Cannot add layout QVBoxLayout/cc751dd0f50f62b05a62da to itself");
+ layout.addLayout(&layout);
+ QCOMPARE(layout.count(), 0);
+}
+
struct Descr
{
Descr(int min, int sh, int max = -1, bool exp= false, int _stretch = 0, bool _empty = false)
diff --git a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
index 9df7e1662d..962e472606 100644
--- a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
+++ b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
@@ -135,6 +135,8 @@ private slots:
*/
void taskQTBUG_27420_takeAtShouldUnparentLayout();
+ void taskQTBUG_40609_addingWidgetToItsOwnLayout();
+ void taskQTBUG_40609_addingLayoutToItself();
};
@@ -949,6 +951,28 @@ void tst_QFormLayout::taskQTBUG_27420_takeAtShouldUnparentLayout()
QVERIFY(!inner.isNull());
}
+void tst_QFormLayout::taskQTBUG_40609_addingWidgetToItsOwnLayout(){
+ QWidget widget;
+ widget.setObjectName("6435cbada60548b4522cbb6");
+ QFormLayout layout(&widget);
+ layout.setObjectName("c03c0e22c0b6d019a93a248");
+
+ QTest::ignoreMessage(QtWarningMsg, "QLayout: Cannot add parent widget QWidget/6435cbada60548b4522cbb6 to its child layout QFormLayout/c03c0e22c0b6d019a93a248");
+ layout.addRow(QLatin1String("48c81f39b7320082f8"), &widget);
+ QCOMPARE(layout.count(), 0);
+}
+
+void tst_QFormLayout::taskQTBUG_40609_addingLayoutToItself(){
+ QWidget widget;
+ widget.setObjectName("2bc425637d084c07ce65956");
+ QFormLayout layout(&widget);
+ layout.setObjectName("60e31de0c8800eaba713a4f2");
+
+ QTest::ignoreMessage(QtWarningMsg, "QLayout: Cannot add layout QFormLayout/60e31de0c8800eaba713a4f2 to itself");
+ layout.addRow(QLatin1String("9a2cd4f40c06b489f889"), &layout);
+ QCOMPARE(layout.count(), 0);
+}
+
void tst_QFormLayout::replaceWidget()
{
QWidget w;
diff --git a/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp b/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp
index 3b7c2ac14d..0dcae2fbcc 100644
--- a/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp
+++ b/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp
@@ -101,6 +101,8 @@ private slots:
void distributeMultiCell();
void taskQTBUG_27420_takeAtShouldUnparentLayout();
+ void taskQTBUG_40609_addingWidgetToItsOwnLayout();
+ void taskQTBUG_40609_addingLayoutToItself();
void replaceWidget();
private:
@@ -1660,6 +1662,36 @@ void tst_QGridLayout::taskQTBUG_27420_takeAtShouldUnparentLayout()
QVERIFY(!inner.isNull());
}
+void tst_QGridLayout::taskQTBUG_40609_addingWidgetToItsOwnLayout(){
+ QWidget widget;
+ widget.setObjectName("9bb37ca762aeb7269b8");
+ QGridLayout layout(&widget);
+ layout.setObjectName("d631e91a35f2b66a6dff35");
+
+ QTest::ignoreMessage(QtWarningMsg, "QLayout: Cannot add a null widget to QGridLayout/d631e91a35f2b66a6dff35");
+ layout.addWidget(Q_NULLPTR, 0, 0);
+ QCOMPARE(layout.count(), 0);
+
+ QTest::ignoreMessage(QtWarningMsg, "QLayout: Cannot add parent widget QWidget/9bb37ca762aeb7269b8 to its child layout QGridLayout/d631e91a35f2b66a6dff35");
+ layout.addWidget(&widget, 0, 0);
+ QCOMPARE(layout.count(), 0);
+}
+
+void tst_QGridLayout::taskQTBUG_40609_addingLayoutToItself(){
+ QWidget widget;
+ widget.setObjectName("0373d417fffe2c59c6fe543");
+ QGridLayout layout(&widget);
+ layout.setObjectName("5d79e1b0aed83f100e3c2");
+
+ QTest::ignoreMessage(QtWarningMsg, "QLayout: Cannot add a null layout to QGridLayout/5d79e1b0aed83f100e3c2");
+ layout.addLayout(Q_NULLPTR, 0, 0);
+ QCOMPARE(layout.count(), 0);
+
+ QTest::ignoreMessage(QtWarningMsg, "QLayout: Cannot add layout QGridLayout/5d79e1b0aed83f100e3c2 to itself");
+ layout.addLayout(&layout, 0, 0);
+ QCOMPARE(layout.count(), 0);
+}
+
void tst_QGridLayout::replaceWidget()
{
QWidget wdg;
diff --git a/tests/auto/widgets/kernel/qwidget_window/qwidget_window.pro b/tests/auto/widgets/kernel/qwidget_window/qwidget_window.pro
index d61681d5cb..d61681d5cb 100644..100755
--- a/tests/auto/widgets/kernel/qwidget_window/qwidget_window.pro
+++ b/tests/auto/widgets/kernel/qwidget_window/qwidget_window.pro
diff --git a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
index f9d705de26..0240bde3e9 100644..100755
--- a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
+++ b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
@@ -52,6 +52,7 @@
#include <qlistwidget.h>
#include <qpushbutton.h>
#include <qboxlayout.h>
+#include <qtabwidget.h>
#include <qlabel.h>
#include <private/qwindow_p.h>
@@ -100,6 +101,8 @@ private slots:
void tst_qtbug35600();
void tst_updateWinId_QTBUG40681();
+ void tst_recreateWindow_QTBUG40817();
+
};
void tst_QWidget_window::initTestCase()
@@ -634,5 +637,37 @@ void tst_QWidget_window::tst_updateWinId_QTBUG40681()
QCOMPARE(lbl->winId(), lbl->windowHandle()->winId());
}
+void tst_QWidget_window::tst_recreateWindow_QTBUG40817()
+{
+ QTabWidget tab;
+
+ QWidget *w = new QWidget;
+ tab.addTab(w, "Tab1");
+ QVBoxLayout *vl = new QVBoxLayout(w);
+ QLabel *lbl = new QLabel("HELLO1");
+ lbl->setObjectName("label1");
+ vl->addWidget(lbl);
+ w = new QWidget;
+ tab.addTab(w, "Tab2");
+ vl = new QVBoxLayout(w);
+ lbl = new QLabel("HELLO2");
+ lbl->setAttribute(Qt::WA_NativeWindow);
+ lbl->setObjectName("label2");
+ vl->addWidget(lbl);
+
+ tab.show();
+
+ QVERIFY(QTest::qWaitForWindowExposed(&tab));
+
+ QWindow *win = tab.windowHandle();
+ win->destroy();
+ QWindowPrivate *p = qt_window_private(win);
+ p->create(true);
+ win->show();
+
+ tab.setCurrentIndex(1);
+}
+
+
QTEST_MAIN(tst_QWidget_window)
#include "tst_qwidget_window.moc"
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
index c7fba1c871..63928db80f 100644
--- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
@@ -4213,6 +4213,7 @@ void tst_QLineEdit::clearButton()
QVERIFY(clearButton);
QCOMPARE(filterModel->rowCount(), 3);
QTest::keyClick(filterLineEdit, 'a');
+ QTRY_COMPARE(clearButton->cursor().shape(), Qt::ArrowCursor);
QTRY_COMPARE(filterModel->rowCount(), 2); // matches 'aa', 'ab'
QTest::keyClick(filterLineEdit, 'b');
QTRY_COMPARE(filterModel->rowCount(), 1); // matches 'ab'
@@ -4220,7 +4221,7 @@ void tst_QLineEdit::clearButton()
const QPoint clearButtonCenterPos = QRect(QPoint(0, 0), clearButton->size()).center();
QTest::mouseClick(clearButton, Qt::LeftButton, 0, clearButtonCenterPos);
QCOMPARE(spyEdited.count(), 1);
- QTest::mouseClick(clearButton, Qt::LeftButton, 0, clearButtonCenterPos);
+ QTRY_COMPARE(clearButton->cursor().shape(), filterLineEdit->cursor().shape());
QTRY_COMPARE(filterModel->rowCount(), 3);
QCoreApplication::processEvents();
QCOMPARE(spyEdited.count(), 1);
@@ -4252,6 +4253,8 @@ void tst_QLineEdit::sideWidgets()
testWidget.move(300, 300);
testWidget.show();
QVERIFY(QTest::qWaitForWindowExposed(&testWidget));
+ foreach (QToolButton *button, lineEdit->findChildren<QToolButton *>())
+ QCOMPARE(button->cursor().shape(), Qt::ArrowCursor);
// Arbitrarily add/remove actions, trying to detect crashes. Add QTRY_VERIFY(false) to view the result.
delete label3Action;
lineEdit->removeAction(label2Action);
diff --git a/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp b/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp
index f88cd634de..2600348998 100644
--- a/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp
+++ b/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp
@@ -46,6 +46,10 @@
#include <QLineEdit>
#include <QVBoxLayout>
#include <QLabel>
+#include <QMainWindow>
+#include <QStatusBar>
+#include <QMdiArea>
+#include <QMdiSubWindow>
static inline Qt::Corner sizeGripCorner(QWidget *parent, QSizeGrip *sizeGrip)
{
@@ -75,6 +79,7 @@ private slots:
void hideAndShowOnWindowStateChange_data();
void hideAndShowOnWindowStateChange();
void orientation();
+ void dontCrashOnTLWChange();
private:
QLineEdit *dummyWidget;
@@ -191,6 +196,26 @@ void tst_QSizeGrip::orientation()
QCOMPARE(sizeGripCorner(&widget, sizeGrip), Qt::TopRightCorner);
}
+void tst_QSizeGrip::dontCrashOnTLWChange()
+{
+ // QTBUG-22867
+ QMdiArea mdiArea;
+ mdiArea.show();
+
+ QMainWindow *mw = new QMainWindow();
+ QMdiSubWindow *mdi = mdiArea.addSubWindow(mw);
+ mw->statusBar()->setSizeGripEnabled(true);
+ mdiArea.removeSubWindow(mw);
+ delete mdi;
+ mw->show();
+
+ // the above setup causes a change of TLW for the size grip,
+ // and it must not crash.
+
+ QVERIFY(QTest::qWaitForWindowExposed(&mdiArea));
+ QVERIFY(QTest::qWaitForWindowExposed(mw));
+}
+
QTEST_MAIN(tst_QSizeGrip)
#include "tst_qsizegrip.moc"
diff --git a/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp b/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp
index 168a17773e..650f189309 100644
--- a/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp
+++ b/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp
@@ -66,6 +66,7 @@ private slots:
void task230994_iconSize();
void task176137_autoRepeatOfAction();
void qtbug_26956_popupTimerDone();
+ void qtbug_34759_sizeHintResetWhenSettingMenu();
protected slots:
void sendMouseClick();
@@ -265,5 +266,32 @@ void tst_QToolButton::qtbug_26956_popupTimerDone()
tb->showMenu();
}
+void tst_QToolButton::qtbug_34759_sizeHintResetWhenSettingMenu()
+{
+ // There is no reliable way of checking what's ultimately a style-dependent
+ // sizing. So the idea is checking if the size is the "correct" size w.r.t.
+ // another toolbutton which has had a menu set before it was shown for the first time
+
+ QToolButton button1;
+ QToolButton button2;
+
+ button1.setToolButtonStyle(Qt::ToolButtonIconOnly);
+ button1.setPopupMode(QToolButton::MenuButtonPopup);
+
+ button2.setToolButtonStyle(Qt::ToolButtonIconOnly);
+ button2.setPopupMode(QToolButton::MenuButtonPopup);
+
+ button2.setMenu(new QMenu(&button2));
+
+ button1.show();
+ button2.show();
+
+ QVERIFY(QTest::qWaitForWindowExposed(&button1));
+ QVERIFY(QTest::qWaitForWindowExposed(&button2));
+
+ button1.setMenu(new QMenu(&button1));
+ QTRY_COMPARE(button1.sizeHint(), button2.sizeHint());
+}
+
QTEST_MAIN(tst_QToolButton)
#include "tst_qtoolbutton.moc"