summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorQiang Li <liqianga@uniontech.com>2020-12-03 10:17:14 +0800
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-01-15 13:36:14 +0000
commit16d0e9ab795303f63e71fbeb85173155d6bf3b32 (patch)
tree7313fe1d3aad0c61fdfb0d961b3df1fc84f89772 /tests/auto
parentc00f52e821a3a982e91d9c4515c3d4d944305a16 (diff)
Fix the tips still show when cursor move to another action
In this case, the previous action's tip is still displayed when the cursor moves from one action with tip to another action without tip. Fixes: QTBUG-89082 Change-Id: I0a00595dc3d716725678487be9cbb363c4d3b392 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 3f3d5e6716d9130776b3613ccbd5595de7d4af8d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/widgets/widgets/qmenu/BLACKLIST2
-rw-r--r--tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp56
2 files changed, 57 insertions, 1 deletions
diff --git a/tests/auto/widgets/widgets/qmenu/BLACKLIST b/tests/auto/widgets/widgets/qmenu/BLACKLIST
index 1cde4343d5..837c785141 100644
--- a/tests/auto/widgets/widgets/qmenu/BLACKLIST
+++ b/tests/auto/widgets/widgets/qmenu/BLACKLIST
@@ -26,3 +26,5 @@ android
android
[menuSize_Scrolling]
android
+[QTBUG_89082_actionTipsHide]
+macos ci # Can't move cursor (QTBUG-76312)
diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
index e0f3381b8d..a6016f6d27 100644
--- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
+++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
@@ -47,7 +47,7 @@
#include <QStyleHints>
#include <QTimer>
#include <qdebug.h>
-
+#include <QToolTip>
#include <qpa/qplatformtheme.h>
#include <qpa/qplatformintegration.h>
@@ -114,6 +114,7 @@ private slots:
void QTBUG30595_rtl_submenu();
void QTBUG20403_nested_popup_on_shortcut_trigger();
void QTBUG47515_widgetActionEnterLeave();
+ void QTBUG_89082_actionTipsHide();
void QTBUG8122_widgetActionCrashOnClose();
void widgetActionTriggerClosesMenu();
@@ -1341,6 +1342,59 @@ void tst_QMenu::QTBUG47515_widgetActionEnterLeave()
}
}
+void tst_QMenu::QTBUG_89082_actionTipsHide()
+{
+ if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))
+ QSKIP("Window activation is not supported");
+
+ QWidget widget;
+ QMenu *menu = new QMenu(&widget);
+ menu->addAction("aaa");
+ menu->addAction("bbb");
+ menu->addAction("ccc");
+ menu->addAction("ddd");
+ menu->addAction("eee");
+ menu->addAction("fff");
+ menu->setToolTipsVisible(true);
+
+ auto menuActTip = menu->actions().first();
+ QString tipFullName = "actionTip-this-is-a-long-action-and-show-the-full-name-by-tip";
+ QFontMetrics m_fm = QFontMetrics(QAction().font());
+ const QString &&elidedName = m_fm.elidedText(tipFullName, Qt::ElideRight, 50);
+ menuActTip->setText(elidedName);
+ if (elidedName != tipFullName)
+ menuActTip->setToolTip(tipFullName);
+
+ widget.resize(300, 200);
+ centerOnScreen(&widget);
+ widget.show();
+ widget.activateWindow();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+ menu->popup(widget.geometry().topRight() + QPoint(50, 0));
+ QVERIFY(QTest::qWaitForWindowExposed(menu));
+
+ auto actionZero = menu->actions().at(0);
+ auto actionOne = menu->actions().at(1);
+ auto actionFive = menu->actions().at(5);
+ const QRect submenuRect0 = menu->actionGeometry(actionZero);
+ const QPoint submenuPos0(submenuRect0.topLeft() + QPoint(3, 3));
+
+ const QRect submenuRect1 = menu->actionGeometry(actionOne);
+ const QPoint submenuPos1(submenuRect1.topLeft() + QPoint(3, 3));
+
+ const QRect submenuRect5 = menu->actionGeometry(actionFive);
+ const QPoint submenuPos5(submenuRect5.topLeft() + QPoint(10, 3));
+
+ QTest::mouseMove(menu, submenuPos1);
+ QTest::mouseMove(menu, submenuPos0); //show the tip
+ QTRY_COMPARE_WITH_TIMEOUT(QToolTip::text(), tipFullName, 1000);
+
+ //Move to the fifth action without prompting
+ QTest::mouseMove(menu, submenuPos5);
+ //The previous tip was hidden, but now is a new tip to get text, So there should be no content
+ QTRY_COMPARE_WITH_TIMEOUT(QToolTip::text(), QString(), 1000);
+}
+
void tst_QMenu::QTBUG8122_widgetActionCrashOnClose()
{
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))