aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/sdl
diff options
context:
space:
mode:
authorJohannes Schickel2010-04-04 22:08:18 +0000
committerJohannes Schickel2010-04-04 22:08:18 +0000
commit9c8813b6d4f1018d63b3b3aa208c2c3ccf87a2eb (patch)
treeefd15c5fd0ba31c637f0d439c8f53a6cea57e9a2 /backends/platform/sdl
parent2e7b049e41eb02722d3daf518a8cfb83f95f8349 (diff)
downloadscummvm-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/sdl')
-rw-r--r--backends/platform/sdl/events.cpp3
-rw-r--r--backends/platform/sdl/graphics.cpp17
-rw-r--r--backends/platform/sdl/sdl.h1
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