Revive tst_qstylesheetstyle on Desktop platforms.
Task-number: QTBUG-21468 Change-Id: I37f741d9709b17ad31b01078e10538f0f6bff01a Reviewed-by: Liang Qi <liang.qi@digia.com>bb10
parent
f230223aef
commit
ca17c06294
|
|
@ -49,6 +49,12 @@
|
|||
|
||||
#include "../../../qtest-config.h"
|
||||
|
||||
static inline void centerOnScreen(QWidget *w)
|
||||
{
|
||||
const QPoint offset = QPoint(w->width() / 2, w->height() / 2);
|
||||
w->move(QGuiApplication::primaryScreen()->availableGeometry().center() - offset);
|
||||
}
|
||||
|
||||
class tst_QStyleSheetStyle : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
@ -142,6 +148,8 @@ tst_QStyleSheetStyle::~tst_QStyleSheetStyle()
|
|||
void tst_QStyleSheetStyle::numinstances()
|
||||
{
|
||||
QWidget w;
|
||||
w.resize(200, 200);
|
||||
centerOnScreen(&w);
|
||||
QCommonStyle *style = new QCommonStyle;
|
||||
style->setParent(&w);
|
||||
QWidget c(&w);
|
||||
|
|
@ -531,7 +539,14 @@ void tst_QStyleSheetStyle::dynamicProperty()
|
|||
qApp->setStyleSheet(QString());
|
||||
|
||||
QString appStyle = qApp->style()->metaObject()->className();
|
||||
QPushButton pb1, pb2;
|
||||
QPushButton pb1(QStringLiteral("dynamicProperty_pb1"));
|
||||
pb1.setMinimumWidth(160);
|
||||
pb1.move(QGuiApplication::primaryScreen()->availableGeometry().topLeft() + QPoint(20, 100));
|
||||
|
||||
QPushButton pb2(QStringLiteral("dynamicProperty_pb2"));
|
||||
pb2.setMinimumWidth(160);
|
||||
pb2.move(QGuiApplication::primaryScreen()->availableGeometry().topLeft() + QPoint(20, 200));
|
||||
|
||||
pb1.setProperty("type", "critical");
|
||||
qApp->setStyleSheet("*[class~=\"QPushButton\"] { color: red; } *[type=\"critical\"] { background: white; }");
|
||||
QVERIFY(COLOR(pb1) == Qt::red);
|
||||
|
|
@ -675,6 +690,8 @@ void tst_QStyleSheetStyle::onWidgetDestroyed()
|
|||
void tst_QStyleSheetStyle::fontPrecedence()
|
||||
{
|
||||
QLineEdit edit;
|
||||
edit.setMinimumWidth(200);
|
||||
centerOnScreen(&edit);
|
||||
edit.show();
|
||||
QFont font;
|
||||
QVERIFY(FONTSIZE(edit) != 22); // Sanity check to make sure this test makes sense.
|
||||
|
|
@ -737,8 +754,9 @@ void tst_QStyleSheetStyle::focusColors()
|
|||
// ten pixels of the right color requires quite a many characters, as the
|
||||
// majority of the pixels will have slightly different colors due to the
|
||||
// anti-aliasing effect.
|
||||
#if !defined(Q_OS_WIN32) && !defined(Q_OS_MAC) && !(defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(Q_CC_INTEL))
|
||||
QSKIP("This is a fragile test which fails on many esoteric platforms because of focus problems. "
|
||||
#if !defined(Q_OS_WIN32) && !(defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(Q_CC_INTEL))
|
||||
QSKIP("This is a fragile test which fails on many esoteric platforms because of focus problems"
|
||||
" (for example, QTBUG-33959)."
|
||||
"That doesn't mean that the feature doesn't work in practice.");
|
||||
#endif
|
||||
QList<QWidget *> widgets;
|
||||
|
|
@ -768,6 +786,7 @@ void tst_QStyleSheetStyle::focusColors()
|
|||
layout->addWidget(widget);
|
||||
frame.setLayout(layout);
|
||||
|
||||
centerOnScreen(&frame);
|
||||
frame.show();
|
||||
QApplication::setActiveWindow(&frame);
|
||||
QVERIFY(QTest::qWaitForWindowActive(&frame));
|
||||
|
|
@ -795,6 +814,9 @@ void tst_QStyleSheetStyle::focusColors()
|
|||
#ifndef QTEST_NO_CURSOR
|
||||
void tst_QStyleSheetStyle::hoverColors()
|
||||
{
|
||||
#ifdef Q_OS_OSX
|
||||
QSKIP("This test is fragile on Mac, most likely due to QTBUG-33959.");
|
||||
#endif
|
||||
QList<QWidget *> widgets;
|
||||
widgets << new QPushButton("TESTING TESTING");
|
||||
widgets << new QLineEdit("TESTING TESTING");
|
||||
|
|
@ -822,15 +844,15 @@ void tst_QStyleSheetStyle::hoverColors()
|
|||
layout->addWidget(widget);
|
||||
frame.setLayout(layout);
|
||||
|
||||
centerOnScreen(&frame);
|
||||
frame.show();
|
||||
|
||||
QApplication::setActiveWindow(&frame);
|
||||
QVERIFY(QTest::qWaitForWindowActive(&frame));
|
||||
//move the mouse inside the widget, it should be colored
|
||||
QTest::mouseMove ( widget, QPoint(6,6));
|
||||
QTest::qWait(60);
|
||||
|
||||
QVERIFY(widget->testAttribute(Qt::WA_UnderMouse));
|
||||
QTRY_VERIFY(widget->testAttribute(Qt::WA_UnderMouse));
|
||||
|
||||
QImage image(frame.width(), frame.height(), QImage::Format_ARGB32);
|
||||
frame.render(&image);
|
||||
|
|
@ -857,9 +879,7 @@ void tst_QStyleSheetStyle::hoverColors()
|
|||
|
||||
//move the mouse again inside the widget, it should be colored
|
||||
QTest::mouseMove (widget, QPoint(5,5));
|
||||
QTest::qWait(60);
|
||||
|
||||
QVERIFY(widget->testAttribute(Qt::WA_UnderMouse));
|
||||
QTRY_VERIFY(widget->testAttribute(Qt::WA_UnderMouse));
|
||||
|
||||
frame.render(&image);
|
||||
|
||||
|
|
@ -895,35 +915,47 @@ public:
|
|||
|
||||
void tst_QStyleSheetStyle::background()
|
||||
{
|
||||
const int number = 4;
|
||||
QWidget* widgets[number];
|
||||
typedef QSharedPointer<QWidget> WidgetPtr;
|
||||
|
||||
const QString styleSheet = QStringLiteral("* { background-color: #e8ff66; }");
|
||||
QVector<WidgetPtr> widgets;
|
||||
const QPoint topLeft = QGuiApplication::primaryScreen()->availableGeometry().topLeft();
|
||||
// Testing inheritance styling of QDialog.
|
||||
widgets[0] = new SingleInheritanceDialog;
|
||||
widgets[0]->setStyleSheet("* { background-color: #e8ff66; }");
|
||||
widgets[1] = new DoubleInheritanceDialog;
|
||||
widgets[1]->setStyleSheet("* { background-color: #e8ff66; }");
|
||||
WidgetPtr toplevel(new SingleInheritanceDialog);
|
||||
toplevel->resize(200, 200);
|
||||
toplevel->move(topLeft + QPoint(20, 20));
|
||||
toplevel->setStyleSheet(styleSheet);
|
||||
widgets.append(toplevel);
|
||||
|
||||
toplevel = WidgetPtr(new DoubleInheritanceDialog);
|
||||
toplevel->resize(200, 200);
|
||||
toplevel->move(topLeft + QPoint(20, 320));
|
||||
toplevel->setStyleSheet(styleSheet);
|
||||
widgets.append(toplevel);
|
||||
|
||||
// Testing gradients in QComboBox.
|
||||
QLayout* layout;
|
||||
QComboBox* cb;
|
||||
// First color
|
||||
widgets[2] = new QDialog;
|
||||
layout = new QGridLayout;
|
||||
cb = new QComboBox;
|
||||
toplevel = WidgetPtr(new QDialog);
|
||||
toplevel->move(topLeft + QPoint(320, 20));
|
||||
QGridLayout *layout = new QGridLayout(toplevel.data());
|
||||
QComboBox* cb = new QComboBox;
|
||||
cb->setMinimumWidth(160);
|
||||
cb->setStyleSheet("* { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop:0 #e8ff66, stop:1 #000000); }");
|
||||
layout->addWidget(cb);
|
||||
widgets[2]->setLayout(layout);
|
||||
layout->addWidget(cb, 0, 0);
|
||||
widgets.append(toplevel);
|
||||
// Second color
|
||||
widgets[3] = new QDialog;
|
||||
layout = new QGridLayout;
|
||||
toplevel = WidgetPtr(new QDialog);
|
||||
toplevel->move(topLeft + QPoint(320, 320));
|
||||
layout = new QGridLayout(toplevel.data());
|
||||
cb = new QComboBox;
|
||||
cb->setMinimumWidth(160);
|
||||
cb->setStyleSheet("* { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop:0 #e8ff66, stop:1 #000000); }");
|
||||
layout->addWidget(cb);
|
||||
widgets[3]->setLayout(layout);
|
||||
|
||||
for (int c = 0; c < number; ++c) {
|
||||
QWidget* widget = widgets[c];
|
||||
layout->addWidget(cb, 0, 0);
|
||||
widgets.append(toplevel);
|
||||
|
||||
for (int c = 0; c < widgets.size(); ++c) {
|
||||
QWidget *widget = widgets.at(c).data();
|
||||
widget->setWindowTitle(QStringLiteral("background ") + QString::number(c));
|
||||
widget->show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(widget));
|
||||
|
||||
|
|
@ -932,12 +964,15 @@ void tst_QStyleSheetStyle::background()
|
|||
if (image.depth() < 24)
|
||||
QSKIP("Test doesn't support color depth < 24");
|
||||
|
||||
if (c == 2 && !QApplication::style()->objectName().compare(QLatin1String("fusion"), Qt::CaseInsensitive))
|
||||
QEXPECT_FAIL("", "QTBUG-21468", Abort);
|
||||
|
||||
QVERIFY2(testForColors(image, QColor(0xe8, 0xff, 0x66)),
|
||||
(QString::fromLatin1(widget->metaObject()->className())
|
||||
(QString::number(c) + QLatin1Char(' ') + QString::fromLatin1(widget->metaObject()->className())
|
||||
+ " did not contain background image with color #e8ff66")
|
||||
.toLocal8Bit().constData());
|
||||
|
||||
delete widget;
|
||||
widget->hide();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -947,6 +982,7 @@ void tst_QStyleSheetStyle::tabAlignement()
|
|||
QTabWidget tabWidget(&topLevel);
|
||||
tabWidget.addTab(new QLabel("tab1"),"tab1");
|
||||
tabWidget.resize(QSize(400,400));
|
||||
centerOnScreen(&topLevel);
|
||||
topLevel.show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(&topLevel));
|
||||
QTabBar *bar = tabWidget.findChild<QTabBar*>();
|
||||
|
|
@ -1014,6 +1050,7 @@ void tst_QStyleSheetStyle::minmaxSizes()
|
|||
|
||||
tabWidget.setStyleSheet("QTabBar::tab { min-width:100px; max-width:130px; }");
|
||||
|
||||
centerOnScreen(&tabWidget);
|
||||
tabWidget.show();
|
||||
QTest::qWait(50);
|
||||
//i allow 4px additional border from the native style (hence the -2, <=2)
|
||||
|
|
@ -1041,6 +1078,7 @@ void tst_QStyleSheetStyle::task206238_twice()
|
|||
tw->addTab(new QLabel("foo"), "test");
|
||||
w.setCentralWidget(tw);
|
||||
w.setStyleSheet("background: red;");
|
||||
centerOnScreen(&w);
|
||||
w.show();
|
||||
QTest::qWait(20);
|
||||
QCOMPARE(BACKGROUND(w) , QColor("red"));
|
||||
|
|
@ -1210,6 +1248,8 @@ void tst_QStyleSheetStyle::proxyStyle()
|
|||
QString styleSheet("QPushButton {background-color: red; }");
|
||||
|
||||
QWidget *w = new QWidget;
|
||||
w->setMinimumWidth(160);
|
||||
centerOnScreen(w);
|
||||
QVBoxLayout *layout = new QVBoxLayout(w);
|
||||
|
||||
QPushButton *pb1 = new QPushButton(qApp->style()->objectName(), w);
|
||||
|
|
@ -1285,6 +1325,7 @@ void tst_QStyleSheetStyle::emptyStyleSheet()
|
|||
layout.addWidget(new QDateEdit(&w));
|
||||
layout.addWidget(new QGroupBox("some text", &w));
|
||||
|
||||
centerOnScreen(&w);
|
||||
w.show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(&w));
|
||||
//workaround the fact that the label sizehint is one pixel different the first time.
|
||||
|
|
@ -1306,6 +1347,7 @@ void tst_QStyleSheetStyle::emptyStyleSheet()
|
|||
img2.save("emptyStyleSheet_img2.png");
|
||||
}
|
||||
|
||||
QEXPECT_FAIL("", "QTBUG-21468", Abort);
|
||||
QCOMPARE(img1,img2);
|
||||
}
|
||||
|
||||
|
|
@ -1340,6 +1382,7 @@ void tst_QStyleSheetStyle::toolTip()
|
|||
wid4->setToolTip("this is wid4");
|
||||
wid4->setObjectName("wid4");
|
||||
|
||||
centerOnScreen(&w);
|
||||
w.show();
|
||||
qApp->setActiveWindow(&w);
|
||||
QVERIFY(QTest::qWaitForWindowActive(&w));
|
||||
|
|
@ -1363,12 +1406,13 @@ void tst_QStyleSheetStyle::toolTip()
|
|||
|
||||
QWidget *tooltip = 0;
|
||||
foreach (QWidget *widget, QApplication::topLevelWidgets()) {
|
||||
if (widget->inherits("QTipLabel") && widget->isVisible()) {
|
||||
if (widget->inherits("QTipLabel")) {
|
||||
tooltip = widget;
|
||||
break;
|
||||
}
|
||||
}
|
||||
QVERIFY(tooltip);
|
||||
QTRY_VERIFY(tooltip->isVisible()); // Wait until Roll-Effect is finished (Windows Vista)
|
||||
QCOMPARE(tooltip->palette().color(tooltip->backgroundRole()), col);
|
||||
}
|
||||
|
||||
|
|
@ -1385,6 +1429,8 @@ void tst_QStyleSheetStyle::embeddedFonts()
|
|||
{
|
||||
//task 235622 and 210551
|
||||
QSpinBox spin;
|
||||
spin.setMinimumWidth(160);
|
||||
spin.move(QGuiApplication::primaryScreen()->availableGeometry().topLeft() + QPoint(20, 20));
|
||||
spin.show();
|
||||
spin.setStyleSheet("QSpinBox { font-size: 32px; }");
|
||||
QTest::qWait(20);
|
||||
|
|
@ -1402,6 +1448,8 @@ void tst_QStyleSheetStyle::embeddedFonts()
|
|||
|
||||
//task 242556
|
||||
QComboBox box;
|
||||
box.setMinimumWidth(160);
|
||||
box.move(QGuiApplication::primaryScreen()->availableGeometry().topLeft() + QPoint(20, 120));
|
||||
box.setEditable(true);
|
||||
box.addItems(QStringList() << "First" << "Second" << "Third");
|
||||
box.setStyleSheet("QComboBox { font-size: 32px; }");
|
||||
|
|
@ -1474,6 +1522,7 @@ void tst_QStyleSheetStyle::complexWidgetFocus()
|
|||
layout->addWidget(widget);
|
||||
frame.setLayout(layout);
|
||||
|
||||
centerOnScreen(&frame);
|
||||
frame.show();
|
||||
QApplication::setActiveWindow(&frame);
|
||||
QVERIFY(QTest::qWaitForWindowActive(&frame));
|
||||
|
|
@ -1498,6 +1547,7 @@ void tst_QStyleSheetStyle::task188195_baseBackground()
|
|||
{
|
||||
QTreeView tree;
|
||||
tree.setStyleSheet( "QTreeView:disabled { background-color:#ab1251; }" );
|
||||
tree.move(QGuiApplication::primaryScreen()->availableGeometry().topLeft() + QPoint(20, 100));
|
||||
tree.show();
|
||||
QTest::qWait(20);
|
||||
QImage image(tree.width(), tree.height(), QImage::Format_ARGB32);
|
||||
|
|
@ -1518,6 +1568,7 @@ void tst_QStyleSheetStyle::task188195_baseBackground()
|
|||
QTableWidget table(12, 12);
|
||||
table.setItem(0, 0, new QTableWidgetItem());
|
||||
table.setStyleSheet( "QTableView {background-color: #ff0000}" );
|
||||
table.move(QGuiApplication::primaryScreen()->availableGeometry().topLeft() + QPoint(300, 100));
|
||||
table.show();
|
||||
QTest::qWait(20);
|
||||
image = QImage(table.width(), table.height(), QImage::Format_ARGB32);
|
||||
|
|
@ -1551,6 +1602,7 @@ void tst_QStyleSheetStyle::task232085_spinBoxLineEditBg()
|
|||
layout->addWidget(spinbox);
|
||||
frame.setLayout(layout);
|
||||
|
||||
centerOnScreen(&frame);
|
||||
frame.show();
|
||||
QApplication::setActiveWindow(&frame);
|
||||
spinbox->setFocus();
|
||||
|
|
@ -1610,6 +1662,7 @@ void tst_QStyleSheetStyle::QTBUG11658_cachecrash()
|
|||
Widget(QWidget *parent = 0)
|
||||
: QWidget(parent)
|
||||
{
|
||||
setMinimumWidth(160);
|
||||
QVBoxLayout* pLayout = new QVBoxLayout(this);
|
||||
QCheckBox* pCheckBox = new QCheckBox(this);
|
||||
pLayout->addWidget(pCheckBox);
|
||||
|
|
@ -1624,6 +1677,7 @@ void tst_QStyleSheetStyle::QTBUG11658_cachecrash()
|
|||
Widget *w = new Widget();
|
||||
delete w;
|
||||
w = new Widget();
|
||||
centerOnScreen(w);
|
||||
w->show();
|
||||
|
||||
QVERIFY(QTest::qWaitForWindowExposed(w));
|
||||
|
|
@ -1644,6 +1698,8 @@ void tst_QStyleSheetStyle::QTBUG15910_crashNullWidget()
|
|||
}
|
||||
} w;
|
||||
w.setStyleSheet("* { background-color: white; color:black; border 3px solid yellow }");
|
||||
w.setMinimumWidth(160);
|
||||
centerOnScreen(&w);
|
||||
w.show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(&w));
|
||||
}
|
||||
|
|
@ -1666,6 +1722,7 @@ void tst_QStyleSheetStyle::QTBUG36933_brokenPseudoClassLookup()
|
|||
// parsing of this stylesheet must not crash, and it must be correctly applied
|
||||
widget.setStyleSheet(QStringLiteral("QHeaderView::section:vertical { background-color: #FF0000 }"));
|
||||
|
||||
centerOnScreen(&widget);
|
||||
widget.show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(&widget));
|
||||
|
||||
|
|
@ -1676,6 +1733,8 @@ void tst_QStyleSheetStyle::QTBUG36933_brokenPseudoClassLookup()
|
|||
QHeaderView *verticalHeader = widget.verticalHeader();
|
||||
QImage image(verticalHeader->size(), QImage::Format_ARGB32);
|
||||
verticalHeader->render(&image);
|
||||
if (!QApplication::style()->objectName().compare(QLatin1String("fusion"), Qt::CaseInsensitive))
|
||||
QEXPECT_FAIL("", "QTBUG-21468", Abort);
|
||||
QVERIFY(testForColors(image, QColor(0xFF, 0x00, 0x00)));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,5 +12,5 @@ SUBDIRS=\
|
|||
!mac:SUBDIRS -= \
|
||||
qmacstyle \
|
||||
|
||||
!contains( styles, motif ):SUBDIRS -= \
|
||||
ios|android|qnx|*wince*:SUBDIRS -= \
|
||||
qstylesheetstyle \
|
||||
|
|
|
|||
Loading…
Reference in New Issue