[Scummvm-cvs-logs] SF.net SVN: scummvm:[48524] scummvm/trunk/backends/platform/sdl

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Mon Apr 5 00:08:18 CEST 2010


Revision: 48524
          http://scummvm.svn.sourceforge.net/scummvm/?rev=48524&view=rev
Author:   lordhoto
Date:     2010-04-04 22:08:18 +0000 (Sun, 04 Apr 2010)

Log Message:
-----------
Commit of patch #2980597 "GSoC: GUI: Text input + Right Alt (bug #2978736)".

Modified Paths:
--------------
    scummvm/trunk/backends/platform/sdl/events.cpp
    scummvm/trunk/backends/platform/sdl/graphics.cpp
    scummvm/trunk/backends/platform/sdl/sdl.h

Modified: scummvm/trunk/backends/platform/sdl/events.cpp
===================================================================
--- scummvm/trunk/backends/platform/sdl/events.cpp	2010-04-04 21:25:24 UTC (rev 48523)
+++ scummvm/trunk/backends/platform/sdl/events.cpp	2010-04-04 22:08:18 UTC (rev 48524)
@@ -339,10 +339,9 @@
 	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;
 }

Modified: scummvm/trunk/backends/platform/sdl/graphics.cpp
===================================================================
--- scummvm/trunk/backends/platform/sdl/graphics.cpp	2010-04-04 21:25:24 UTC (rev 48523)
+++ scummvm/trunk/backends/platform/sdl/graphics.cpp	2010-04-04 22:08:18 UTC (rev 48524)
@@ -2002,3 +2002,20 @@
 		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;
+}

Modified: scummvm/trunk/backends/platform/sdl/sdl.h
===================================================================
--- scummvm/trunk/backends/platform/sdl/sdl.h	2010-04-04 21:25:24 UTC (rev 48523)
+++ scummvm/trunk/backends/platform/sdl/sdl.h	2010-04-04 22:08:18 UTC (rev 48524)
@@ -490,6 +490,7 @@
 	virtual bool remapKey(SDL_Event &ev, Common::Event &event);
 
 	bool handleScalerHotkeys(const SDL_KeyboardEvent &key);
+	bool isScalerHotkey(const Common::Event &event);
 };
 
 #endif


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list