From b2bfb16b35634ef937ecc05abb8a9656a4a37932 Mon Sep 17 00:00:00 2001 From: Niclas Overby Date: Sat, 15 Aug 2026 03:46:30 +0200 Subject: [PATCH] test(cider): a half alpha bezel settles who draws last, and the OK label is under ours The previous commit left two explanations standing for the missing OK label and said exactly what would separate them. It took one run. CIDER_BEZEL_ALPHA draws the push button bezel at half alpha, and with it the word OK appears, WHITE, centred, correctly sized, plainly underneath. So the label is not missing, not the wrong size, not in the wrong place, and this corrects what the last message said was unsettled. LibreOffice draws it and something then makes our bezel land ON TOP of it. The button is redrawn three times per alert and the halo control showed the last of those clipped to a four row band, so the likeliest shape is a partial repaint that renders the native bezel again without the text. That is application side repaint sequencing and it wants logging there, not more guessing from here. The other half still holds and both have to be right: the label is WHITE because an application draws it that way when it believes the button is the DEFAULT one, since Apple systems fill that button with the accent colour. Our bezel is white, so even with the ordering fixed it would be white on white. The instrument stays and it is a general one: something opaque that covers another thing cannot be told from a thing that was never drawn, and half alpha separates them in a single run. docs/wayland-ok-label-under-the-bezel.png. --- docs/wayland-ok-label-under-the-bezel.png | Bin 0 -> 9975 bytes docs/wayland-port.md | 21 ++++++++++++ ...f-alpha-bezel-settles-who-draws-last.patch | 30 ++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 docs/wayland-ok-label-under-the-bezel.png create mode 100644 vendor/patches/cocotron/0069-half-alpha-bezel-settles-who-draws-last.patch diff --git a/docs/wayland-ok-label-under-the-bezel.png b/docs/wayland-ok-label-under-the-bezel.png new file mode 100644 index 0000000000000000000000000000000000000000..d4550d58df8a86403b3b29e08333179997058ec9 GIT binary patch literal 9975 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 literal 0 HcmV?d00001 diff --git a/docs/wayland-port.md b/docs/wayland-port.md index 4fb5f7579..ca06c3221 100644 --- a/docs/wayland-port.md +++ b/docs/wayland-port.md @@ -2517,3 +2517,24 @@ label disappearing entirely once the bezel grew. What would separate them is a b alpha, which is one build and one run away. Note also that the cell cannot tell it is the default button: cocotron knows only through [[controlView window] defaultButtonCell], there is no view, and the key equivalent is EMPTY in the trace, so LibreOffice is not marking it that way either. + +## AND IT IS SETTLED: THE OK LABEL IS THERE, UNDER OUR OWN BEZEL + +The entry above left two explanations standing and said what would separate them. It took one run. +CIDER_BEZEL_ALPHA draws the push button bezel at half alpha, and with it the word OK appears, +WHITE, centred, correctly sized, plainly underneath. docs/wayland-ok-label-under-the-bezel.png. + +So the label is not missing, not the wrong size and not in the wrong place. LibreOffice draws it and +then something makes our bezel land ON TOP of it. The button is redrawn three times per alert, and +the halo control showed the last of those clipped to a four row band, so the likeliest shape is a +partial repaint that renders the native bezel again without the text. That is LibreOffice repaint +sequencing and it needs logging on the application side, not more guessing from here. + +WHY THE LABEL IS WHITE, which now matters: it is what an application draws when it believes the +button is the DEFAULT one, since Apple systems fill that button with the accent colour. Our bezel is +white, so even with the ordering fixed the label would be white on white. Both have to be right. +The cell still cannot tell it is the default button: cocotron knows only through the window default +button cell, there is no view, and the key equivalent is empty in the trace. + +The instrument stays, and it is a general one: an opaque thing that covers another cannot be told +apart from a thing that was never drawn, and half alpha separates them in a single run. diff --git a/vendor/patches/cocotron/0069-half-alpha-bezel-settles-who-draws-last.patch b/vendor/patches/cocotron/0069-half-alpha-bezel-settles-who-draws-last.patch new file mode 100644 index 000000000..adfe0c5d7 --- /dev/null +++ b/vendor/patches/cocotron/0069-half-alpha-bezel-settles-who-draws-last.patch @@ -0,0 +1,30 @@ +--- a/AppKit/NSInterfacePart/NSGraphicsStyle.m ++++ b/AppKit/NSInterfacePart/NSGraphicsStyle.m +@@ -398,16 +398,24 @@ + } + + - (void) drawPushButtonNormalInRect: (NSRect) rect defaulted: (BOOL) defaulted { ++ /* ++ * WHO DRAWS LAST, which decides whether a missing button label is the wrong COLOUR or the wrong ++ * ORDER. Set CIDER_BEZEL_ALPHA and this bezel becomes half transparent: a label drawn BEFORE it ++ * shows through, and a label that is simply not there stays not there. Two explanations that ++ * look identical on an opaque button, separated by one run. ++ */ ++ CGFloat alpha = (getenv("CIDER_BEZEL_ALPHA") != NULL) ? 0.5 : 1.0; ++ + if (defaulted) { +- [[NSColor blackColor] setFill]; ++ [[NSColor colorWithCalibratedWhite: 0.0 alpha: alpha] setFill]; + NSRectFill(rect); + rect = NSInsetRect(rect, 1, 1); + } + +- [[NSColor colorWithCalibratedWhite: 0.78 alpha: 1.0] set]; ++ [[NSColor colorWithCalibratedWhite: 0.78 alpha: alpha] set]; + [[NSBezierPath bezierPathWithRoundedRect: rect xRadius: 4 yRadius: 4] fill]; + rect = NSInsetRect(rect, 1, 1); +- [[NSColor whiteColor] set]; ++ [[NSColor colorWithCalibratedWhite: 1.0 alpha: alpha] set]; + [[NSBezierPath bezierPathWithRoundedRect: rect xRadius: 4 yRadius: 4] fill]; + } + -- 2.51.2