Mercurial
comparison .cms/lib/codemirror/src/display/focus.js @ 0:78edf6b517a0 draft
24.10
author | Coffee CMS <info@coffee-cms.ru> |
---|---|
date | Fri, 11 Oct 2024 22:40:23 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:78edf6b517a0 |
---|---|
1 import { restartBlink } from "./selection.js" | |
2 import { webkit } from "../util/browser.js" | |
3 import { addClass, rmClass } from "../util/dom.js" | |
4 import { signal } from "../util/event.js" | |
5 | |
6 export function ensureFocus(cm) { | |
7 if (!cm.hasFocus()) { | |
8 cm.display.input.focus() | |
9 if (!cm.state.focused) onFocus(cm) | |
10 } | |
11 } | |
12 | |
13 export function delayBlurEvent(cm) { | |
14 cm.state.delayingBlurEvent = true | |
15 setTimeout(() => { if (cm.state.delayingBlurEvent) { | |
16 cm.state.delayingBlurEvent = false | |
17 if (cm.state.focused) onBlur(cm) | |
18 } }, 100) | |
19 } | |
20 | |
21 export function onFocus(cm, e) { | |
22 if (cm.state.delayingBlurEvent && !cm.state.draggingText) cm.state.delayingBlurEvent = false | |
23 | |
24 if (cm.options.readOnly == "nocursor") return | |
25 if (!cm.state.focused) { | |
26 signal(cm, "focus", cm, e) | |
27 cm.state.focused = true | |
28 addClass(cm.display.wrapper, "CodeMirror-focused") | |
29 // This test prevents this from firing when a context | |
30 // menu is closed (since the input reset would kill the | |
31 // select-all detection hack) | |
32 if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { | |
33 cm.display.input.reset() | |
34 if (webkit) setTimeout(() => cm.display.input.reset(true), 20) // Issue #1730 | |
35 } | |
36 cm.display.input.receivedFocus() | |
37 } | |
38 restartBlink(cm) | |
39 } | |
40 export function onBlur(cm, e) { | |
41 if (cm.state.delayingBlurEvent) return | |
42 | |
43 if (cm.state.focused) { | |
44 signal(cm, "blur", cm, e) | |
45 cm.state.focused = false | |
46 rmClass(cm.display.wrapper, "CodeMirror-focused") | |
47 } | |
48 clearInterval(cm.display.blinker) | |
49 setTimeout(() => { if (!cm.state.focused) cm.display.shift = false }, 150) | |
50 } |