- Relax
template-haskellupper bound to< 2.24to support GHC 9.12.
- Make click dispatch truly menu-owned: store the click dispatch table on the
Gtk.MenuGObject so it survivespopulateGtkMenurefreshes and works correctly for exportedpopulateGtkMenu/buildGtkMenuItemAPIs. - Add
gi-gobjectdependency (used to associate dispatch table with menu).
- Menu-level click dispatch: leaf item actions are registered in a persistent
dispatch table (shared
IORefmap) owned by the menu, not captured in per-widget closures. IndividualonMenuItemActivatehandlers are thin trampolines that look up the action at activation time, decoupling dispatch from widget lifecycles.
- Fix submenu clicks being silently dropped: run
AboutToShowandGetLayoutDBus calls on a forked thread instead of blocking the GTK main loop. Widget updates are posted back viaidleAddatPRIORITY_DEFAULT_IDLEso pending click events are processed first. - Remove redundant
onMenuItemActivaterefresh trigger on parent items (theonWidgetShowhandler on the submenu is sufficient and avoids a double rebuild that created additional windows for lost clicks).
- Fix "menu already attached" GTK warning by removing redundant
menuAttachToWidgetcall on submenus (superseded bymenuItemSetSubmenu)
- Expand module exports (DBusMenu, DBusMenu.Client, DBusMenu.Client.Util)
- Add
dbusmenu-CSS style classes to menu widgets for theming - Fix flaky submenu activation by honoring the
children-displayproperty
- Initial release, extracted from gtk-sni-tray