summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/widgets/qmenu
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/widgets/qmenu')
-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))