From 02b992821a3390fdd82ba8081d1acfa9ae4e7b65 Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Mon, 28 Dec 2015 04:23:06 +1100 Subject: [PATCH] Reimplement preference flag event handling in member function hook --- src/events.cpp | 9 ++++++--- src/preferences.cpp | 15 +++++++++++++++ src/preferences.hpp | 4 ++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/events.cpp b/src/events.cpp index e162f469726..a8d75052f58 100644 --- a/src/events.cpp +++ b/src/events.cpp @@ -445,12 +445,15 @@ void pump() case SDL_WINDOWEVENT_RESIZED: info.resize_dimensions.first = event.window.data1; info.resize_dimensions.second = event.window.data2; - - preferences::_set_resolution( - std::make_pair(event.window.data1,event.window.data2)); break; } + // Hook into preferences event handling + // This probably isn't the right place for this but I really don't + // know where else to put it. + // - Vultraz, 12/28/2015 + preferences::handle_event(event); + break; #else case SDL_ACTIVEEVENT: { diff --git a/src/preferences.cpp b/src/preferences.cpp index 7bd03bb8726..e099e13724a 100644 --- a/src/preferences.cpp +++ b/src/preferences.cpp @@ -91,6 +91,21 @@ base_manager::~base_manager() } catch (...) {} } +/* + * Hook for setting window state variables on window resize and maximize + * events. Since there is no fullscreen window event, that setter is called + * from the CVideo function instead. + */ +void handle_event(const SDL_Event& event) +{ + switch(event.window.event) { + case SDL_WINDOWEVENT_RESIZED: + _set_resolution(std::make_pair(event.window.data1,event.window.data2)); + + break; + } +} + void write_preferences() { #ifndef _WIN32 diff --git a/src/preferences.hpp b/src/preferences.hpp index cb1bb352f8f..5ea75f4a3ba 100644 --- a/src/preferences.hpp +++ b/src/preferences.hpp @@ -22,6 +22,8 @@ class display; #include "terrain_translation.hpp" +#include "SDL.h" + #include namespace hotkey { @@ -37,6 +39,8 @@ namespace preferences { ~base_manager(); }; + void handle_event(const SDL_Event& event); + void write_preferences(); void set(const std::string& key, const std::string &value);