diff options
author | Johannes Schickel | 2010-04-04 22:08:18 +0000 |
---|---|---|
committer | Johannes Schickel | 2010-04-04 22:08:18 +0000 |
commit | 9c8813b6d4f1018d63b3b3aa208c2c3ccf87a2eb (patch) | |
tree | efd15c5fd0ba31c637f0d439c8f53a6cea57e9a2 /backends/platform | |
parent | 2e7b049e41eb02722d3daf518a8cfb83f95f8349 (diff) | |
download | scummvm-rg350-9c8813b6d4f1018d63b3b3aa208c2c3ccf87a2eb.tar.gz scummvm-rg350-9c8813b6d4f1018d63b3b3aa208c2c3ccf87a2eb.tar.bz2 scummvm-rg350-9c8813b6d4f1018d63b3b3aa208c2c3ccf87a2eb.zip |
Commit of patch #2980597 "GSoC: GUI: Text input + Right Alt (bug #2978736)".
svn-id: r48524
Diffstat (limited to 'backends/platform')
-rw-r--r-- | backends/platform/sdl/events.cpp | 3 | ||||
-rw-r--r-- | backends/platform/sdl/graphics.cpp | 17 | ||||
-rw-r--r-- | backends/platform/sdl/sdl.h | 1 |
3 files changed, 19 insertions, 2 deletions
diff --git a/backends/platform/sdl/events.cpp b/backends/platform/sdl/events.cpp index 0eff23778b..1965cb3031 100644 --- a/backends/platform/sdl/events.cpp +++ b/backends/platform/sdl/events.cpp @@ -339,10 +339,9 @@ bool OSystem_SDL::handleKeyUp(SDL_Event &ev, Common::Event &event) { if (_scrollLock) event.kbd.flags |= Common::KBD_SCRL; - if ((event.kbd.flags & (Common::KBD_CTRL|Common::KBD_ALT)) == (Common::KBD_CTRL|Common::KBD_ALT)) { + if (isScalerHotkey(event)) // Swallow these key up events return false; - } return true; } diff --git a/backends/platform/sdl/graphics.cpp b/backends/platform/sdl/graphics.cpp index 7cc100375c..c8bd62c572 100644 --- a/backends/platform/sdl/graphics.cpp +++ b/backends/platform/sdl/graphics.cpp @@ -2002,3 +2002,20 @@ bool OSystem_SDL::handleScalerHotkeys(const SDL_KeyboardEvent &key) { return false; } } + +bool OSystem_SDL::isScalerHotkey(const Common::Event &event) { + if ((event.kbd.flags & (Common::KBD_CTRL|Common::KBD_ALT)) == (Common::KBD_CTRL|Common::KBD_ALT)) { + const bool isNormalNumber = (Common::KEYCODE_1 <= event.kbd.keycode && event.kbd.keycode <= Common::KEYCODE_9); + const bool isKeypadNumber = (Common::KEYCODE_KP1 <= event.kbd.keycode && event.kbd.keycode <= Common::KEYCODE_KP9); + const bool isScaleKey = (event.kbd.keycode == Common::KEYCODE_EQUALS || event.kbd.keycode == Common::KEYCODE_PLUS || event.kbd.keycode == Common::KEYCODE_MINUS || + event.kbd.keycode == Common::KEYCODE_KP_PLUS || event.kbd.keycode == Common::KEYCODE_KP_MINUS); + + if (isNormalNumber || isKeypadNumber) { + int keyValue = event.kbd.keycode - (isNormalNumber ? Common::KEYCODE_1 : Common::KEYCODE_KP1); + if (keyValue >= ARRAYSIZE(s_gfxModeSwitchTable)) + return false; + } + return (isScaleKey || event.kbd.keycode == 'a'); + } + return false; +} diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h index dadda65b30..b178d58994 100644 --- a/backends/platform/sdl/sdl.h +++ b/backends/platform/sdl/sdl.h @@ -490,6 +490,7 @@ protected: virtual bool remapKey(SDL_Event &ev, Common::Event &event); bool handleScalerHotkeys(const SDL_KeyboardEvent &key); + bool isScalerHotkey(const Common::Event &event); }; #endif |