tests: More focus tests
This commit is contained in:
@@ -174,6 +174,7 @@ public:
|
||||
virtual void releaseKeyboard() = 0;
|
||||
QScreen *screen() const;
|
||||
virtual void setFocus(Qt::FocusReason) = 0;
|
||||
virtual void setFocusPolicy(Qt::FocusPolicy) = 0;
|
||||
virtual void setWindowOpacity(double) = 0;
|
||||
virtual void setCursor(Qt::CursorShape) = 0;
|
||||
virtual void setMouseTracking(bool) = 0;
|
||||
|
||||
@@ -217,6 +217,11 @@ void ViewWrapper_qtquick::setFocus(Qt::FocusReason reason)
|
||||
m_item->forceActiveFocus(reason);
|
||||
}
|
||||
|
||||
void ViewWrapper_qtquick::setFocusPolicy(Qt::FocusPolicy)
|
||||
{
|
||||
qFatal("not implemented");
|
||||
}
|
||||
|
||||
bool ViewWrapper_qtquick::hasFocus() const
|
||||
{
|
||||
return m_item->hasActiveFocus();
|
||||
|
||||
@@ -52,6 +52,7 @@ public:
|
||||
void grabMouse() override;
|
||||
void releaseMouse() override;
|
||||
void setFocus(Qt::FocusReason) override;
|
||||
void setFocusPolicy(Qt::FocusPolicy) override;
|
||||
QString objectName() const override;
|
||||
QVariant property(const char *) const override;
|
||||
bool isNull() const override;
|
||||
|
||||
@@ -148,9 +148,7 @@ public:
|
||||
void setFocus(Qt::FocusReason reason) override;
|
||||
Qt::FocusPolicy focusPolicy() const override;
|
||||
bool hasFocus() const override;
|
||||
|
||||
/// TODOv2: Make these 2 virtual ?
|
||||
void setFocusPolicy(Qt::FocusPolicy policy);
|
||||
void setFocusPolicy(Qt::FocusPolicy) override;
|
||||
QString objectName() const override;
|
||||
void setMinimumSize(QSize sz) override;
|
||||
void render(QPainter *) override;
|
||||
|
||||
@@ -25,6 +25,7 @@ using namespace KDDockWidgets;
|
||||
namespace KDDockWidgets {
|
||||
class TestView_qtwidgets : public Views::View_qtwidgets<QWidget>
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit TestView_qtwidgets(Platform::CreateViewOptions opts, QWidget *parent)
|
||||
: Views::View_qtwidgets<QWidget>(nullptr, Type::None, parent)
|
||||
@@ -80,4 +81,6 @@ View *Platform_qtwidgets::tests_createView(CreateViewOptions opts, View *parent)
|
||||
return newWidget;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "TestHelpers_qtwidgets.moc"
|
||||
|
||||
@@ -358,6 +358,11 @@ Qt::FocusPolicy ViewWrapper_qtwidgets::focusPolicy() const
|
||||
return m_widget->focusPolicy();
|
||||
}
|
||||
|
||||
void ViewWrapper_qtwidgets::setFocusPolicy(Qt::FocusPolicy policy)
|
||||
{
|
||||
m_widget->setFocusPolicy(policy);
|
||||
}
|
||||
|
||||
bool ViewWrapper_qtwidgets::hasFocus() const
|
||||
{
|
||||
return m_widget->hasFocus();
|
||||
|
||||
@@ -63,6 +63,7 @@ public:
|
||||
void setCursor(Qt::CursorShape) override;
|
||||
QSize minSize() const override;
|
||||
Qt::FocusPolicy focusPolicy() const override;
|
||||
void setFocusPolicy(Qt::FocusPolicy) override;
|
||||
bool hasFocus() const override;
|
||||
|
||||
QWidget *widget() const;
|
||||
|
||||
@@ -418,7 +418,12 @@ public:
|
||||
|
||||
void setFocus(Qt::FocusReason reason) override
|
||||
{
|
||||
return QWidget::setFocus(reason);
|
||||
QWidget::setFocus(reason);
|
||||
}
|
||||
|
||||
void setFocusPolicy(Qt::FocusPolicy policy) override
|
||||
{
|
||||
QWidget::setFocusPolicy(policy);
|
||||
}
|
||||
|
||||
QString objectName() const override
|
||||
|
||||
@@ -185,7 +185,7 @@ TEST_CASE("View::closeRequested")
|
||||
CHECK(signalArrived);
|
||||
}
|
||||
|
||||
TEST_CASE("View::focusPolicy")
|
||||
TEST_CASE("View::focusPolicy, Platform::focusedView")
|
||||
{
|
||||
auto rootView = Platform::instance()->tests_createView({});
|
||||
CHECK_EQ(rootView->focusPolicy(), Qt::NoFocus);
|
||||
@@ -195,10 +195,23 @@ TEST_CASE("View::hasFocus")
|
||||
{
|
||||
auto rootView = Platform::instance()->tests_createView({});
|
||||
rootView->show();
|
||||
rootView->activateWindow();
|
||||
|
||||
CHECK(rootView->isVisible());
|
||||
Platform::instance()->tests_wait(0);
|
||||
CHECK(!rootView->hasFocus());
|
||||
|
||||
// TODOv2: Uncomment once setFocusPolicy is implemented and implement in ViewWrapper too
|
||||
// rootView->setFocus(Qt::MouseFocusReason);
|
||||
// CHECK(rootView->hasFocus());
|
||||
rootView->setFocus(Qt::MouseFocusReason);
|
||||
Platform::instance()->tests_wait(200); // QWidget::setFocus() requires 1 event loop iteration
|
||||
CHECK(rootView->hasFocus());
|
||||
CHECK(rootView->equals(Platform::instance()->focusedView()));
|
||||
|
||||
auto child1 = Platform::instance()->tests_createView({}, rootView);
|
||||
CHECK(rootView->hasFocus());
|
||||
CHECK(rootView->equals(Platform::instance()->focusedView()));
|
||||
child1->setVisible(true);
|
||||
child1->setFocus(Qt::MouseFocusReason);
|
||||
Platform::instance()->tests_wait(200); // QWidget::setFocus() requires 1 event loop iteration
|
||||
CHECK(child1->hasFocus());
|
||||
CHECK(child1->equals(Platform::instance()->focusedView()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user