macOS: Fix missing "Search" item in help menu

Define the menu as the help menu directly in the the NSApplication,
since the OS built-in heuristics based on the menu name easily fails.

Fixes: QTCREATORBUG-24751
Change-Id: I9aa50a46099e295ec0c38ee8a9e88d75d41c74ad
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Eike Ziller
2022-10-31 15:27:26 +01:00
parent d9503cdf89
commit 6e8087a1b1
5 changed files with 24 additions and 1 deletions

View File

@@ -253,6 +253,13 @@ void Theme::setInitialPalette(Theme *initTheme)
initialPalette();
}
void Theme::setHelpMenu(QMenu *menu)
{
#ifdef Q_OS_MACOS
Internal::setMacOSHelpMenu(menu);
#endif
}
QPalette Theme::initialPalette()
{
static QPalette palette = copyPalette(QApplication::palette());

View File

@@ -9,6 +9,7 @@
#include <QObject>
QT_BEGIN_NAMESPACE
class QMenu;
class QPalette;
class QSettings;
QT_END_NAMESPACE
@@ -473,6 +474,8 @@ public:
static void setInitialPalette(Theme *initTheme);
static void setHelpMenu(QMenu *menu);
protected:
Theme(Theme *originTheme, QObject *parent = nullptr);
ThemePrivate *d;

View File

@@ -3,11 +3,18 @@
#pragma once
#include <qglobal.h>
QT_BEGIN_NAMESPACE
class QMenu;
QT_END_NAMESPACE
namespace Utils {
namespace Internal {
void forceMacAppearance(bool dark);
bool currentAppearanceIsDark();
void setMacOSHelpMenu(QMenu *menu);
} // Internal
} // Utils

View File

@@ -3,7 +3,7 @@
#include "theme_mac.h"
#include <qglobal.h>
#include <QMenu>
#include <QOperatingSystemVersion>
#include <AppKit/AppKit.h>
@@ -47,5 +47,10 @@ bool currentAppearanceIsDark()
return !currentAppearanceMatches(false /*==light*/);
}
void setMacOSHelpMenu(QMenu *menu)
{
NSApp.helpMenu = menu->toNSMenu();
}
} // Internal
} // Utils

View File

@@ -514,6 +514,7 @@ void MainWindow::registerDefaultContainers()
ac = ActionManager::createMenu(Constants::M_HELP);
menubar->addMenu(ac, Constants::G_HELP);
ac->menu()->setTitle(tr("&Help"));
Theme::setHelpMenu(ac->menu());
ac->appendGroup(Constants::G_HELP_HELP);
ac->appendGroup(Constants::G_HELP_SUPPORT);
ac->appendGroup(Constants::G_HELP_ABOUT);