-
Notifications
You must be signed in to change notification settings - Fork 8.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Filter focus events that came from the API #13260
Conversation
@check-spelling-bot ReportUnrecognized words, please review:
Previously acknowledged words that are now absentazurewebsites Checkin condev Consolescreen css cxcy DCompile debolden deconstructed DECRST DECRSTS devicefamily dxp errno FARPROC GETKEYSTATE guardxfg HPAINTBUFFER HPROPSHEETPAGE iconify ipa LLVM LPCHARSETINFO MAPVIRTUALKEY MSDL mspartners ned newcursor nlength NOWAIT PENDTASKMSG pgorepro pgort PGU Poli PPORT PSMALL redistributable SOURCESDIRECTORY Timeline timelines toolbars unintense UWA UWAs VKKEYSCAN wddmconrenderer wdx windev WResult xfgTo accept these unrecognized words as correct (and remove the previously acknowledged and now absent words), run the following commands... in a clone of the git@github.com:microsoft/terminal.git repository
✏️ Contributor please read thisBy default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.
If the listed items are:
See the 🔬 You can test your commits without appending to a PR by creating a new branch with that extra change and pushing it to your fork. The check-spelling action will run in response to your push -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. 😉 🗜️ If you see a bunch of garbageIf it relates to a ... well-formed patternSee if there's a pattern that would match it. If not, try writing one and adding it to a Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines. Note that patterns can't match multiline strings. binary-ish stringPlease add a file path to the File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.
|
Big s/o to @j4james for coming up with this one. |
@@ -514,12 +514,14 @@ class FocusEvent : public IInputEvent | |||
{ | |||
public: | |||
constexpr FocusEvent(const FOCUS_EVENT_RECORD& record) : | |||
_focus{ !!record.bSetFocus } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and we're certain that nobody else uses this ctor?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other than WriteConsoleInputAImpl
and WriteConsoleInputWImpl
, it's potentially used in a few places in the InputBuffer
class when moving IInputEvent
records around (calling IInputEvent::Create
on the result of a ToInputRecord
call). I don't think those are likely to be a problem though.
IInputEvent::Create
is also called in a couple of places in InputStateMachineEngine
, but those are exclusively for keyboard and mouse events as far as I can see.
I think the rest are all in tests, which I didn't bother looking at, but I see now they've resulted in some test failures. Hopefully those are just tests that need to be updated, though, and not an indication that there's something fundamentally wrong with this approach.
It turns out the unit tests use that ctor to inject focus events ;) and then make sure focus VT comes out
|
I think that particular test is just checking whether terminal/src/terminal/input/terminalInput.cpp Lines 533 to 536 in cbdbdbb
Semantically I'm not actually sure what the correct return should be though. Prior to this PR it would have depended on whether mouse focus mode was enabled or not, so maybe false would be more appropriate given we're not generating the focus reports in this case. I'm curious what the implications are for any |
Co-authored-by: Dustin L. Howett <duhowett@microsoft.com>
Hello @DHowett! Because this pull request has the p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (
|
As described in #13238. libuv sends a focus event to jiggle the handle. Now that we support focus events as VT input (#12900), we'd translate those focus events to VT input as well. That combination of things caused exiting neovim to emit a `\x1b[O` to the input line of the shell when exited. To fix this, we're going to secretly filter out any focus events that came from the API, before translating to VT. We're fortunate here, the `FOCUS_EVENT_RECORD` version of the ctor is only called by the API. * [x] Closes #13238 (cherry picked from commit b22684e) Service-Card-Id: 83027721 Service-Version: 1.14
🎉 Handy links: |
🎉 Handy links: |
As described in #13238. libuv sends a focus event to jiggle the handle. Now that we support focus events as VT input (#12900), we'd translate those focus events to VT input as well. That combination of things caused exiting neovim to emit a
\x1b[O
to the input line of the shell when exited.To fix this, we're going to secretly filter out any focus events that came from the API, before translating to VT. We're fortunate here, the
FOCUS_EVENT_RECORD
version of the ctor is only called by the API.[O
erroneously inputted after exiting from Neovim 0.7.0 in latest Terminal Preview #13238