https://bugs.kde.org/show_bug.cgi?id=375951

--- Comment #8 from Chris Holland <zrenf...@gmail.com> ---
Figured I'd poke at the code to see how this works.

The application menu button currently only has a single bool property that's
exposed to the Breeze KDecoration via KWin's AbstractClient. This lets breeze
draw the button, then signal kwin to open a "context menu" below the button.
Right now, it's opening the "root" of the menu. In theory we could open a
specific submenu (eg: File) if we know the index.

Essentially, the KDecoration needs to know the top level menu items. Their
index + text label. We probably also have to consider the top level Alt+___
shortcuts too in the future.

Should show button?

* https://github.com/KDE/breeze/blob/master/kdecoration/breezebutton.cpp#L326
* https://github.com/KDE/kdecoration/blob/master/src/decorationbutton.cpp#L84
* https://github.com/KDE/kdecoration/blob/master/src/decoratedclient.cpp#L72
* https://github.com/KDE/kwin/blob/master/abstract_client.cpp#L1691

On button click

* https://github.com/KDE/breeze/blob/master/kdecoration/breezebutton.cpp#L326
* https://github.com/KDE/kdecoration/blob/master/src/decorationbutton.cpp#L88
* https://github.com/KDE/kdecoration/blob/master/src/decoration.cpp#L198
* https://github.com/KDE/kwin/blob/master/decorations/decoratedclient.cpp#L221
* https://github.com/KDE/kwin/blob/master/useractions.cpp#L1690
* https://github.com/KDE/kwin/blob/master/appmenu.cpp#L113

at least 3 repos need to be patched for this it seems.

The appmenu widget should be a good reference for parsing the top level menu
items.

* https://github.com/KDE/plasma-workspace/tree/master/applets/appmenu/plugin

I wonder if the breeze kdecoration could connect directly to the appmenu qdbus
interface without modifying the kwin or kdecoration repos. That way it could
read the top level labels and draw "buttons" itself. Would be easier to get
started/test. Could even use SierraBreeze as a testbed since the repo is just
the kdecoration.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to