Fix submenu navigation.
Bring back code that was removed in Qt 4: 60324267fbb8a8554e62aaf9ef01360709292320 for QTBUG-7411 . This code reselects the submenu action of a currently opened popup when the mouse is moved to the submenu crossing other actions. In addition, make sure it only triggers when the reason is not keyboard selection. Task-number: QTBUG-20094 Change-Id: Ibb73f83e86635083aad8b1e79fc0fdd512c65754 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
This commit is contained in:
parent
a025a2fcfa
commit
0a91c9df01
@ -543,6 +543,16 @@ void QMenuPrivate::setCurrentAction(QAction *action, int popup, SelectionReason
|
|||||||
{
|
{
|
||||||
Q_Q(QMenu);
|
Q_Q(QMenu);
|
||||||
tearoffHighlighted = 0;
|
tearoffHighlighted = 0;
|
||||||
|
// Reselect the currently active action in case mouse moved over other menu items when
|
||||||
|
// moving from sub menu action to sub menu (QTBUG-20094).
|
||||||
|
if (reason != SelectedFromKeyboard && action == currentAction && !(action && action->menu() && action->menu() != activeMenu)) {
|
||||||
|
if (QMenu *menu = qobject_cast<QMenu*>(causedPopup.widget)) {
|
||||||
|
if (causedPopup.action && menu->d_func()->activeMenu == q)
|
||||||
|
menu->d_func()->setCurrentAction(causedPopup.action, 0, reason, false);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (currentAction)
|
if (currentAction)
|
||||||
q->update(actionRect(currentAction));
|
q->update(actionRect(currentAction));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user