summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Rossi <pierre.rossi@nokia.com>2010-02-04 15:06:00 (GMT)
committerPierre Rossi <pierre.rossi@nokia.com>2010-02-05 09:46:23 (GMT)
commitc6393ddce6fc9df8f52039089cc67699eb95aada (patch)
treed649610ba6c383fae605a3909302edd8ff5d69a2
parent349e9189e205c3dfdef271798310d1f38163b891 (diff)
downloadQt-c6393ddce6fc9df8f52039089cc67699eb95aada.zip
Qt-c6393ddce6fc9df8f52039089cc67699eb95aada.tar.gz
Qt-c6393ddce6fc9df8f52039089cc67699eb95aada.tar.bz2
Get rid of setFirstActionActive on mouse release in QMenu
The point in keeping this behaviour seems limited, and it is causing a bug on touch-screens where there are no mouse moves. Task-number: QTBUG-7907 Reviewed-by: ogoffart Reviewed-by: Thierry
-rw-r--r--src/gui/widgets/qmenu.cpp4
-rw-r--r--tests/auto/qmenu/tst_qmenu.cpp17
2 files changed, 18 insertions, 3 deletions
diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
index 8ce7cc0..08960da 100644
--- a/src/gui/widgets/qmenu.cpp
+++ b/src/gui/widgets/qmenu.cpp
@@ -2302,9 +2302,7 @@ void QMenu::mouseReleaseEvent(QMouseEvent *e)
QAction *action = d->actionAt(e->pos());
if (action && action == d->currentAction) {
- if (action->menu())
- action->menu()->d_func()->setFirstActionActive();
- else {
+ if (!action->menu()){
#if defined(Q_WS_WIN)
//On Windows only context menus can be activated with the right button
if (e->button() == Qt::LeftButton || d->topCausedWidget() == 0)
diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp
index 9dc18e0..3559b15 100644
--- a/tests/auto/qmenu/tst_qmenu.cpp
+++ b/tests/auto/qmenu/tst_qmenu.cpp
@@ -104,6 +104,7 @@ private slots:
void setFixedWidth();
void deleteActionInTriggered();
void pushButtonPopulateOnAboutToShow();
+ void QTBUG7907_submenus_autoselect();
protected slots:
void onActivated(QAction*);
void onHighlighted(QAction*);
@@ -930,6 +931,22 @@ void tst_QMenu::pushButtonPopulateOnAboutToShow()
QVERIFY(!lastMenu->geometry().intersects(b.geometry()));
}
+void tst_QMenu::QTBUG7907_submenus_autoselect()
+{
+ QMenu menu("Test Menu");
+ QMenu set1("Setting1");
+ QMenu set2("Setting2");
+ QMenu subset("Subsetting");
+ subset.addAction("Values");
+ set1.addMenu(&subset);
+ menu.addMenu(&set1);
+ menu.addMenu(&set2);
+ menu.show();
+ QTest::qWaitForWindowShown(&menu);
+ QTest::mouseClick(&menu, Qt::LeftButton, Qt::NoModifier, QPoint(5,5) );
+ QTest::qWait(500);
+ QVERIFY(!subset.isVisible());
+}
QTEST_MAIN(tst_QMenu)