diff options
Diffstat (limited to 'src/widgets/widgets/qmenu.cpp')
-rw-r--r-- | src/widgets/widgets/qmenu.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 7e48badea5..94cdf2e763 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -187,8 +187,8 @@ void QMenuPrivate::syncPlatformMenu() QPlatformMenuItem *menuItem = platformMenu->createMenuItem(); QAction *action = it.previous(); menuItem->setTag(reinterpret_cast<quintptr>(action)); - QObject::connect(menuItem, SIGNAL(activated()), action, SLOT(trigger())); - QObject::connect(menuItem, SIGNAL(hovered()), action, SIGNAL(hovered())); + QObject::connect(menuItem, SIGNAL(activated()), action, SLOT(trigger()), Qt::QueuedConnection); + QObject::connect(menuItem, SIGNAL(hovered()), action, SIGNAL(hovered()), Qt::QueuedConnection); copyActionToPlatformItem(action, menuItem); platformMenu->insertMenuItem(menuItem, beforeItem); beforeItem = menuItem; @@ -2978,8 +2978,17 @@ static void copyActionToPlatformItem(const QAction *action, QPlatformMenuItem* i { item->setText(action->text()); item->setIsSeparator(action->isSeparator()); - if (action->isIconVisibleInMenu()) + if (action->isIconVisibleInMenu()) { item->setIcon(action->icon()); + if (QWidget *w = action->parentWidget()) { + QStyleOption opt; + opt.init(w); + item->setIconSize(w->style()->pixelMetric(QStyle::PM_SmallIconSize, &opt, w)); + } else { + QStyleOption opt; + item->setIconSize(qApp->style()->pixelMetric(QStyle::PM_SmallIconSize, &opt, 0)); + } + } item->setVisible(action->isVisible()); item->setShortcut(action->shortcut()); item->setCheckable(action->isCheckable()); |