Merge remote-tracking branch 'origin/5.15' into dev

Change-Id: I8348c823117dd3d594d365fc3583f7e44d44a81c
This commit is contained in:
Qt Forward Merge Bot 2019-10-16 01:01:07 +02:00
commit e3f5912747
7 changed files with 228 additions and 32 deletions

View File

@ -1765,6 +1765,7 @@ QCborValue::QCborValue(const QDateTime &dt)
container->elements[1].type = String; container->elements[1].type = String;
} }
#ifndef QT_BOOTSTRAPPED
/*! /*!
Creates a QCborValue object of the URL extended type and containing the Creates a QCborValue object of the URL extended type and containing the
value represented by \a url. The value can later be retrieved using toUrl(). value represented by \a url. The value can later be retrieved using toUrl().
@ -1781,6 +1782,7 @@ QCborValue::QCborValue(const QUrl &url)
t = Url; t = Url;
container->elements[1].type = String; container->elements[1].type = String;
} }
#endif
#if QT_CONFIG(regularexpression) #if QT_CONFIG(regularexpression)
/*! /*!
@ -1934,6 +1936,7 @@ QDateTime QCborValue::toDateTime(const QDateTime &defaultValue) const
return QDateTime::fromString(byteData->asLatin1(), Qt::ISODateWithMs); return QDateTime::fromString(byteData->asLatin1(), Qt::ISODateWithMs);
} }
#ifndef QT_BOOTSTRAPPED
/*! /*!
Returns the URL value stored in this QCborValue, if it is of the URL Returns the URL value stored in this QCborValue, if it is of the URL
extended type. Otherwise, it returns \a defaultValue. extended type. Otherwise, it returns \a defaultValue.
@ -1954,6 +1957,7 @@ QUrl QCborValue::toUrl(const QUrl &defaultValue) const
return QUrl::fromEncoded(byteData->asByteArrayView()); return QUrl::fromEncoded(byteData->asByteArrayView());
} }
#endif
#if QT_CONFIG(regularexpression) #if QT_CONFIG(regularexpression)
/*! /*!
@ -2882,8 +2886,10 @@ uint qHash(const QCborValue &value, uint seed)
return qHash(value.toDouble(), seed); return qHash(value.toDouble(), seed);
case QCborValue::DateTime: case QCborValue::DateTime:
return qHash(value.toDateTime(), seed); return qHash(value.toDateTime(), seed);
#ifndef QT_BOOTSTRAPPED
case QCborValue::Url: case QCborValue::Url:
return qHash(value.toUrl(), seed); return qHash(value.toUrl(), seed);
#endif
#if QT_CONFIG(regularexpression) #if QT_CONFIG(regularexpression)
case QCborValue::RegularExpression: case QCborValue::RegularExpression:
return qHash(value.toRegularExpression(), seed); return qHash(value.toRegularExpression(), seed);
@ -2936,8 +2942,10 @@ static QDebug debugContents(QDebug &dbg, const QCborValue &v)
} }
case QCborValue::DateTime: case QCborValue::DateTime:
return dbg << v.toDateTime(); return dbg << v.toDateTime();
#ifndef QT_BOOTSTRAPPED
case QCborValue::Url: case QCborValue::Url:
return dbg << v.toUrl(); return dbg << v.toUrl();
#endif
#if QT_CONFIG(regularexpression) #if QT_CONFIG(regularexpression)
case QCborValue::RegularExpression: case QCborValue::RegularExpression:
return dbg << v.toRegularExpression(); return dbg << v.toRegularExpression();

View File

@ -161,7 +161,9 @@ public:
{} {}
explicit QCborValue(const QDateTime &dt); explicit QCborValue(const QDateTime &dt);
#ifndef QT_BOOTSTRAPPED
explicit QCborValue(const QUrl &url); explicit QCborValue(const QUrl &url);
#endif
#if QT_CONFIG(regularexpression) #if QT_CONFIG(regularexpression)
explicit QCborValue(const QRegularExpression &rx); explicit QCborValue(const QRegularExpression &rx);
#endif #endif
@ -387,8 +389,10 @@ public:
{ return concrete().toString(defaultValue); } { return concrete().toString(defaultValue); }
QDateTime toDateTime(const QDateTime &defaultValue = {}) const QDateTime toDateTime(const QDateTime &defaultValue = {}) const
{ return concrete().toDateTime(defaultValue); } { return concrete().toDateTime(defaultValue); }
#ifndef QT_BOOTSTRAPPED
QUrl toUrl(const QUrl &defaultValue = {}) const QUrl toUrl(const QUrl &defaultValue = {}) const
{ return concrete().toUrl(defaultValue); } { return concrete().toUrl(defaultValue); }
#endif
#if QT_CONFIG(regularexpression) #if QT_CONFIG(regularexpression)
QRegularExpression toRegularExpression(const QRegularExpression &defaultValue = {}) const QRegularExpression toRegularExpression(const QRegularExpression &defaultValue = {}) const
{ return concrete().toRegularExpression(defaultValue); } { return concrete().toRegularExpression(defaultValue); }

View File

@ -1092,6 +1092,23 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
Returns a pointer to a modifiable reference to the current item. Returns a pointer to a modifiable reference to the current item.
*/ */
/*! \fn QJsonValueRef QJsonObject::iterator::operator[](int j) const
Returns a modifiable reference to the item at offset \a j from the
item pointed to by this iterator (the item at position \c{*this + j}).
This function is provided to make QJsonObject iterators behave like C++
pointers.
The return value is of type QJsonValueRef, a helper class for QJsonArray
and QJsonObject. When you get an object of type QJsonValueRef, you can
use it as if it were a reference to a QJsonValue. If you assign to it,
the assignment will apply to the element in the QJsonArray or QJsonObject
from which you got the reference.
\sa operator+()
*/
/*! /*!
\fn bool QJsonObject::iterator::operator==(const iterator &other) const \fn bool QJsonObject::iterator::operator==(const iterator &other) const
\fn bool QJsonObject::iterator::operator==(const const_iterator &other) const \fn bool QJsonObject::iterator::operator==(const const_iterator &other) const
@ -1112,6 +1129,38 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
\sa operator==() \sa operator==()
*/ */
/*!
\fn bool QJsonObject::iterator::operator<(const iterator& other) const
\fn bool QJsonObject::iterator::operator<(const const_iterator& other) const
Returns \c true if the item pointed to by this iterator is less than
the item pointed to by the \a other iterator.
*/
/*!
\fn bool QJsonObject::iterator::operator<=(const iterator& other) const
\fn bool QJsonObject::iterator::operator<=(const const_iterator& other) const
Returns \c true if the item pointed to by this iterator is less than
or equal to the item pointed to by the \a other iterator.
*/
/*!
\fn bool QJsonObject::iterator::operator>(const iterator& other) const
\fn bool QJsonObject::iterator::operator>(const const_iterator& other) const
Returns \c true if the item pointed to by this iterator is greater
than the item pointed to by the \a other iterator.
*/
/*!
\fn bool QJsonObject::iterator::operator>=(const iterator& other) const
\fn bool QJsonObject::iterator::operator>=(const const_iterator& other) const
Returns \c true if the item pointed to by this iterator is greater
than or equal to the item pointed to by the \a other iterator.
*/
/*! \fn QJsonObject::iterator QJsonObject::iterator::operator++() /*! \fn QJsonObject::iterator QJsonObject::iterator::operator++()
The prefix ++ operator, \c{++i}, advances the iterator to the The prefix ++ operator, \c{++i}, advances the iterator to the
@ -1185,6 +1234,12 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
\sa operator+=(), operator-() \sa operator+=(), operator-()
*/ */
/*! \fn int QJsonObject::iterator::operator-(iterator other) const
Returns the number of items between the item pointed to by \a
other and the item pointed to by this iterator.
*/
/*! /*!
\class QJsonObject::const_iterator \class QJsonObject::const_iterator
\inmodule QtCore \inmodule QtCore
@ -1288,6 +1343,18 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
Returns a pointer to the current item. Returns a pointer to the current item.
*/ */
/*! \fn QJsonValue QJsonObject::const_iterator::operator[](int j) const
Returns the item at offset \a j from the item pointed to by this iterator (the item at
position \c{*this + j}).
This function is provided to make QJsonObject iterators behave like C++
pointers.
\sa operator+()
*/
/*! \fn bool QJsonObject::const_iterator::operator==(const const_iterator &other) const /*! \fn bool QJsonObject::const_iterator::operator==(const const_iterator &other) const
\fn bool QJsonObject::const_iterator::operator==(const iterator &other) const \fn bool QJsonObject::const_iterator::operator==(const iterator &other) const
@ -1306,6 +1373,34 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
\sa operator==() \sa operator==()
*/ */
/*!
\fn bool QJsonObject::const_iterator::operator<(const const_iterator& other) const
Returns \c true if the item pointed to by this iterator is less than
the item pointed to by the \a other iterator.
*/
/*!
\fn bool QJsonObject::const_iterator::operator<=(const const_iterator& other) const
Returns \c true if the item pointed to by this iterator is less than
or equal to the item pointed to by the \a other iterator.
*/
/*!
\fn bool QJsonObject::const_iterator::operator>(const const_iterator& other) const
Returns \c true if the item pointed to by this iterator is greater
than the item pointed to by the \a other iterator.
*/
/*!
\fn bool QJsonObject::const_iterator::operator>=(const const_iterator& other) const
Returns \c true if the item pointed to by this iterator is greater
than or equal to the item pointed to by the \a other iterator.
*/
/*! \fn QJsonObject::const_iterator QJsonObject::const_iterator::operator++() /*! \fn QJsonObject::const_iterator QJsonObject::const_iterator::operator++()
The prefix ++ operator, \c{++i}, advances the iterator to the The prefix ++ operator, \c{++i}, advances the iterator to the
@ -1386,6 +1481,12 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
\sa operator+=(), operator-() \sa operator+=(), operator-()
*/ */
/*! \fn int QJsonObject::const_iterator::operator-(const_iterator other) const
Returns the number of items between the item pointed to by \a
other and the item pointed to by this iterator.
*/
/*! /*!
\internal \internal

View File

@ -154,8 +154,14 @@ public:
#else #else
inline QJsonValueRefPtr operator->() const { return QJsonValueRefPtr(o, i); } inline QJsonValueRefPtr operator->() const { return QJsonValueRefPtr(o, i); }
#endif #endif
const QJsonValueRef operator[](int j) { return QJsonValueRef(o, i + j); }
inline bool operator==(const iterator &other) const { return i == other.i; } inline bool operator==(const iterator &other) const { return i == other.i; }
inline bool operator!=(const iterator &other) const { return i != other.i; } inline bool operator!=(const iterator &other) const { return i != other.i; }
bool operator<(const iterator& other) const { return i < other.i; }
bool operator<=(const iterator& other) const { return i <= other.i; }
bool operator>(const iterator& other) const { return i > other.i; }
bool operator>=(const iterator& other) const { return i >= other.i; }
inline iterator &operator++() { ++i; return *this; } inline iterator &operator++() { ++i; return *this; }
inline iterator operator++(int) { iterator r = *this; ++i; return r; } inline iterator operator++(int) { iterator r = *this; ++i; return r; }
@ -166,10 +172,15 @@ public:
inline iterator operator-(int j) const { return operator+(-j); } inline iterator operator-(int j) const { return operator+(-j); }
inline iterator &operator+=(int j) { i += j; return *this; } inline iterator &operator+=(int j) { i += j; return *this; }
inline iterator &operator-=(int j) { i -= j; return *this; } inline iterator &operator-=(int j) { i -= j; return *this; }
int operator-(iterator j) const { return i - j.i; }
public: public:
inline bool operator==(const const_iterator &other) const { return i == other.i; } inline bool operator==(const const_iterator &other) const { return i == other.i; }
inline bool operator!=(const const_iterator &other) const { return i != other.i; } inline bool operator!=(const const_iterator &other) const { return i != other.i; }
bool operator<(const const_iterator& other) const { return i < other.i; }
bool operator<=(const const_iterator& other) const { return i <= other.i; }
bool operator>(const const_iterator& other) const { return i > other.i; }
bool operator>=(const const_iterator& other) const { return i >= other.i; }
}; };
friend class iterator; friend class iterator;
@ -200,8 +211,14 @@ public:
#else #else
inline QJsonValuePtr operator->() const { return QJsonValuePtr(o->valueAt(i)); } inline QJsonValuePtr operator->() const { return QJsonValuePtr(o->valueAt(i)); }
#endif #endif
const QJsonValue operator[](int j) { return o->valueAt(i + j); }
inline bool operator==(const const_iterator &other) const { return i == other.i; } inline bool operator==(const const_iterator &other) const { return i == other.i; }
inline bool operator!=(const const_iterator &other) const { return i != other.i; } inline bool operator!=(const const_iterator &other) const { return i != other.i; }
bool operator<(const const_iterator& other) const { return i < other.i; }
bool operator<=(const const_iterator& other) const { return i <= other.i; }
bool operator>(const const_iterator& other) const { return i > other.i; }
bool operator>=(const const_iterator& other) const { return i >= other.i; }
inline const_iterator &operator++() { ++i; return *this; } inline const_iterator &operator++() { ++i; return *this; }
inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; } inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; }
@ -212,9 +229,14 @@ public:
inline const_iterator operator-(int j) const { return operator+(-j); } inline const_iterator operator-(int j) const { return operator+(-j); }
inline const_iterator &operator+=(int j) { i += j; return *this; } inline const_iterator &operator+=(int j) { i += j; return *this; }
inline const_iterator &operator-=(int j) { i -= j; return *this; } inline const_iterator &operator-=(int j) { i -= j; return *this; }
int operator-(iterator j) const { return i - j.i; }
inline bool operator==(const iterator &other) const { return i == other.i; } inline bool operator==(const iterator &other) const { return i == other.i; }
inline bool operator!=(const iterator &other) const { return i != other.i; } inline bool operator!=(const iterator &other) const { return i != other.i; }
bool operator<(const iterator& other) const { return i < other.i; }
bool operator<=(const iterator& other) const { return i <= other.i; }
bool operator>(const iterator& other) const { return i > other.i; }
bool operator>=(const iterator& other) const { return i >= other.i; }
}; };
friend class const_iterator; friend class const_iterator;

View File

@ -37,10 +37,15 @@
** **
****************************************************************************/ ****************************************************************************/
#include <private/qguiapplication_p.h>
#include <qpa/qplatformintegration.h>
#include "qtestsupport_gui.h" #include "qtestsupport_gui.h"
#include "qwindow.h" #include "qwindow.h"
#include <QtCore/qtestsupport_core.h> #include <QtCore/qtestsupport_core.h>
#include <QtCore/QDebug>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@ -55,6 +60,14 @@ QT_BEGIN_NAMESPACE
*/ */
Q_GUI_EXPORT bool QTest::qWaitForWindowActive(QWindow *window, int timeout) Q_GUI_EXPORT bool QTest::qWaitForWindowActive(QWindow *window, int timeout)
{ {
if (Q_UNLIKELY(!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))) {
qWarning() << "qWaitForWindowActive was called on a platform that doesn't support window"
<< "activation. This means there is an error in the test and it should either"
<< "check for the WindowActivation platform capability before calling"
<< "qWaitForWindowActivate, use qWaitForWindowExposed instead, or skip the test."
<< "Falling back to qWaitForWindowExposed.";
return qWaitForWindowExposed(window, timeout);
}
return QTest::qWaitFor([&]() { return window->isActive(); }, timeout); return QTest::qWaitFor([&]() { return window->isActive(); }, timeout);
} }

