From cb6fecd2a699372f2281c9f680d5ae56f3db0cf1 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sat, 15 Jun 2019 08:51:27 +1000 Subject: [PATCH] Intercept actions like ctrl+S in web client --- src/Window.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Window.c b/src/Window.c index 3908637d9..df59ff17c 100644 --- a/src/Window.c +++ b/src/Window.c @@ -2550,10 +2550,15 @@ static EM_BOOL Window_Key(int type, const EmscriptenKeyboardEvent* ev , void* da } Key_SetPressed(key, type == EMSCRIPTEN_EVENT_KEYDOWN); + /* KeyUp always intercepted */ if (type != EMSCRIPTEN_EVENT_KEYDOWN) return true; - /* Must not intercept keydown for regular keys, otherwise KeyPress doesn't get raised */ - /* However, do want to prevent browser's behaviour on F11,F5, home etc */ + /* If holding down Ctrl or Alt, keys aren't going to generate a KeyPress event anyways */ + /* This intercepts Ctrl + S, Ctrl + T, etc */ + if (Key_IsControlPressed() || Key_IsAltPressed() || Key_IsWinPressed()) return true; + + /* Must not intercept KeyDown for regular keys, otherwise KeyPress doesn't get raised */ + /* However, do want to prevent browser's behaviour on F11, F5, home etc */ /* e.g. not preventing F11 means browser makes page fullscreen instead of just canvas */ return (key >= KEY_F1 && key <= KEY_F35) || (key >= KEY_UP && key <= KEY_RIGHT) || (key >= KEY_INSERT && key <= KEY_MENU) || (key >= KEY_ENTER && key <= KEY_NUMLOCK && key != KEY_SPACE);