Skip to content

2K3Z3XC Overlays: a mask of several regions, and keys on request - #371

Merged
T-Crypt merged 4 commits into
devfrom
feature/overlay-mask-regions
Oct 18, 2026
Merged

T-Crypt merged 4 commits into
devfrom
feature/overlay-mask-regions

Conversation

@T-Crypt

@T-Crypt T-Crypt commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Problem

A plugin overlay could hand core one item to mask input to. A surface that draws several separate things, like desktop widgets, had to mask their bounding box, which took the empty desktop's clicks and its right-click menu. An overlay also could never take the keyboard, so a widget holding a text field was impossible.

Plan

Two small, opt-in seams on PluginOverlayWindow. Nothing changes for an overlay that uses neither.

Resolution

  • maskRegion: an overlay item may expose a Region of its own (with child regions) and core uses it as the window mask. Without one, the existing maskItem behaviour is unchanged.
  • wantsKeyboard: while it is true the overlay window takes keyboard focus on demand; otherwise focus stays None as before.

The first user is the Desktop Widgets plugin (aphotic-plugins PR).

  • An overlay now hides while a blocking modal is up (Surfaces.suppressed), the rule every keyboard-taking window follows, so it can never hold keys a modal needs.

A plugin overlay can now hand over its own maskRegion, so a surface that
draws several separate things keeps the gaps clickable, and can ask for
keyboard focus while one of its text fields is in use.
An overlay can take the keyboard now, so it yields to a blocking modal
like every other keyboard-taking window.
@T-Crypt
T-Crypt merged commit 95956a8 into dev Oct 18, 2026
9 checks passed
@T-Crypt
T-Crypt deleted the feature/overlay-mask-regions branch October 19, 2026 14:47
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.

1 participant