I’m adding a custom widget decoration (a contenteditable div) and would like to receive focusin
events for this widget. While I can get a mousedown
event with event.target
set to this contenteditable div, the focusin
event which follows it has event.target
set to the div containing the entire CodeMirror editor. How can I instead get a focusin
event with event.target ===
the contenteditable div?
A solution I found: CodeMirror calls event.preventDefault()
if my event handler returns true, or handles the event itself if my event handler returns false
. I modified the CodeMirror source to do neither if I return null
. However, I’d obviously like an alternative that doesn’t involve editing the source (or accepting a PR with this patch). What’s the best path forward?
I’ve attached a simple demo showing the problem. The user-facing GUI is:
Clicking on the word “Testing” (created by my custom widget decorator) produces the following in the debug console:
Notice that the mousedown event gets the contenteditable div, while the focusin
event gets the entire CodeMirror div. Using the patched version of CodeMirror instead produces:
To build:
npm install npm run build npm run serve
Then, click on codemirror-test.html
.
The code is at: CodeMirror problem with focusin handlers · GitHub