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]; + } +