|
From: Lasse Kärkkäi. <tr...@us...> - 2009-08-18 22:33:26
|
Module: performous
Branch: master
Commit: 819e5f1e4e2a089ce070cc43e1120dcf5c749a35
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Aug 19 01:32:13 2009 +0300
Make global shortcuts such as Alt+Enter higher priority than keyboard guitar.
---
game/main.cc | 56 +++++++++++++++++++++++++++-----------------------------
1 files changed, 27 insertions(+), 29 deletions(-)
diff --git a/game/main.cc b/game/main.cc
index 424054c..064b4e8 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -40,38 +40,36 @@ static void checkEvents_SDL(ScreenManager& sm, Window& window) {
static bool esc = false;
SDL_Event event;
while(SDL_PollEvent(&event) == 1) {
- // catch input event first
- if(!input::SDL::pushEvent(event)) {
- switch(event.type) {
- case SDL_QUIT:
+ switch(event.type) {
+ case SDL_QUIT:
+ sm.finished();
+ break;
+ case SDL_VIDEORESIZE:
+ window.resize(event.resize.w, event.resize.h);
+ break;
+ case SDL_KEYUP:
+ if (event.key.keysym.sym == SDLK_ESCAPE) esc = false;
+ break;
+ case SDL_KEYDOWN:
+ int keypressed = event.key.keysym.sym;
+ SDLMod modifier = event.key.keysym.mod;
+ // Workaround for key repeat on escape
+ if (keypressed == SDLK_ESCAPE) {
+ if (esc) return;
+ esc = true;
+ }
+ if (keypressed == SDLK_RETURN && modifier & KMOD_ALT ) {
+ config["graphic/fullscreen"].b() = !config["graphic/fullscreen"].b();
+ continue; // Already handled here...
+ }
+ if (keypressed == SDLK_F4 && modifier & KMOD_ALT) {
sm.finished();
- break;
- case SDL_VIDEORESIZE:
- window.resize(event.resize.w, event.resize.h);
- break;
- case SDL_KEYUP:
- if (event.key.keysym.sym == SDLK_ESCAPE) esc = false;
- break;
- case SDL_KEYDOWN:
- int keypressed = event.key.keysym.sym;
- SDLMod modifier = event.key.keysym.mod;
- // Workaround for key repeat on escape
- if (keypressed == SDLK_ESCAPE) {
- if (esc) return;
- esc = true;
- }
- if (keypressed == SDLK_RETURN && modifier & KMOD_ALT ) {
- config["graphic/fullscreen"].b() = !config["graphic/fullscreen"].b();
- continue; // Already handled here...
- }
- if (keypressed == SDLK_F4 && modifier & KMOD_ALT) {
- sm.finished();
- continue; // Already handled here...
- }
- break;
+ continue; // Already handled here...
}
- sm.getCurrentScreen()->manageEvent(event);
+ break;
}
+ // Forward to screen if the input system doesn't eat the event first
+ if(!input::SDL::pushEvent(event)) sm.getCurrentScreen()->manageEvent(event);
switch(glGetError()) {
case GL_INVALID_ENUM: std::cerr << "OpenGL error: invalid enum" << std::endl; break;
case GL_INVALID_VALUE: std::cerr << "OpenGL error: invalid value" << std::endl; break;
|