Skip to content

Replace hasExclusiveControl with plugin-scoped exclusive control - #544

Merged
dannyleech merged 3 commits into
mainfrom
exclusive-control
Sep 28, 2026
Merged

dannyleech merged 3 commits into
mainfrom
exclusive-control

Conversation

@dannyleech

@dannyleech dannyleech commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Replace hasExclusiveControl with plugin-scoped exclusive control

hasExclusiveControl was an anonymous boolean that only search set, so CSS couldn't tell which plugin had taken over the interface. Draw needs to hide other controls in its draw and edit modes to make room for its own buttons, and the two plugins would have overwritten each other's flag.

Plugin components now get a setExclusiveControl prop, bound to their plugin id. It adds a single im-o-app--exclusive-control-{pluginId} [--{name}] class to the app root, and each plugin's CSS decides what to hide. Claims stack across plugins, so releasing one brings back the claim underneath, and a plugin can only release its own. Search now uses it, with its behaviour unchanged.

@sonarqubecloud

Copy link
Copy Markdown

@dannyleech
dannyleech merged commit ca195bd into main Sep 28, 2026
2 checks passed
@dannyleech
dannyleech deleted the exclusive-control branch September 28, 2026 13:02
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