summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-10-24 12:48:39 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-10-24 12:48:42 +0200
commit840f6a40e6218992b5b9d451ee3c0886a4846c89 (patch)
tree2b808decc7adf5218b810d2de6b45c5a8b4cfc42 /tests/auto/widgets
parent109bf980b37fed405c6c1eb14cb9c83ff897e389 (diff)
parent2e3870fe37d36ccf4bd84eb90e1d5e08ad00c1bc (diff)
Merge remote-tracking branch 'origin/stable' into dev
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp17
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp20
-rw-r--r--tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp4
-rw-r--r--tests/auto/widgets/kernel/qwindowcontainer/tst_qwindowcontainer.cpp62
-rw-r--r--tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp20
-rw-r--r--tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp12
-rw-r--r--tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp27
8 files changed, 152 insertions, 14 deletions
diff --git a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
index 81b69f6b89..8bad4bb176 100644
--- a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
@@ -66,6 +66,8 @@
#include <private/qfilesystemmodel_p.h>
#include <private/qfiledialog_p.h>
#endif
+#include <private/qguiapplication_p.h>
+#include <qpa/qplatformtheme.h>
#include <QFileDialog>
#include <QFileSystemModel>
@@ -145,6 +147,7 @@ private slots:
void clearLineEdit();
void enableChooseButton();
void hooks();
+ void widgetlessNativeDialog();
#ifdef Q_OS_UNIX
#ifdef QT_BUILD_INTERNAL
void tildeExpansion_data();
@@ -1396,6 +1399,20 @@ void tst_QFiledialog::hooks()
QCOMPARE(QFileDialog::getSaveFileUrl(), QUrl("http://saveUrl"));
}
+void tst_QFiledialog::widgetlessNativeDialog()
+{
+ if (!QGuiApplicationPrivate::platformTheme()->usePlatformNativeDialog(QPlatformTheme::FileDialog))
+ QSKIP("This platform always uses widgets to realize its QFileDialog, instead of the native file dialog.");
+ QFileDialog fd;
+ fd.setWindowModality(Qt::ApplicationModal);
+ fd.show();
+ QTRY_VERIFY(fd.isVisible());
+ QFileSystemModel *model = fd.findChild<QFileSystemModel*>("qt_filesystem_model");
+ QVERIFY(!model);
+ QPushButton *button = fd.findChild<QPushButton*>();
+ QVERIFY(!button);
+}
+
#ifdef Q_OS_UNIX
#ifdef QT_BUILD_INTERNAL
void tst_QFiledialog::tildeExpansion_data()
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
index e24a1dfc96..816d375b97 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -115,6 +115,7 @@ private slots:
void sort();
void mkdir();
+ void deleteFile();
void caseSensitivity();
@@ -934,6 +935,25 @@ void tst_QFileSystemModel::mkdir()
QCOMPARE(oldRow, idx.row());
}
+void tst_QFileSystemModel::deleteFile()
+{
+ QString newFilePath = QDir::temp().filePath("NewFileDeleteTest");
+ QFile newFile(newFilePath);
+ if (newFile.exists()) {
+ if (!newFile.remove())
+ qWarning() << "unable to remove" << newFilePath;
+ QTest::qWait(WAITTIME);
+ }
+ if (!newFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
+ qWarning() << "unable to create" << newFilePath;
+ }
+ newFile.close();
+ QModelIndex idx = model->index(newFilePath);
+ QVERIFY(idx.isValid());
+ QVERIFY(model->remove(idx));
+ QVERIFY(!newFile.exists());
+}
+
void tst_QFileSystemModel::caseSensitivity()
{
QString tmp = flatDirTestPath;
diff --git a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
index c240b5eb35..4506d0af14 100644
--- a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
+++ b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
@@ -439,7 +439,7 @@ void tst_QWizard::setPixmap()
QVERIFY(wizard.pixmap(QWizard::BannerPixmap).isNull());
QVERIFY(wizard.pixmap(QWizard::LogoPixmap).isNull());
QVERIFY(wizard.pixmap(QWizard::WatermarkPixmap).isNull());
-#ifdef Q_OS_MACX
+#ifdef Q_OS_OSX
QVERIFY(wizard.pixmap(QWizard::BackgroundPixmap).isNull() == false);
#else
QVERIFY(wizard.pixmap(QWizard::BackgroundPixmap).isNull());
@@ -448,7 +448,7 @@ void tst_QWizard::setPixmap()
QVERIFY(page->pixmap(QWizard::BannerPixmap).isNull());
QVERIFY(page->pixmap(QWizard::LogoPixmap).isNull());
QVERIFY(page->pixmap(QWizard::WatermarkPixmap).isNull());
-#ifdef Q_OS_MACX
+#ifdef Q_OS_OSX
QVERIFY(wizard.pixmap(QWizard::BackgroundPixmap).isNull() == false);
#else
QVERIFY(page->pixmap(QWizard::BackgroundPixmap).isNull());
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index 70cfbc8856..4f25aab32a 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -5089,6 +5089,10 @@ public:
void tst_QGraphicsItem::paint()
{
+#ifdef Q_OS_MACX
+ if (QSysInfo::MacintoshVersion == QSysInfo::MV_10_7)
+ QSKIP("QTBUG-31454 - Unstable auto-test");
+#endif
QGraphicsScene scene;
PaintTester paintTester;
diff --git a/tests/auto/widgets/kernel/qwindowcontainer/tst_qwindowcontainer.cpp b/tests/auto/widgets/kernel/qwindowcontainer/tst_qwindowcontainer.cpp
index 2d9cb98e27..c17a03e058 100644
--- a/tests/auto/widgets/kernel/qwindowcontainer/tst_qwindowcontainer.cpp
+++ b/tests/auto/widgets/kernel/qwindowcontainer/tst_qwindowcontainer.cpp
@@ -68,8 +68,6 @@ public:
int numberOfObscures;
};
-
-
class tst_QWindowContainer: public QObject
{
Q_OBJECT
@@ -81,6 +79,7 @@ private slots:
void testBehindTheScenesDeletion();
void testUnparenting();
void testActivation();
+ void testAncestorChange();
};
@@ -188,6 +187,7 @@ void tst_QWindowContainer::testActivation()
root.show();
root.activateWindow();
+ QVERIFY(QTest::qWaitForWindowExposed(&root));
QVERIFY(QTest::qWaitForWindowActive(root.windowHandle()));
QVERIFY(QGuiApplication::focusWindow() == root.windowHandle());
@@ -204,8 +204,7 @@ void tst_QWindowContainer::testActivation()
QTest::qWait(100);
window->requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(window));
- QVERIFY(QGuiApplication::focusWindow() == window);
+ QTRY_VERIFY(QGuiApplication::focusWindow() == window);
// Verify that all states in the root widget still indicate it is active
QVERIFY(root.windowHandle()->isActive());
@@ -231,6 +230,61 @@ void tst_QWindowContainer::testUnparenting()
QVERIFY(!window->isVisible());
}
+void tst_QWindowContainer::testAncestorChange()
+{
+ QWidget root;
+ QWidget *left = new QWidget(&root);
+ QWidget *right = new QWidget(&root);
+
+ root.setGeometry(0, 0, 200, 100);
+ left->setGeometry(0, 0, 100, 100);
+ right->setGeometry(100, 0, 100, 100);
+
+ QWindow *window = new QWindow();
+ QWidget *container = QWidget::createWindowContainer(window, left);
+ container->setGeometry(0, 0, 100, 100);
+
+ // Root
+ // + left
+ // | + container
+ // | + window
+ // + right
+ root.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&root));
+ QCOMPARE(window->geometry(), QRect(0, 0, 100, 100));
+
+ container->setParent(right);
+ // Root
+ // + left
+ // + right
+ // + container
+ // + window
+ QCOMPARE(window->geometry(), QRect(100, 0, 100, 100));
+
+ QWidget *newRoot = new QWidget(&root);
+ newRoot->setGeometry(50, 50, 200, 200);
+ right->setParent(newRoot);
+ // Root
+ // + left
+ // + newRoot
+ // + right
+ // + container
+ // + window
+ QCOMPARE(window->geometry(), QRect(150, 50, 100, 100));
+ newRoot->move(0, 0);
+ QCOMPARE(window->geometry(), QRect(100, 0, 100, 100));
+
+ newRoot->setParent(0);
+ newRoot->setGeometry(100, 100, 200, 200);
+ newRoot->show();
+ QVERIFY(QTest::qWaitForWindowExposed(newRoot));
+ // newRoot
+ // + right
+ // + container
+ // + window
+ QCOMPARE(window->geometry(), QRect(100, 0, 100, 100));
+}
+
QTEST_MAIN(tst_QWindowContainer)
#include "tst_qwindowcontainer.moc"
diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
index 4631154230..eabb7aaa17 100644
--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
@@ -2587,6 +2587,18 @@ void tst_QComboBox::resetModel()
}
+static inline void centerCursor(const QWidget *w)
+{
+#ifndef QT_NO_CURSOR
+ // Force cursor movement to prevent QCursor::setPos() from returning prematurely on QPA:
+ const QPoint target(w->mapToGlobal(w->rect().center()));
+ QCursor::setPos(QPoint(target.x() + 1, target.y()));
+ QCursor::setPos(target);
+#else // !QT_NO_CURSOR
+ Q_UNUSED(w)
+#endif
+}
+
void tst_QComboBox::keyBoardNavigationWithMouse()
{
QComboBox combo;
@@ -2597,6 +2609,7 @@ void tst_QComboBox::keyBoardNavigationWithMouse()
combo.addItem( QString::number(i));
combo.show();
+ centerCursor(&combo); // QTBUG-33973, cursor needs to be within view from start on Mac.
QApplication::setActiveWindow(&combo);
QVERIFY(QTest::qWaitForWindowActive(&combo));
QCOMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&combo));
@@ -2617,10 +2630,7 @@ void tst_QComboBox::keyBoardNavigationWithMouse()
// When calling cursor function, Windows CE responds with: This function is not supported on this system.
#ifndef Q_OS_WINCE
// Force cursor movement to prevent QCursor::setPos() from returning prematurely on QPA:
- const QPoint target(combo.view()->mapToGlobal(combo.view()->rect().center()));
- QCursor::setPos(QPoint(target.x() + 1, target.y()));
- QCursor::setPos(target);
-
+ centerCursor(combo.view());
QTest::qWait(200);
#define GET_SELECTION(SEL) \
@@ -2632,7 +2642,7 @@ void tst_QComboBox::keyBoardNavigationWithMouse()
GET_SELECTION(selection);
//since we moved the mouse is in the middle it should even be around 5;
- QVERIFY(selection > 3);
+ QVERIFY2(selection > 3, (QByteArrayLiteral("selection=") + QByteArray::number(selection)).constData());
static const int final = 40;
for (int i = selection + 1; i <= final; i++)
diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
index 3c32b8a476..7c1bb957d6 100644
--- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
+++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
@@ -764,14 +764,20 @@ void tst_QMenu::task258920_mouseBorder()
menu.setMouseTracking(true);
QAction *action = menu.addAction("test");
- menu.popup(QApplication::desktop()->availableGeometry().center());
+ const QPoint center = QApplication::desktop()->availableGeometry().center();
+#ifndef QT_NO_CURSOR
+ QCursor::setPos(center - QPoint(100, 100)); // Mac: Ensure cursor is outside
+#endif
+ menu.popup(center);
QVERIFY(QTest::qWaitForWindowExposed(&menu));
QTest::qWait(100);
QRect actionRect = menu.actionGeometry(action);
- QTest::mouseMove(&menu, actionRect.center());
+ const QPoint actionCenter = actionRect.center();
+ QTest::mouseMove(&menu, actionCenter - QPoint(-10, 0));
QTest::qWait(30);
- QTest::mouseMove(&menu, actionRect.center() + QPoint(10, 0));
+ QTest::mouseMove(&menu, actionCenter);
QTest::qWait(30);
+ QTest::mouseMove(&menu, actionCenter + QPoint(10, 0));
QTRY_COMPARE(action, menu.activeAction());
menu.painted = false;
QTest::mouseMove(&menu, QPoint(actionRect.center().x(), actionRect.bottom() + 1));
diff --git a/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp b/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp
index 3bdf583153..a301d51c4c 100644
--- a/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp
+++ b/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp
@@ -74,6 +74,7 @@ private slots:
void task194017_hiddenWidget();
void QTBUG4334_hiddenOnMaximizedWindow();
void QTBUG25492_msgtimeout();
+ void messageChangedSignal();
private:
QStatusBar *testWidget;
@@ -95,6 +96,8 @@ void tst_QStatusBar::init()
QWidget *item1 = new QWidget(testWidget);
testWidget->addWidget(item1);
+ // currentMessage needs to be null as the code relies on this
+ currentMessage = QString();
}
void tst_QStatusBar::cleanup()
@@ -316,6 +319,30 @@ void tst_QStatusBar::QTBUG25492_msgtimeout()
QCOMPARE(testWidget->currentMessage(), currentMessage);
}
+void tst_QStatusBar::messageChangedSignal()
+{
+ QVERIFY(testWidget->currentMessage().isNull());
+ QVERIFY(currentMessage.isNull());
+ testWidget->show();
+
+ QSignalSpy spy(testWidget, SIGNAL(messageChanged(QString)));
+ testWidget->showMessage("Ready", 0);
+ QCOMPARE(testWidget->currentMessage(), QString("Ready"));
+ QCOMPARE(testWidget->currentMessage(), currentMessage);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.takeFirst().at(0).toString(), currentMessage);
+ testWidget->clearMessage();
+ QCOMPARE(testWidget->currentMessage(), QString());
+ QCOMPARE(testWidget->currentMessage(), currentMessage);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.takeFirst().at(0).toString(), currentMessage);
+ testWidget->showMessage("Ready", 0);
+ testWidget->showMessage("Ready", 0);
+ QCOMPARE(testWidget->currentMessage(), QString("Ready"));
+ QCOMPARE(testWidget->currentMessage(), currentMessage);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.takeFirst().at(0).toString(), currentMessage);
+}
QTEST_MAIN(tst_QStatusBar)
#include "tst_qstatusbar.moc"