service/tray!: redesign menus / dbusmenu and add native menu support

Reworks dbusmenu menus to be displayable with a system context menu.

Breaks the entire DBusMenu api.
This commit is contained in:
outfoxxed 2024-07-01 20:50:30 -07:00
parent c31bbea837
commit ec362637b8
Signed by untrusted user: outfoxxed
GPG key ID: 4C88A185FB89301E
18 changed files with 898 additions and 191 deletions

View file

@ -41,7 +41,10 @@ public:
[[nodiscard]] bool isReady() const;
[[nodiscard]] QString iconId() const;
[[nodiscard]] QPixmap createPixmap(const QSize& size) const;
[[nodiscard]] qs::dbus::dbusmenu::DBusMenu* createMenu() const;
[[nodiscard]] qs::dbus::dbusmenu::DBusMenu* menu() const;
void refMenu();
void unrefMenu();
void activate();
void secondaryActivate();
@ -70,16 +73,22 @@ public:
signals:
void iconChanged();
void ready();
void menuChanged();
private slots:
void updateIcon();
void onGetAllFinished();
void onMenuPathChanged();
private:
void updateMenuState();
DBusStatusNotifierItem* item = nullptr;
TrayImageHandle imageHandle {this};
bool mReady = false;
dbus::dbusmenu::DBusMenu* mMenu = nullptr;
quint32 menuRefcount = 0;
// bumped to inhibit caching
quint32 iconIndex = 0;