summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2022-04-15 16:59:27 +0200
committerSzymon Kłos <eszkadev@gmail.com>2022-04-23 10:58:55 +0200
commit47c9040ca82064be3d4af30cf2b833bba82c08f8 (patch)
treee3c7dae869d9f83480a20ba3e8da3eb285e78c33
parentformulabar: move buttons to jsdialog implementation (diff)
downloadonline-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.js41
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();
}
});