summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2012-06-18 15:53:30 +0200
committerQt by Nokia <qt-info@nokia.com>2012-06-21 00:58:22 +0200
commitec2e99ead57bfa81c65f6c8435f20d9fb0ae4fd5 (patch)
treea77af5b7b0ca027a557f3cd1a872ae9d0d64e1a7 /tests
parent98fd2eeb6292d3391b7364493b960f818896fa23 (diff)
Fixed mouse grabbing preventing popups from being closed.
The pointer grabbing leads to fake Enter events being sent to the Qt::Popup window, preventing it from closing since QWidget::underMouse() returns true. We should only send Enter events if the mouse is actually inside the widget. Change-Id: I4ba3fb08943580f93ad4337ff0227becd647767e Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index 2de2b1a76f..1dd855b59f 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -68,6 +68,7 @@
#include <QtGui/qguiapplication.h>
#include <QtGui/qscreen.h>
#include <qmenubar.h>
+#include <qcompleter.h>
#include <qtableview.h>
#include <qtreewidget.h>
@@ -170,6 +171,7 @@ private slots:
void palettePropagation();
void palettePropagation2();
void enabledPropagation();
+ void popupEnterLeave();
#ifndef QT_NO_DRAGANDDROP
void acceptDropsPropagation();
#endif
@@ -4725,6 +4727,51 @@ public:
} \
}
+void tst_QWidget::popupEnterLeave()
+{
+ QWidget parent;
+ parent.setWindowFlags(Qt::FramelessWindowHint);
+ parent.setGeometry(10, 10, 200, 100);
+
+ ColorWidget alien(&parent, Qt::black);
+ alien.setGeometry(0, 0, 10, 10);
+ alien.show();
+
+ parent.show();
+
+ QTest::qWaitForWindowShown(parent.windowHandle());
+
+ QWindowSystemInterface::handleMouseEvent(parent.windowHandle(), QPointF(5, 5), QPointF(), Qt::LeftButton, Qt::NoModifier);
+ QTest::qWait(100);
+ QWindowSystemInterface::handleMouseEvent(parent.windowHandle(), QPointF(5, 5), QPointF(), Qt::NoButton, Qt::NoModifier);
+ QTest::qWait(100);
+
+ QStringList wordList;
+ wordList << "alpha" << "omega" << "omicron" << "zeta";
+
+ QLineEdit popup(&parent);
+
+ QCompleter completer(wordList);
+ completer.setCaseSensitivity(Qt::CaseInsensitive);
+ popup.setCompleter(&completer);
+ popup.setWindowFlags(Qt::Popup);
+ popup.setGeometry(20, 20, 80, 20);
+
+ popup.show();
+
+ QTest::qWaitForWindowShown(popup.windowHandle());
+
+ QTest::qWait(100);
+
+ QWindowSystemInterface::handleMouseEvent(popup.windowHandle(), QPointF(-5, -5), QPointF(), Qt::LeftButton, Qt::NoModifier);
+ QTest::qWait(100);
+ QWindowSystemInterface::handleMouseEvent(popup.windowHandle(), QPointF(-5, -5), QPointF(), Qt::NoButton, Qt::NoModifier);
+ QTest::qWait(100);
+
+ QTest::qWait(1000);
+ QVERIFY(!popup.underMouse());
+}
+
void tst_QWidget::moveChild_data()
{
QTest::addColumn<QPoint>("offset");