Skip to content

Commit e6534d6

Browse files
committed
UiEngine: Add useNativeMenuBar() method
1 parent 871f46c commit e6534d6

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/ui/internal/uiengine.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
#include <QCoreApplication>
44
#include <QPushButton>
5+
#ifdef Q_OS_LINUX
6+
#include <QtDBus/QDBusConnection>
7+
#include <QtDBus/QDBusConnectionInterface>
8+
#endif
59

610
#include "uiengine.h"
711

@@ -66,3 +70,24 @@ void UiEngine::setActiveFocusItem(QQuickItem *newActiveFocusItem)
6670
m_activeFocusItem = newActiveFocusItem;
6771
emit activeFocusItemChanged();
6872
}
73+
74+
bool UiEngine::useNativeMenuBar() const
75+
{
76+
#if defined(Q_OS_MACOS)
77+
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
78+
return true;
79+
#else
80+
// Since Qt 6.8, Qt Quick Controls menu bar is native
81+
return false;
82+
#endif
83+
#elif defined(Q_OS_LINUX)
84+
const QDBusConnection connection = QDBusConnection::sessionBus();
85+
static const QString registrarService = QStringLiteral("com.canonical.AppMenu.Registrar");
86+
if (const auto iface = connection.interface())
87+
return iface->isServiceRegistered(registrarService);
88+
else
89+
return false;
90+
#else
91+
return false;
92+
#endif
93+
}

src/ui/internal/uiengine.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class UiEngine
1919
{
2020
Q_OBJECT
2121
Q_PROPERTY(QQuickItem *activeFocusItem READ activeFocusItem WRITE setActiveFocusItem NOTIFY activeFocusItemChanged)
22+
Q_PROPERTY(bool useNativeMenuBar READ useNativeMenuBar NOTIFY useNativeMenuBarChanged FINAL)
2223

2324
public:
2425
explicit UiEngine(QObject *parent = nullptr);
@@ -34,8 +35,11 @@ class UiEngine
3435
QQuickItem *activeFocusItem() const;
3536
void setActiveFocusItem(QQuickItem *newActiveFocusItem);
3637

38+
bool useNativeMenuBar() const;
39+
3740
signals:
3841
void activeFocusItemChanged();
42+
void useNativeMenuBarChanged();
3943

4044
private:
4145
static std::shared_ptr<UiEngine> m_instance;

0 commit comments

Comments
 (0)