tests: fix window activation usage in tst_QGraphicsWidget
- Skip tests that depend on programmatic window activation on platforms where this is not supported, such as Wayland. - Change tests that don't rely on the window being activated to use qWaitForWindowExposed() instead. Task-number: QTBUG-107153 Change-Id: Ieb4280343a725a2cbdc46a8ac5c657beeb2e7e57 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit a247da320cc221c19c309962f5f6d888f66d9225) Reviewed-by: Liang Qi <liang.qi@qt.io>
This commit is contained in:
parent
8da325be2d
commit
09b39af9bc
@ -17,6 +17,8 @@
|
|||||||
#include <qstylefactory.h>
|
#include <qstylefactory.h>
|
||||||
#include <qscreen.h>
|
#include <qscreen.h>
|
||||||
#include <qsignalspy.h>
|
#include <qsignalspy.h>
|
||||||
|
#include <private/qguiapplication_p.h>
|
||||||
|
#include <qpa/qplatformintegration.h>
|
||||||
|
|
||||||
typedef QList<QGraphicsItem *> QGraphicsItemList;
|
typedef QList<QGraphicsItem *> QGraphicsItemList;
|
||||||
|
|
||||||
@ -144,8 +146,16 @@ private slots:
|
|||||||
void QT_BUG_6544_tabFocusFirstUnsetWhenRemovingItems();
|
void QT_BUG_6544_tabFocusFirstUnsetWhenRemovingItems();
|
||||||
void QT_BUG_12056_tabFocusFirstUnsetWhenRemovingItems();
|
void QT_BUG_12056_tabFocusFirstUnsetWhenRemovingItems();
|
||||||
void QTBUG_45867_send_itemChildAddedChange_to_parent();
|
void QTBUG_45867_send_itemChildAddedChange_to_parent();
|
||||||
|
|
||||||
|
private:
|
||||||
|
static bool hasWindowActivation();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool tst_QGraphicsWidget::hasWindowActivation()
|
||||||
|
{
|
||||||
|
return (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation));
|
||||||
|
}
|
||||||
|
|
||||||
// Subclass that exposes the protected functions.
|
// Subclass that exposes the protected functions.
|
||||||
class SubQGraphicsWidget : public QGraphicsWidget {
|
class SubQGraphicsWidget : public QGraphicsWidget {
|
||||||
public:
|
public:
|
||||||
@ -1049,7 +1059,10 @@ void tst_QGraphicsWidget::initStyleOption()
|
|||||||
QGraphicsView view(&scene);
|
QGraphicsView view(&scene);
|
||||||
view.resize(300, 300);
|
view.resize(300, 300);
|
||||||
view.show();
|
view.show();
|
||||||
QVERIFY(QTest::qWaitForWindowActive(&view));
|
if (hasWindowActivation())
|
||||||
|
QVERIFY(QTest::qWaitForWindowActive(&view));
|
||||||
|
else
|
||||||
|
QVERIFY(QTest::qWaitForWindowExposed(&view));
|
||||||
|
|
||||||
view.setAlignment(Qt::AlignTop | Qt::AlignLeft);
|
view.setAlignment(Qt::AlignTop | Qt::AlignLeft);
|
||||||
SubQGraphicsWidget *widget = new SubQGraphicsWidget;
|
SubQGraphicsWidget *widget = new SubQGraphicsWidget;
|
||||||
@ -1063,10 +1076,12 @@ void tst_QGraphicsWidget::initStyleOption()
|
|||||||
QFETCH(bool, enabled);
|
QFETCH(bool, enabled);
|
||||||
widget->setEnabled(enabled);
|
widget->setEnabled(enabled);
|
||||||
QFETCH(bool, focus);
|
QFETCH(bool, focus);
|
||||||
if (focus) {
|
if (hasWindowActivation()) {
|
||||||
widget->setFlag(QGraphicsItem::ItemIsFocusable, true);
|
if (focus) {
|
||||||
widget->setFocus();
|
widget->setFlag(QGraphicsItem::ItemIsFocusable, true);
|
||||||
QVERIFY(widget->hasFocus());
|
widget->setFocus();
|
||||||
|
QVERIFY(widget->hasFocus());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
QFETCH(bool, underMouse);
|
QFETCH(bool, underMouse);
|
||||||
if (underMouse) {
|
if (underMouse) {
|
||||||
@ -1085,8 +1100,10 @@ void tst_QGraphicsWidget::initStyleOption()
|
|||||||
|
|
||||||
bool isEnabled = option.state & QStyle::State_Enabled;
|
bool isEnabled = option.state & QStyle::State_Enabled;
|
||||||
QCOMPARE(isEnabled, enabled);
|
QCOMPARE(isEnabled, enabled);
|
||||||
bool hasFocus = option.state & QStyle::State_HasFocus;
|
if (hasWindowActivation()) {
|
||||||
QCOMPARE(hasFocus, focus);
|
bool hasFocus = option.state & QStyle::State_HasFocus;
|
||||||
|
QCOMPARE(hasFocus, focus);
|
||||||
|
}
|
||||||
bool isUnderMouse = option.state & QStyle::State_MouseOver;
|
bool isUnderMouse = option.state & QStyle::State_MouseOver;
|
||||||
QCOMPARE(isUnderMouse, underMouse);
|
QCOMPARE(isUnderMouse, underMouse);
|
||||||
// if (layoutDirection != Qt::LeftToRight)
|
// if (layoutDirection != Qt::LeftToRight)
|
||||||
@ -1713,6 +1730,9 @@ void tst_QGraphicsWidget::verifyFocusChain()
|
|||||||
|
|
||||||
void tst_QGraphicsWidget::updateFocusChainWhenChildDie()
|
void tst_QGraphicsWidget::updateFocusChainWhenChildDie()
|
||||||
{
|
{
|
||||||
|
if (!hasWindowActivation())
|
||||||
|
QSKIP("Window activation is not supported");
|
||||||
|
|
||||||
const QRect availableGeometry = QGuiApplication::primaryScreen()->availableGeometry();
|
const QRect availableGeometry = QGuiApplication::primaryScreen()->availableGeometry();
|
||||||
QGraphicsScene scene;
|
QGraphicsScene scene;
|
||||||
QGraphicsView view(&scene);
|
QGraphicsView view(&scene);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user