[wip] Fix bubble shadows, multi-screen, and overlay visibility#813
[wip] Fix bubble shadows, multi-screen, and overlay visibility#813shomix wants to merge 2 commits into
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Builder reviewed your changes — looks good ✅
Review Details
Incremental Code Review — PR #813 Update
✅ Previous Issue Resolved
The flagged issue about setCollectionBehavior: replacing the behavior bitmask has been correctly fixed.
What changed:
- Lines 215–219 in
util.rsnow read the current collection behavior mask and OR in the new flag instead of replacing it - Added clear comments explaining why (preserving Tauri's existing window flags like
NSWindowCollectionBehaviorManaged) - Pattern:
let current: usize = objc2::msg_send![&*obj, collectionBehavior]; let _: () = objc2::msg_send![&*obj, setCollectionBehavior: current | 1usize];
Why this fix works:
- ✅ Preserves all existing window behavior flags Tauri may have set
- ✅ Properly adds
NSWindowCollectionBehaviorCanJoinAllSpacesvia bitwise OR - ✅ Follows the correct macOS/AppKit pattern for modifying bitmask properties
Code Quality Review
✅ Error handling complete (handles ns_window and main thread dispatch failures)
✅ Null pointer check present
✅ macOS-only guards with proper non-macOS stub
✅ CSS removals are clean (no functional impact)
✅ Logging appropriate (debug on success, stderr on errors)
✅ Function calls consistent (bubble on show, popover at startup)
Verification: Reviewed by 2 independent code-review agents — both confirmed the fix is correct with no new issues detected.
🧪 Browser testing: Skipped — PR modifies Tauri desktop app, no web UI impact
|
Am testing this changes, will notify when they are ready |
Summary
This PR improves the Clips desktop app's camera bubble and overlay behavior by removing drop shadows, enabling the camera bubble and popover to follow the user across all Mission Control spaces and monitors, and ensuring the overlay is visible above other apps before recording starts.
Problem
Three issues existed in the Clips desktop app:
Solution
box-shadowCSS rules from the camera bubble, pill, and close button elements.set_window_can_join_all_spacesutility that setsNSWindowCollectionBehaviorCanJoinAllSpaceson macOS windows via the Objective-C runtime, making them follow the user across all spaces and monitors.Key Changes
src/styles.css: Removedbox-shadowfrom the camera bubble container, the bubble close button, and the pill control bar.src-tauri/src/util.rs: Addedset_window_can_join_all_spacesutility function (macOS-only) that usesobjc2to setNSWindowCollectionBehaviorCanJoinAllSpaces(bit flag1) on the underlyingNSWindow; no-op stub provided for non-macOS targets.src-tauri/src/clips/mod.rs: Calledset_window_can_join_all_spaceson the camera bubble window when it is shown.src-tauri/src/lib.rs: Calledset_window_can_join_all_spaceson the popover window at app startup so the overlay appears above all apps on every space before recording starts.To clone this PR locally use the Github CLI with command
gh pr checkout 813You can tag me at @BuilderIO for anything you want me to fix or change