QMenu: improve test for "empty menu" to be style-independent
This amends commit 353ce5344fbde5a6cecbdd2c131e1cf0f4b7f383 so that the behavior doesn't depend on the widget style. If QStyle::PM_MenuPanelWidth returns 2, then size will be (2x2), which is hardly a valid menu to show - don't show that either. Task-number: QTBUG-129108 Change-Id: I2daa05932ea00971880747daeffdfa20a8be3f22 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 9dfd8410b07b0c484443ad6355004ace5f9b2b8b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit bbc46bbc7a15728264574c39e13b6be4c9229b54)bb10
parent
ea5e5a2e7f
commit
d275841dd1
|
|
@ -2450,7 +2450,8 @@ void QMenuPrivate::popup(const QPoint &p, QAction *atAction, PositionFunction po
|
|||
}
|
||||
|
||||
// do nothing if we don't have a valid size, e.g. when all actions are invisible
|
||||
if (!size.isValid()) {
|
||||
const auto rectIsNull = [](const QRect &rect) { return rect.isNull(); };
|
||||
if (std::all_of(actionRects.cbegin(), actionRects.cend(), rectIsNull)) {
|
||||
eventLoop = nullptr;
|
||||
syncAction = nullptr;
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -2175,11 +2175,8 @@ void tst_QMenu::invisibleActions()
|
|||
action->setVisible(false);
|
||||
|
||||
contextMenu.popup(globalPos);
|
||||
QCOMPARE(contextMenu.isVisible(), contextMenu.sizeHint().isValid());
|
||||
|
||||
// if it wasn't shown previously, then exec() shouldn't do anything either
|
||||
if (!contextMenu.isVisible())
|
||||
QVERIFY(!contextMenu.exec());
|
||||
QVERIFY(!contextMenu.isVisible());
|
||||
QVERIFY(!contextMenu.exec());
|
||||
}
|
||||
|
||||
#if QT_CONFIG(shortcut) && !defined(Q_OS_DARWIN)
|
||||
|
|
|
|||
Loading…
Reference in New Issue