flexx icon indicating copy to clipboard operation
flexx copied to clipboard

Ace editor grabs too many keys

Open edreamleo opened this issue 7 years ago • 3 comments

The code in flexx issue #312 does not work in a flx.Widget that wraps an ace editor, as shown in the ace editor example. True, this is not really a flexx issue, but any words of wisdom would be appreciated.

Here is the present emitter for the body pane:

# **Does** fire for most plain keys and control keys.
# Does **not** fire for Ctrl-A, Ctrl-F, tab or backspace.

@flx.emitter
def key_press(self, e):
    ev = self._create_key_event(e)
    f_key = not ev['modifiers'] and ev['key'].startswith('F')
    print('BODY: key_press', repr(ev), 'preventDefault', not f_key)
    if not f_key:
        e.preventDefault()
    return ev

This is a serious problem for LeoWapp. I shall investigate what CodeMirror does.

Actually, this (over?) simplified emitter exhibits the same behavior:

@flx.emitter
def key_press(self, e):
    ev = self._create_key_event(e)
    e.preventDefault()
    return ev

edreamleo avatar Nov 30 '18 12:11 edreamleo

I believe you'll have to look up the specifics of the browser runtime you're using in this case.

Korijn avatar Nov 30 '18 17:11 Korijn

@Korijn Thanks for your helpful comment. As a newbie, I was unaware of browser differences.

edreamleo avatar Dec 01 '18 13:12 edreamleo

I suspect that the editors will also consume (i.e. call e.preventDefault()) certain events. Tab is a good example. The editor need to consume that event, or the browser will see the tab key and change focus to the next tabbable element.

almarklein avatar Dec 03 '18 13:12 almarklein