Repository navigation
Fix GTK popup transparency proof during capture - #401
Merged
Merged
Conversation
Observe the serial and frame counter when GTK snapshots fresh alpha-zero proof content, instead of accepting a shared after-paint event. Preserve stale-proof rejection and the existing mapped-surface and compositor-feedback checks. Keep empty menu proof wrappers at least one pixel so GTK snapshots them. Exercise real GtkPopover and GtkPopoverMenu surfaces through an isolated Wayland proxy, including menu restoration and an exact child execution check. Fold the unused counter helper into the drag paint callback. The paintable has its own module; the wrapper stays in view/mod.rs because its observation and refresh state belong to that existing owner. The native regressions fail before their respective repairs and pass afterward. Full local validation and both GTK gates pass. Related to #398; the separate layout-change toast is unresolved.
Require execution markers for the native popup race and empty menu proof. Install explicit Python and Mesa dependencies in the widget CI profile, and document pkg-config and ordinary display-backed test behavior. Add parity fixtures for shell and C# admission failures, private runtime cleanup, and process failure propagation. Both actual GTK gates pass 86 tests with four required markers; the full local gate passes, including all four parity cases.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bind GTK capture suppression to the frame that snapshots fresh transparent proof
content on the native surface. A parent
after-paintevent on the shared clockcould previously select a counter the frozen popup never rendered, causing a
500 ms toolbar transparency timeout.
GdkPaintable; keepthe existing mapping, withdrawal, stale-proof and compositor-feedback checks.
GtkPopoverMenuregression exposed a zero-area proof that GTK never snapshotted.
that withholds one real callback and forwards file descriptors unchanged.
GTK gates; add shell/C# gate parity fixtures and document dependencies.
unused-helper cleanup.
Related to #398. The reporter's separate display layout changed toast remains
unexplained; this PR should leave that issue open.
Validation
65b6410dfor the intendedmissing Canvas compositor feedback and passes with this repair.
afterward, including restoration of its original model and class-owned child.
./tools/lint-and-test.shpassed: strict Clippy, all/no-default-featureworkspace checks, 5,227/5,041 root unit tests and 79 C# tool cases.
passed all 86 tests and the native execution markers on GTK 4.14.5.
three button Freeze captures passed; observer pixels verified the frozen active
output and continued repainting on the other output.
Remaining coverage limits
but GTK dismissed it before barrier target collection. A deterministic tooltip
frame-acknowledgment regression remains a follow-up.
the popup's rendered frame; it does not add per-surface completion tracking.