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. Pick-to: 6.9 6.8 Task-number: QTBUG-129108 Change-Id: I2daa05932ea00971880747daeffdfa20a8be3f22 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
5b52814d64
commit
9dfd8410b0
@ -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…
x
Reference in New Issue
Block a user