Repository navigation
Refuse keyboard typing under a dialog open over its window, and hold the IDE with the reset prompt (#1290) - #1298
Merged
Merged
Conversation
imojenisys
enabled auto-merge (squash)
October 21, 2026 02:16
imojenisys
force-pushed
the
fix/1290-type-under-dialog
branch
from
October 21, 2026 02:59
a60157a to
b139d60
Compare
…the IDE with the reset prompt (#1290) The Edit-and-Continue reset prompt was shown over the active window, often the running form when a tool typed the key, so the code window stayed usable under it, and a second keyboard type_text went into the code, to be reverted with the prompt. The prompt is now shown over the editor's own window. Keyboard type_text and press_key are refused before a key is sent while a modal dialog is open over the window they act in, naming the dialog. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ndow, and keep the prompt off a minimized window (#1290 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
imojenisys
force-pushed
the
fix/1290-type-under-dialog
branch
from
October 21, 2026 03:15
b139d60 to
0041f75
Compare
This was referenced Oct 22, 2026
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.
Closes #1290.
With the Edit-and-Continue reset prompt open and unanswered, a second keyboard
type_textinto the code window returnedtyped 3 key(s). All three keys went into the code under the prompt, to be reverted with it if the prompt was answered No.The reset prompt is now shown over the code editor's own window, as VB6's prompt holds the IDE.
IWindowManager.MessageBoxtakes an optional owner. A minimized or hidden editor window falls back to the active window, as before.Keyboard
type_textandpress_keyare now refused before a key is sent, ahead of their other checks, while a modal dialog is open over the window they act in (directly or through dialogs between). The refusal names the dialog on top, which takes the keys. The reply's note of open dialogs leaves it out.What is unchanged:
A control in a native popup is checked against the window the popup opened from. The
type_textandpress_keydescriptions now say this.Review
One adversarial reviewer, who read the code and ran probe tests. The live checks weren't run, because the review session had no HexIDE MCP tools. So the prompt's owner in a running IDE, the native popup case and a minimized owner were read from the code, not run.
PopupRoot, so the check never ranThe reviewer checked that nothing legitimate is refused: typing into a dialog's own box, Enter on a program MsgBox button, and a non-modal owned window. Find is non-modal. Running forms are unowned, so an IDE-owned dialog doesn't block typing into them. There is no deadlock, and the IDE is re-enabled when the prompt closes.
WindowManageris the only implementation, and the existing substitutes still match.Mutation-checked: both refusals, the dialog recorded as named, the topmost pick, and the view's owner each fail a test when removed.
WindowManager's own use of the owner can't be reached headlessly, because there's no desktop lifetime. Unit 3086 and integration 1429 pass.🤖 Generated with Claude Code