Skip to content

Fix hidden overlay chrome intercepting new selection drags#219

Open
chablino wants to merge 2 commits into
sw33tLie:mainfrom
chablino:fix-hidden-overlay-chrome-hits-upstream
Open

Fix hidden overlay chrome intercepting new selection drags#219
chablino wants to merge 2 commits into
sw33tLie:mainfrom
chablino:fix-hidden-overlay-chrome-hits-upstream

Conversation

@chablino
Copy link
Copy Markdown

Summary

This fixes an intermittent issue where starting a new screenshot selection could fail when the drag began over the previous position of hidden overlay chrome, such as the tool options row.

The overlay reuses toolbar/options views between capture sessions. In some cases, super.hitTest(_:) could still resolve a mouse-down to a hidden or inactive chrome subview, preventing OverlayView.mouseDown(with:) from starting the selection.

This change keeps visible toolbar/options behavior unchanged, but ignores hidden or inactive overlay chrome hits and routes those mouse events back to OverlayView.

Test Plan

  • Built successfully with:
    xcodebuild -project macshot.xcodeproj -scheme macshot -configuration Debug -derivedDataPath / private/tmp/macshot-derived-data CODE_SIGNING_ALLOWED=NO build
  • Manually tested repeated screenshot sessions through the previously affected narrow region; selection starts normally instead of being swallowed by the hidden options row.

Demo

Before

before.mp4

After

after.mp4

Copilot AI review requested due to automatic review settings May 31, 2026 04:50
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Updates OverlayView hit-testing so clicks on inactive/hidden chrome (toolbars/strips/options row) are ignored and routed back to the overlay instead of the chrome subviews.

Changes:

  • Overrides hitTest(_:) to post-process the result and return self for inactive chrome hits.
  • Adds helper methods to detect whether the hit view is within chrome and whether any ancestors are hidden.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread macshot/UI/Overlay/OverlayView.swift Outdated
Comment thread macshot/UI/Overlay/OverlayView.swift Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants