diff options
Diffstat (limited to 'tests/auto/gui')
7 files changed, 181 insertions, 36 deletions
diff --git a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp index 1918841d24..6a7ce66bd7 100644 --- a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp +++ b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp @@ -439,12 +439,7 @@ void tst_QPixmap::fill_data() QTest::newRow(QString("syscolor_%1").arg(color).toLatin1()) << uint(color) << true << false; -#ifdef Q_WS_QWS - if (QScreen::instance()->depth() >= 24) { -#elif defined (Q_WS_X11) - QPixmap pm(1, 1); - if (pm.x11PictureHandle()) { -#elif defined (Q_OS_WINCE) +#if defined (Q_OS_WINCE) QPixmap pixmap(1,1); if (QApplication::desktop()->grab().depth() >= 24) { #else diff --git a/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp b/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp index ca6d2b0585..7949e13a71 100644 --- a/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp +++ b/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp @@ -150,59 +150,59 @@ void tst_QStandardItem::getSetData() QString text = QString("text %0").arg(i); item.setText(text); QCOMPARE(item.text(), text); - + QPixmap pixmap(32, 32); pixmap.fill((i == 1) ? Qt::red : Qt::green); QIcon icon(pixmap); item.setIcon(icon); QCOMPARE(item.icon(), icon); - + QString toolTip = QString("toolTip %0").arg(i); item.setToolTip(toolTip); QCOMPARE(item.toolTip(), toolTip); - + QString statusTip = QString("statusTip %0").arg(i); item.setStatusTip(statusTip); QCOMPARE(item.statusTip(), statusTip); - + QString whatsThis = QString("whatsThis %0").arg(i); item.setWhatsThis(whatsThis); QCOMPARE(item.whatsThis(), whatsThis); - + QSize sizeHint(64*i, 48*i); item.setSizeHint(sizeHint); QCOMPARE(item.sizeHint(), sizeHint); - + QFont font; item.setFont(font); QCOMPARE(item.font(), font); - + Qt::Alignment textAlignment((i == 1) ? Qt::AlignLeft|Qt::AlignVCenter : Qt::AlignRight); item.setTextAlignment(textAlignment); QCOMPARE(item.textAlignment(), textAlignment); - + QColor backgroundColor((i == 1) ? Qt::blue : Qt::yellow); item.setBackground(backgroundColor); QCOMPARE(item.background().color(), backgroundColor); - + QColor textColor((i == i) ? Qt::green : Qt::cyan); item.setForeground(textColor); QCOMPARE(item.foreground().color(), textColor); - + Qt::CheckState checkState((i == 1) ? Qt::PartiallyChecked : Qt::Checked); item.setCheckState(checkState); QCOMPARE(item.checkState(), checkState); - + QString accessibleText = QString("accessibleText %0").arg(i); item.setAccessibleText(accessibleText); QCOMPARE(item.accessibleText(), accessibleText); - + QString accessibleDescription = QString("accessibleDescription %0").arg(i); item.setAccessibleDescription(accessibleDescription); QCOMPARE(item.accessibleDescription(), accessibleDescription); - + QCOMPARE(item.text(), text); QCOMPARE(item.icon(), icon); QCOMPARE(item.toolTip(), toolTip); @@ -216,7 +216,7 @@ void tst_QStandardItem::getSetData() QCOMPARE(item.checkState(), checkState); QCOMPARE(item.accessibleText(), accessibleText); QCOMPARE(item.accessibleDescription(), accessibleDescription); - + QCOMPARE(qvariant_cast<QString>(item.data(Qt::DisplayRole)), text); QCOMPARE(qvariant_cast<QIcon>(item.data(Qt::DecorationRole)), icon); QCOMPARE(qvariant_cast<QString>(item.data(Qt::ToolTipRole)), toolTip); @@ -250,7 +250,7 @@ void tst_QStandardItem::getSetData() item.setData(QVariant(), Qt::CheckStateRole); item.setData(QVariant(), Qt::AccessibleTextRole); item.setData(QVariant(), Qt::AccessibleDescriptionRole); - + QCOMPARE(item.data(Qt::DisplayRole), QVariant()); QCOMPARE(item.data(Qt::DecorationRole), QVariant()); QCOMPARE(item.data(Qt::ToolTipRole), QVariant()); @@ -296,7 +296,7 @@ void tst_QStandardItem::getSetFlags() QVERIFY(item.isDropEnabled()); QVERIFY(item.flags() & Qt::ItemIsDropEnabled); #endif - + QVERIFY(item.isEnabled()); item.setEnabled(false); QVERIFY(!item.isEnabled()); @@ -332,7 +332,7 @@ void tst_QStandardItem::getSetFlags() item.setCheckState(Qt::Checked); item.setCheckable(true); QCOMPARE(item.checkState(), Qt::Checked); -} +} void tst_QStandardItem::getSetRowAndColumnCount() { @@ -427,7 +427,7 @@ void tst_QStandardItem::parent() QCOMPARE(child->parent(), static_cast<QStandardItem*>(0)); item.setChild(0, 0, child); QCOMPARE(child->parent(), &item); - + QStandardItem *childOfChild = new QStandardItem; child->setChild(0, 0, childOfChild); QCOMPARE(childOfChild->parent(), child); @@ -897,7 +897,7 @@ void tst_QStandardItem::takeRow() void tst_QStandardItem::streamItem() { QStandardItem item; - + item.setText(QLatin1String("text")); item.setToolTip(QLatin1String("toolTip")); item.setStatusTip(QLatin1String("statusTip")); @@ -1006,7 +1006,7 @@ void tst_QStandardItem::sortChildren() two->appendRow(new QStandardItem(QLatin1String("e"))); item->appendRow(one); item->appendRow(two); - + QSignalSpy layoutAboutToBeChangedSpy( model, SIGNAL(layoutAboutToBeChanged())); QSignalSpy layoutChangedSpy( @@ -1021,7 +1021,7 @@ void tst_QStandardItem::sortChildren() QCOMPARE(two->child(0)->text(), QLatin1String("f")); QCOMPARE(two->child(1)->text(), QLatin1String("d")); QCOMPARE(two->child(2)->text(), QLatin1String("e")); - + two->sortChildren(0, Qt::AscendingOrder); // verify sorted QCOMPARE(two->child(0)->text(), QLatin1String("d")); @@ -1031,7 +1031,7 @@ void tst_QStandardItem::sortChildren() QCOMPARE(one->child(0)->text(), QLatin1String("c")); QCOMPARE(one->child(1)->text(), QLatin1String("b")); QCOMPARE(one->child(2)->text(), QLatin1String("a")); - + item->sortChildren(0, Qt::AscendingOrder); // verify everything sorted QCOMPARE(one->child(0)->text(), QLatin1String("a")); diff --git a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp index cc291f72fa..a7c38d6664 100644 --- a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp +++ b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp @@ -336,12 +336,11 @@ class BlockableWindow : public QWindow Q_OBJECT public: int blocked; + int leaves; + int enters; inline BlockableWindow() - : QWindow() - { - blocked = false; - } + : QWindow(), blocked(false), enters(0), leaves(0) {} bool event(QEvent *e) { @@ -352,11 +351,23 @@ public: case QEvent::WindowUnblocked: --blocked; break; + case QEvent::Leave: + leaves++; + break; + case QEvent::Enter: + enters++; + break; default: break; } return QWindow::event(e); } + + void resetCounts() + { + leaves = 0; + enters = 0; + } }; void tst_QGuiApplication::modalWindow() @@ -391,6 +402,12 @@ void tst_QGuiApplication::modalWindow() QCOMPARE(windowModalWindow2->blocked, 0); QCOMPARE(applicationModalWindow1->blocked, 0); + // enter mouse in window1 + QWindowSystemInterface::handleEnterEvent(window1); + QGuiApplication::processEvents(); + QCOMPARE(window1->enters, 1); + QCOMPARE(window1->leaves, 0); + // show applicationModalWindow1, everything is blocked applicationModalWindow1->show(); QCOMPARE(app.modalWindow(), applicationModalWindow1); @@ -400,6 +417,24 @@ void tst_QGuiApplication::modalWindow() QCOMPARE(windowModalWindow2->blocked, 1); QCOMPARE(applicationModalWindow1->blocked, 0); + // opening modal causes leave for previously entered window, but not others + QGuiApplication::processEvents(); + QCOMPARE(window1->enters, 1); + QCOMPARE(window1->leaves, 1); + QCOMPARE(window2->enters, 0); + QCOMPARE(window2->leaves, 0); + QCOMPARE(applicationModalWindow1->enters, 0); + QCOMPARE(applicationModalWindow1->leaves, 0); + window1->resetCounts(); + + // Try entering/leaving blocked window2 - no events should reach it + QWindowSystemInterface::handleEnterEvent(window2); + QGuiApplication::processEvents(); + QWindowSystemInterface::handleLeaveEvent(window2); + QGuiApplication::processEvents(); + QCOMPARE(window2->enters, 0); + QCOMPARE(window2->leaves, 0); + // everything is unblocked when applicationModalWindow1 is hidden applicationModalWindow1->hide(); QCOMPARE(app.modalWindow(), static_cast<QWindow *>(0)); @@ -409,6 +444,12 @@ void tst_QGuiApplication::modalWindow() QCOMPARE(windowModalWindow2->blocked, 0); QCOMPARE(applicationModalWindow1->blocked, 0); + // Enter window2 - should not be blocked + QWindowSystemInterface::handleEnterEvent(window2); + QGuiApplication::processEvents(); + QCOMPARE(window2->enters, 1); + QCOMPARE(window2->leaves, 0); + // show the windowModalWindow1, only window1 is blocked windowModalWindow1->show(); QCOMPARE(app.modalWindow(), windowModalWindow1); @@ -418,6 +459,15 @@ void tst_QGuiApplication::modalWindow() QCOMPARE(windowModalWindow2->blocked, 0); QCOMPARE(applicationModalWindow1->blocked, 0); + // opening window modal window doesn't cause leave for unblocked window + QGuiApplication::processEvents(); + QCOMPARE(window1->enters, 0); + QCOMPARE(window1->leaves, 0); + QCOMPARE(window2->enters, 1); + QCOMPARE(window2->leaves, 0); + QCOMPARE(windowModalWindow1->enters, 0); + QCOMPARE(windowModalWindow1->leaves, 0); + // show the windowModalWindow2, windowModalWindow1 is blocked as well windowModalWindow2->show(); QCOMPARE(app.modalWindow(), windowModalWindow2); @@ -472,6 +522,17 @@ void tst_QGuiApplication::modalWindow() QCOMPARE(windowModalWindow2->blocked, 1); QCOMPARE(applicationModalWindow1->blocked, 0); + // window2 gets finally the leave + QGuiApplication::processEvents(); + QCOMPARE(window1->enters, 0); + QCOMPARE(window1->leaves, 0); + QCOMPARE(window2->enters, 1); + QCOMPARE(window2->leaves, 1); + QCOMPARE(windowModalWindow1->enters, 0); + QCOMPARE(windowModalWindow1->leaves, 0); + QCOMPARE(applicationModalWindow1->enters, 0); + QCOMPARE(applicationModalWindow1->leaves, 0); + // hide applicationModalWindow1, windowModalWindow1 and window1 are blocked applicationModalWindow1->hide(); QCOMPARE(app.modalWindow(), windowModalWindow2); diff --git a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp index 84ba1f4fdf..f85e48022a 100644 --- a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp +++ b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp @@ -67,6 +67,7 @@ private slots: void touchCancel(); void touchCancelWithTouchToMouse(); void orientation(); + void sizes(); void close(); void activateAndClose(); void mouseEventSequence(); @@ -739,6 +740,58 @@ void tst_QWindow::orientation() QCOMPARE(spy.count(), 1); } +void tst_QWindow::sizes() +{ + QWindow window; + + QSignalSpy minimumWidthSpy(&window, SIGNAL(minimumWidthChanged(int))); + QSignalSpy minimumHeightSpy(&window, SIGNAL(minimumHeightChanged(int))); + QSignalSpy maximumWidthSpy(&window, SIGNAL(maximumWidthChanged(int))); + QSignalSpy maximumHeightSpy(&window, SIGNAL(maximumHeightChanged(int))); + + QSize oldMaximum = window.maximumSize(); + + window.setMinimumWidth(10); + QCOMPARE(window.minimumWidth(), 10); + QCOMPARE(window.minimumHeight(), 0); + QCOMPARE(window.minimumSize(), QSize(10, 0)); + QCOMPARE(window.maximumSize(), oldMaximum); + QCOMPARE(minimumWidthSpy.count(), 1); + QCOMPARE(minimumHeightSpy.count(), 0); + QCOMPARE(maximumWidthSpy.count(), 0); + QCOMPARE(maximumHeightSpy.count(), 0); + + window.setMinimumHeight(10); + QCOMPARE(window.minimumWidth(), 10); + QCOMPARE(window.minimumHeight(), 10); + QCOMPARE(window.minimumSize(), QSize(10, 10)); + QCOMPARE(window.maximumSize(), oldMaximum); + QCOMPARE(minimumWidthSpy.count(), 1); + QCOMPARE(minimumHeightSpy.count(), 1); + QCOMPARE(maximumWidthSpy.count(), 0); + QCOMPARE(maximumHeightSpy.count(), 0); + + window.setMaximumWidth(100); + QCOMPARE(window.maximumWidth(), 100); + QCOMPARE(window.maximumHeight(), oldMaximum.height()); + QCOMPARE(window.minimumSize(), QSize(10, 10)); + QCOMPARE(window.maximumSize(), QSize(100, oldMaximum.height())); + QCOMPARE(minimumWidthSpy.count(), 1); + QCOMPARE(minimumHeightSpy.count(), 1); + QCOMPARE(maximumWidthSpy.count(), 1); + QCOMPARE(maximumHeightSpy.count(), 0); + + window.setMaximumHeight(100); + QCOMPARE(window.maximumWidth(), 100); + QCOMPARE(window.maximumHeight(), 100); + QCOMPARE(window.minimumSize(), QSize(10, 10)); + QCOMPARE(window.maximumSize(), QSize(100, 100)); + QCOMPARE(minimumWidthSpy.count(), 1); + QCOMPARE(minimumHeightSpy.count(), 1); + QCOMPARE(maximumWidthSpy.count(), 1); + QCOMPARE(maximumHeightSpy.count(), 1); +} + void tst_QWindow::close() { QWindow a; diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp index 09180b3de9..be3e68ad38 100644 --- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp +++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp @@ -231,7 +231,9 @@ private slots: void drawRect_task215378(); void drawRect_task247505(); +#if defined(Q_OS_MAC) void drawText_subPixelPositionsInRaster_qtbug5053(); +#endif void drawImage_data(); void drawImage(); @@ -4178,11 +4180,10 @@ void tst_QPainter::clipBoundingRect() } +#if defined(Q_OS_MAC) +// Only Mac supports sub pixel positions in raster engine currently void tst_QPainter::drawText_subPixelPositionsInRaster_qtbug5053() { -#if !defined(Q_OS_MAC) - QSKIP("Only Mac supports sub pixel positions in raster engine currently"); -#endif QFontMetricsF fm(qApp->font()); QImage baseLine(fm.width(QChar::fromLatin1('e')), fm.height(), QImage::Format_RGB32); @@ -4212,6 +4213,7 @@ void tst_QPainter::drawText_subPixelPositionsInRaster_qtbug5053() QVERIFY(foundDifferentRasterization); } +#endif void tst_QPainter::drawPointScaled() { diff --git a/tests/auto/gui/text/qfontmetrics/qfontmetrics.pro b/tests/auto/gui/text/qfontmetrics/qfontmetrics.pro index ef08458c56..88436f6a0e 100644 --- a/tests/auto/gui/text/qfontmetrics/qfontmetrics.pro +++ b/tests/auto/gui/text/qfontmetrics/qfontmetrics.pro @@ -1,7 +1,7 @@ CONFIG += testcase CONFIG += parallel_test TARGET = tst_qfontmetrics -QT += testlib +QT += testlib core-private gui-private SOURCES += tst_qfontmetrics.cpp RESOURCES += testfont.qrc DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp index 4f502ae5f2..b457e17b48 100644 --- a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp +++ b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp @@ -44,6 +44,7 @@ #include <qfont.h> #include <qfontmetrics.h> #include <qfontdatabase.h> +#include <private/qfontengine_p.h> #include <qstringlist.h> #include <qlist.h> @@ -279,6 +280,39 @@ void tst_QFontMetrics::inFontUcs4() QVERIFY(fm.inFontUcs4(0x1D7FF)); } + { + QFontEngine *engine = QFontPrivate::get(font)->engineForScript(QUnicodeTables::Common); + QGlyphLayout glyphs; + glyphs.numGlyphs = 3; + uint buf[3]; + glyphs.glyphs = buf; + + QString string; + { + string.append(QChar::highSurrogate(0x1D7FF)); + string.append(QChar::lowSurrogate(0x1D7FF)); + + glyphs.numGlyphs = 3; + glyphs.glyphs[0] = 0; + QVERIFY(engine->stringToCMap(string.constData(), string.size(), + &glyphs, &glyphs.numGlyphs, + QFontEngine::GlyphIndicesOnly)); + QCOMPARE(glyphs.numGlyphs, 1); + QCOMPARE(glyphs.glyphs[0], uint(1)); + } + { + string.clear(); + string.append(QChar::ObjectReplacementCharacter); + + glyphs.numGlyphs = 3; + glyphs.glyphs[0] = 0; + QVERIFY(engine->stringToCMap(string.constData(), string.size(), + &glyphs, &glyphs.numGlyphs, + QFontEngine::GlyphIndicesOnly)); + QVERIFY(glyphs.glyphs[0] != 1); + } + } + QFontDatabase::removeApplicationFont(id); } |