View File

@ -311,7 +311,7 @@ void tst_QGraphicsEffect::draw()
QGraphicsView view(&scene); QGraphicsView view(&scene);
view.show(); view.show();
QVERIFY(QTest::qWaitForWindowActive(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QTRY_VERIFY(item->numRepaints > 0); QTRY_VERIFY(item->numRepaints > 0);
QCoreApplication::processEvents(); // Process all queued paint events QCoreApplication::processEvents(); // Process all queued paint events
item->reset(); item->reset();
@ -668,8 +668,7 @@ void tst_QGraphicsEffect::childrenVisibilityShouldInvalidateCache()
scene.addItem(&parent); scene.addItem(&parent);
QGraphicsView view(&scene); QGraphicsView view(&scene);
view.show(); view.show();
QApplication::setActiveWindow(&view); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
QTRY_VERIFY(parent.nbPaint >= 1); QTRY_VERIFY(parent.nbPaint >= 1);
//we set an effect on the parent //we set an effect on the parent
parent.setGraphicsEffect(new QGraphicsDropShadowEffect(&parent)); parent.setGraphicsEffect(new QGraphicsDropShadowEffect(&parent));
@ -694,8 +693,7 @@ void tst_QGraphicsEffect::prepareGeometryChangeInvalidateCache()
QGraphicsView view(&scene); QGraphicsView view(&scene);
view.show(); view.show();
qApp->setActiveWindow(&view); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
QTRY_VERIFY(item->nbPaint >= 1); QTRY_VERIFY(item->nbPaint >= 1);
item->nbPaint = 0; item->nbPaint = 0;
@ -726,8 +724,7 @@ void tst_QGraphicsEffect::itemHasNoContents()
QGraphicsView view(&scene); QGraphicsView view(&scene);
view.show(); view.show();
qApp->setActiveWindow(&view); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
QTRY_VERIFY(child->nbPaint >= 1); QTRY_VERIFY(child->nbPaint >= 1);
CustomEffect *effect = new CustomEffect; CustomEffect *effect = new CustomEffect;

View File

@ -1003,6 +1003,9 @@ class ImhTester : public QGraphicsItem
void tst_QGraphicsItem::inputMethodHints() void tst_QGraphicsItem::inputMethodHints()
{ {
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QSKIP("Window activation is not supported");
ImhTester *item = new ImhTester; ImhTester *item = new ImhTester;
item->setFlag(QGraphicsItem::ItemAcceptsInputMethod, true); item->setFlag(QGraphicsItem::ItemAcceptsInputMethod, true);
item->setFlag(QGraphicsItem::ItemIsFocusable, true); item->setFlag(QGraphicsItem::ItemIsFocusable, true);
@ -1055,6 +1058,9 @@ void tst_QGraphicsItem::inputMethodHints()
void tst_QGraphicsItem::toolTip() void tst_QGraphicsItem::toolTip()
{ {
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QSKIP("Window activation is not supported");
QString toolTip = "Qt rocks!"; QString toolTip = "Qt rocks!";
QGraphicsRectItem *item = new QGraphicsRectItem(QRectF(0, 0, 100, 100)); QGraphicsRectItem *item = new QGraphicsRectItem(QRectF(0, 0, 100, 100));
@ -1764,7 +1770,9 @@ void tst_QGraphicsItem::selected_multi()
view.setWindowTitle(QLatin1String(QTest::currentTestFunction())); view.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
view.show(); view.show();
view.fitInView(scene.sceneRect()); view.fitInView(scene.sceneRect());
QVERIFY(QTest::qWaitForWindowActive(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QVERIFY(QTest::qWaitForWindowActive(&view));
QVERIFY(!item1->isSelected()); QVERIFY(!item1->isSelected());
QVERIFY(!item2->isSelected()); QVERIFY(!item2->isSelected());
@ -3267,7 +3275,8 @@ void tst_QGraphicsItem::hoverEventsGenerateRepaints()
view.setWindowTitle(QLatin1String(QTest::currentTestFunction())); view.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
view.show(); view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view)); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QVERIFY(QTest::qWaitForWindowActive(&view));
QCoreApplication::processEvents(); // Process all queued paint events QCoreApplication::processEvents(); // Process all queued paint events
EventTester *tester = new EventTester; EventTester *tester = new EventTester;
@ -4994,6 +5003,9 @@ protected:
void tst_QGraphicsItem::sceneEventFilter() void tst_QGraphicsItem::sceneEventFilter()
{ {
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QSKIP("Window activation is not supported");
QGraphicsScene scene; QGraphicsScene scene;
QGraphicsView view(&scene); QGraphicsView view(&scene);
@ -6887,7 +6899,8 @@ void tst_QGraphicsItem::opacity2()
view.setWindowTitle(QLatin1String(QTest::currentTestFunction())); view.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
view.show(); view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view)); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QVERIFY(QTest::qWaitForWindowActive(&view));
QCoreApplication::processEvents(); // Process all queued paint events QCoreApplication::processEvents(); // Process all queued paint events
QTRY_VERIFY(view.repaints >= 1); QTRY_VERIFY(view.repaints >= 1);
@ -6962,7 +6975,8 @@ void tst_QGraphicsItem::opacityZeroUpdates()
view.setWindowTitle(QLatin1String(QTest::currentTestFunction())); view.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
view.show(); view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view)); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QVERIFY(QTest::qWaitForWindowActive(&view));
QCoreApplication::processEvents(); // Process all queued paint events QCoreApplication::processEvents(); // Process all queued paint events
QTRY_VERIFY(view.repaints > 0); QTRY_VERIFY(view.repaints > 0);
@ -7297,6 +7311,9 @@ void tst_QGraphicsItem::tabChangesFocus_data()
void tst_QGraphicsItem::tabChangesFocus() void tst_QGraphicsItem::tabChangesFocus()
{ {
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QSKIP("Window activation is not supported");
QFETCH(bool, tabChangesFocus); QFETCH(bool, tabChangesFocus);
QGraphicsScene scene; QGraphicsScene scene;
@ -7344,6 +7361,9 @@ void tst_QGraphicsItem::tabChangesFocus()
void tst_QGraphicsItem::cacheMode() void tst_QGraphicsItem::cacheMode()
{ {
if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive))
QSKIP("Wayland: This fails. Figure out why.");
QGraphicsScene scene(0, 0, 100, 100); QGraphicsScene scene(0, 0, 100, 100);
QGraphicsView view(&scene); QGraphicsView view(&scene);
view.setWindowTitle(QLatin1String(QTest::currentTestFunction())); view.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
@ -7525,6 +7545,9 @@ void tst_QGraphicsItem::cacheMode()
void tst_QGraphicsItem::cacheMode2() void tst_QGraphicsItem::cacheMode2()
{ {
if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive))
QSKIP("Wayland: This fails. Figure out why.");
QGraphicsScene scene(0, 0, 100, 100); QGraphicsScene scene(0, 0, 100, 100);
QGraphicsView view(&scene); QGraphicsView view(&scene);
view.setWindowTitle(QLatin1String(QTest::currentTestFunction())); view.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
@ -8192,7 +8215,8 @@ void tst_QGraphicsItem::moveLineItem()
view.setWindowTitle(QLatin1String(QTest::currentTestFunction())); view.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
view.show(); view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view)); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QVERIFY(QTest::qWaitForWindowActive(&view));
QCoreApplication::processEvents(); // Process all queued paint events QCoreApplication::processEvents(); // Process all queued paint events
view.reset(); view.reset();
@ -8264,9 +8288,11 @@ void tst_QGraphicsItem::sorting()
view.resize(120, 100); view.resize(120, 100);
view.setFrameStyle(0); view.setFrameStyle(0);
view.show(); view.show();
qApp->setActiveWindow(&view); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) {
qApp->setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowActive(&view));
}
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
QTRY_VERIFY(_paintedItems.count() > 0); QTRY_VERIFY(_paintedItems.count() > 0);
_paintedItems.clear(); _paintedItems.clear();
@ -8302,9 +8328,11 @@ void tst_QGraphicsItem::itemHasNoContents()
QGraphicsView view(&scene); QGraphicsView view(&scene);
view.setWindowTitle(QLatin1String(QTest::currentTestFunction())); view.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
view.show(); view.show();
qApp->setActiveWindow(&view); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) {
qApp->setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowActive(&view));
}
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
QTRY_VERIFY(!_paintedItems.isEmpty()); QTRY_VERIFY(!_paintedItems.isEmpty());
_paintedItems.clear(); _paintedItems.clear();
@ -9326,10 +9354,12 @@ void tst_QGraphicsItem::ensureDirtySceneTransform()
QGraphicsView view(&scene); QGraphicsView view(&scene);
view.setWindowTitle(QLatin1String(QTest::currentTestFunction())); view.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
view.show(); view.show();
QApplication::setActiveWindow(&view); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) {
QApplication::setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowActive(&view));
QCOMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
}
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
QCOMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
//We move the parent //We move the parent
parent->move(); parent->move();
@ -9710,6 +9740,9 @@ void tst_QGraphicsItem::stackBefore()
void tst_QGraphicsItem::QTBUG_4233_updateCachedWithSceneRect() void tst_QGraphicsItem::QTBUG_4233_updateCachedWithSceneRect()
{ {
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QSKIP("Window activation is not supported");
EventTester *tester = new EventTester; EventTester *tester = new EventTester;
tester->setCacheMode(QGraphicsItem::ItemCoordinateCache); tester->setCacheMode(QGraphicsItem::ItemCoordinateCache);
@ -10782,6 +10815,9 @@ void tst_QGraphicsItem::scenePosChange()
void tst_QGraphicsItem::textItem_shortcuts() void tst_QGraphicsItem::textItem_shortcuts()
{ {
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QSKIP("Window activation is not supported");
QWidget w; QWidget w;
w.setWindowTitle(QLatin1String(QTest::currentTestFunction())); w.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
auto l = new QVBoxLayout(&w); auto l = new QVBoxLayout(&w);
@ -10847,7 +10883,8 @@ void tst_QGraphicsItem::scroll()
view.setFrameStyle(0); view.setFrameStyle(0);
view.show(); view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view)); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QVERIFY(QTest::qWaitForWindowActive(&view));
QTRY_VERIFY(view.repaints > 0); QTRY_VERIFY(view.repaints > 0);
view.reset(); view.reset();
@ -11373,9 +11410,11 @@ void tst_QGraphicsItem::QTBUG_6738_missingUpdateWithSetParent()
MyGraphicsView view(&scene); MyGraphicsView view(&scene);
view.setWindowTitle(QLatin1String(QTest::currentTestFunction())); view.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
view.show(); view.show();
qApp->setActiveWindow(&view); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) {
qApp->setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowActive(&view));
}
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
QCoreApplication::processEvents(); // Process all queued paint events QCoreApplication::processEvents(); // Process all queued paint events
QTRY_VERIFY(view.repaints > 0); QTRY_VERIFY(view.repaints > 0);
@ -11426,7 +11465,8 @@ void tst_QGraphicsItem::QT_2653_fullUpdateDiscardingOpacityUpdate()
view.show(); view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view)); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QVERIFY(QTest::qWaitForWindowActive(&view));
QCoreApplication::processEvents(); // Process all queued paint events QCoreApplication::processEvents(); // Process all queued paint events
view.reset(); view.reset();
@ -11461,7 +11501,9 @@ void tst_QGraphicsItem::QTBUG_7714_fullUpdateDiscardingOpacityUpdate2()
scene.addItem(parentGreen); scene.addItem(parentGreen);
origView.show(); origView.show();
QVERIFY(QTest::qWaitForWindowActive(&origView)); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QVERIFY(QTest::qWaitForWindowActive(&origView));
QVERIFY(QTest::qWaitForWindowExposed(&origView));
QCoreApplication::processEvents(); // Process all queued paint events QCoreApplication::processEvents(); // Process all queued paint events
origView.setGeometry(origView.x() + origView.width() + 20, origView.y() + 20, origView.setGeometry(origView.x() + origView.width() + 20, origView.y() + 20,
@ -11475,9 +11517,11 @@ void tst_QGraphicsItem::QTBUG_7714_fullUpdateDiscardingOpacityUpdate2()
QTRY_VERIFY(origView.repaints > 0); QTRY_VERIFY(origView.repaints > 0);
view.show(); view.show();
qApp->setActiveWindow(&view); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) {
qApp->setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowActive(&view));
}
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
view.reset(); view.reset();
origView.reset(); origView.reset();
@ -11591,6 +11635,9 @@ void tst_QGraphicsItem::sortItemsWhileAdding()
void tst_QGraphicsItem::doNotMarkFullUpdateIfNotInScene() void tst_QGraphicsItem::doNotMarkFullUpdateIfNotInScene()
{ {
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
QSKIP("Window activation is not supported");
struct Item : public QGraphicsTextItem struct Item : public QGraphicsTextItem
{ {
int painted = 0; int painted = 0;
@ -11649,10 +11696,12 @@ void tst_QGraphicsItem::itemDiesDuringDraggingOperation()
item->setAcceptDrops(true); item->setAcceptDrops(true);
scene.addItem(item); scene.addItem(item);
view.show(); view.show();
QApplication::setActiveWindow(&view); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) {
QApplication::setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowActive(&view));
QCOMPARE(QApplication::activeWindow(), &view);
}
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
QCOMPARE(QApplication::activeWindow(), &view);
QGraphicsSceneDragDropEvent dragEnter(QEvent::GraphicsSceneDragEnter); QGraphicsSceneDragDropEvent dragEnter(QEvent::GraphicsSceneDragEnter);
dragEnter.setScenePos(item->boundingRect().center()); dragEnter.setScenePos(item->boundingRect().center());
QCoreApplication::sendEvent(&scene, &dragEnter); QCoreApplication::sendEvent(&scene, &dragEnter);
@ -11678,10 +11727,12 @@ void tst_QGraphicsItem::QTBUG_12112_focusItem()
scene.addItem(item1); scene.addItem(item1);
view.show(); view.show();
QApplication::setActiveWindow(&view); if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) {
QApplication::setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowActive(&view));
QCOMPARE(QApplication::activeWindow(), &view);
}
QVERIFY(QTest::qWaitForWindowExposed(&view)); QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
QCOMPARE(QApplication::activeWindow(), &view);
QVERIFY(item1->focusItem()); QVERIFY(item1->focusItem());
QVERIFY(!item2->focusItem()); QVERIFY(!item2->focusItem());