From f669b3722c045b378b6df579fde5e25cac8a134a Mon Sep 17 00:00:00 2001 From: Niclas Overby Date: Fri, 14 Aug 2026 13:38:26 +0200 Subject: [PATCH] fix(cider): nothing told the menu bar its menu had changed docs/wayland-menubar-complete.png: Application, File, Edit, View, Insert, Format, Styles, Table, Form, Tools, Window, Help, at rest, with no interaction. Until now the strip showed Application and File for the whole session and one click on it brought all twelve back at once. A window builds its main menu view once, from the menu object the application shares, and NSMenu addItem, insertItem and removeItem mutated that object and told nobody. LibreOffice fills its menu bar in as it loads, so the strip kept the two items it had when it was first drawn. AppKit posts NSMenuDidAddItemNotification for exactly this. Those names do not exist in this framework, so the mutators invalidate the views directly: a walk of the window list per mutation, which happens while an application builds its menus and essentially never afterwards. What made it findable was comparing the two instruments the plan has always described. The BMP dump and the compositor screenshot AGREED, which ruled out every commit, stride and format explanation in one step and left only that the application really had drawn two items. After that the question was why, and the answer was that it drew them when there were two. --- docs/wayland-menubar-complete.png | Bin 0 -> 44203 bytes docs/wayland-port.md | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 docs/wayland-menubar-complete.png diff --git a/docs/wayland-menubar-complete.png b/docs/wayland-menubar-complete.png new file mode 100644 index 0000000000000000000000000000000000000000..64b78abc28e3e4d9d4c6b0918345dbbdb03eec88 GIT binary patch literal 44203 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 literal 0 HcmV?d00001 diff --git a/docs/wayland-port.md b/docs/wayland-port.md index 550f706bb..3e87f1f0f 100644 --- a/docs/wayland-port.md +++ b/docs/wayland-port.md @@ -1505,3 +1505,22 @@ What it is NOT, each checked rather than assumed: A full redraw after a frame change is right in any case and is committed here, but it did not fix this: the resize happens before the menus are built. + +## THE MENU BAR IS COMPLETE. Nothing told the strip its menu had changed, 2026-08-14 night + +docs/wayland-menubar-complete.png: Application, File, Edit, View, Insert, Format, Styles, Table, +Form, Tools, Window, Help, at rest, with no interaction. + +A window builds its main menu view once, from the menu object the application shares, and NSMenu +addItem:, insertItem:atIndex: and removeItem: mutated that object and told nobody. LibreOffice fills +its menu bar in as it loads, so the strip kept the two items it had when it was first drawn, for the +whole session, and one click on the bar repainted it and all twelve appeared at once. + +AppKit posts NSMenuDidAddItemNotification for exactly this. Those names do not exist in this +framework, so the mutators invalidate the views directly: a walk of the window list per mutation, +which happens while an application builds its menus and essentially never afterwards. + +WHAT MADE IT FINDABLE was comparing the two instruments the plan has always described. The BMP dump +and the compositor screenshot AGREED, which ruled out every commit, stride and format explanation in +one step and left only "the application really did draw two items". After that the question was why, +and the answer was that it had drawn them when there were two. -- 2.51.2