From cc64196c6bb53606d052e7e31e9e549151a23db7 Mon Sep 17 00:00:00 2001 From: titiger Date: Wed, 9 Nov 2016 23:25:59 +0100 Subject: [PATCH] alt+enter #138 Fast toggle on alt+enter and key repeat are different things. This here should fix the alt+enter issue. --- source/shared_lib/include/platform/sdl/window.h | 4 ++++ source/shared_lib/sources/platform/sdl/window.cpp | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/source/shared_lib/include/platform/sdl/window.h b/source/shared_lib/include/platform/sdl/window.h index 22fdb2fe6..82acb2e8c 100644 --- a/source/shared_lib/include/platform/sdl/window.h +++ b/source/shared_lib/include/platform/sdl/window.h @@ -106,6 +106,10 @@ private: static bool isFullScreen; static SDL_keysym keystate; static bool tryVSynch; + static int64 lastToggle ; + + static void setLastToggle(int64 lastToggle) {Window::lastToggle = lastToggle;} + static int64 getLastToggle() {return Window::lastToggle;} static void setLastMouseEvent(int64 lastMouseEvent) {Window::lastMouseEvent = lastMouseEvent;} static int64 getLastMouseEvent() {return Window::lastMouseEvent;} diff --git a/source/shared_lib/sources/platform/sdl/window.cpp b/source/shared_lib/sources/platform/sdl/window.cpp index 3eca0453b..e27f0a82f 100644 --- a/source/shared_lib/sources/platform/sdl/window.cpp +++ b/source/shared_lib/sources/platform/sdl/window.cpp @@ -48,6 +48,7 @@ MouseState Window::mouseState; bool Window::isKeyPressedDown = false; bool Window::isFullScreen = false; SDL_keysym Window::keystate; +int64 Window::lastToggle = -1000; bool Window::isActive = false; #ifdef WIN32 @@ -315,7 +316,7 @@ bool Window::handleEvent() { case SDL_KEYDOWN: { //printf("In SDL_KEYDOWN\n"); if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] =================================== START OF SDL SDL_KEYDOWN ================================\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__); - + if(event.key.repeat!=0) break; keystate = event.key.keysym; bool keyDownConsumed=false; if(global_window) { @@ -365,7 +366,10 @@ bool Window::handleEvent() { // handle ALT+Return if( (keyName == "Return" || keyName == "Enter") && (event.key.keysym.mod & (KMOD_LALT | KMOD_RALT))) { - toggleFullscreen(); + if (Chrono::getCurMillis() - getLastToggle() > 100) { + toggleFullscreen(); + setLastToggle(Chrono::getCurMillis()); + }; keyDownConsumed=true; } #ifdef WIN32