diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2022-04-15 16:59:27 +0200 |
---|---|---|
committer | Szymon Kłos <eszkadev@gmail.com> | 2022-04-23 10:58:55 +0200 |
commit | 47c9040ca82064be3d4af30cf2b833bba82c08f8 (patch) | |
tree | e3c7dae869d9f83480a20ba3e8da3eb285e78c33 | |
parent | formulabar: move buttons to jsdialog implementation (diff) | |
download | online-47c9040ca82064be3d4af30cf2b833bba82c08f8.tar.gz online-47c9040ca82064be3d4af30cf2b833bba82c08f8.zip |
jsdialog: send special keys for rawKeyEvents mode in textarea
Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: Ic4e6169315e5d0936158f0621869784b48153add
-rw-r--r-- | browser/src/control/Control.JSDialogBuilder.js | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/browser/src/control/Control.JSDialogBuilder.js b/browser/src/control/Control.JSDialogBuilder.js index 99535a5d2d..28718eefa9 100644 --- a/browser/src/control/Control.JSDialogBuilder.js +++ b/browser/src/control/Control.JSDialogBuilder.js @@ -4,7 +4,7 @@ * from the JSON description provided by the server. */ -/* global app $ w2ui _ _UNO L */ +/* global app $ w2ui _ _UNO UNOKey L */ L.Control.JSDialogBuilder = L.Control.extend({ @@ -1424,9 +1424,46 @@ L.Control.JSDialogBuilder = L.Control.extend({ builder.callback('edit', 'change', edit, this.value, builder); }); + edit.addEventListener('keydown', function(event) { + if (data.rawKeyEvents) { + if (event.key === 'Enter') { + builder.callback('edit', 'keypress', edit, UNOKey.RETURN, builder); + event.preventDefault(); + } else if (event.key === 'Escape' || event.key === 'Esc') { + builder.callback('edit', 'keypress', edit, UNOKey.ESCAPE, builder); + event.preventDefault(); + } else if (event.key === 'Left' || event.key === 'ArrowLeft') { + builder.callback('edit', 'keypress', edit, UNOKey.LEFT, builder); + event.preventDefault(); + } else if (event.key === 'Right' || event.key === 'ArrowRight') { + builder.callback('edit', 'keypress', edit, UNOKey.RIGHT, builder); + event.preventDefault(); + } else if (event.key === 'Backspace') { + builder.callback('edit', 'keypress', edit, UNOKey.BACKSPACE, builder); + event.preventDefault(); + } else if (event.key === 'Space') { + builder.callback('edit', 'keypress', edit, UNOKey.SPACE, builder); + event.preventDefault(); + } + } + }); + edit.addEventListener('keypress', function(event) { if (data.rawKeyEvents) { - builder.callback('edit', 'keypress', edit, event.keyCode, builder); + if (event.key === 'Enter' || + event.key === 'Escape' || + event.key === 'Esc' || + event.key === 'Left' || + event.key === 'ArrowLeft' || + event.key === 'Right' || + event.key === 'ArrowRight' || + event.key === 'Backspace' || + event.key === 'Space') { + // skip + } else + builder.callback('edit', 'keypress', edit, event.keyCode, builder); + + event.preventDefault(); } }); |