From 53ee40af70976ea028d58af9b8d1f091e7f6e03c Mon Sep 17 00:00:00 2001 From: Deve Date: Tue, 20 Dec 2016 23:05:26 +0100 Subject: [PATCH] Update multitouch device when settings are changed --- src/input/multitouch_device.cpp | 18 +++++++++++++----- src/input/multitouch_device.hpp | 2 ++ .../dialogs/multitouch_settings_dialog.cpp | 17 ++++++++++++++--- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/input/multitouch_device.cpp b/src/input/multitouch_device.cpp index 3e06d10fd..a27072170 100644 --- a/src/input/multitouch_device.cpp +++ b/src/input/multitouch_device.cpp @@ -44,11 +44,7 @@ MultitouchDevice::MultitouchDevice() event.y = 0; } - m_deadzone_center = UserConfigParams::m_multitouch_deadzone_center; - m_deadzone_center = std::min(std::max(m_deadzone_center, 0.0f), 0.5f); - - m_deadzone_edge = UserConfigParams::m_multitouch_deadzone_edge; - m_deadzone_edge = std::min(std::max(m_deadzone_edge, 0.0f), 0.5f); + updateConfigParams(); } // MultitouchDevice // ---------------------------------------------------------------------------- @@ -225,6 +221,18 @@ void MultitouchDevice::updateDeviceState(unsigned int event_id) } } // updateDeviceState +// ---------------------------------------------------------------------------- +/** Updates config parameters i.e. when they are modified in options + */ +void MultitouchDevice::updateConfigParams() +{ + m_deadzone_center = UserConfigParams::m_multitouch_deadzone_center; + m_deadzone_center = std::min(std::max(m_deadzone_center, 0.0f), 0.5f); + + m_deadzone_edge = UserConfigParams::m_multitouch_deadzone_edge; + m_deadzone_edge = std::min(std::max(m_deadzone_edge, 0.0f), 0.5f); +} // updateConfigParams + // ---------------------------------------------------------------------------- /** Helper function that returns a steering factor for steering button. * \param value The axis value from 0 to 1. diff --git a/src/input/multitouch_device.hpp b/src/input/multitouch_device.hpp index eb32b5720..580554dbf 100644 --- a/src/input/multitouch_device.hpp +++ b/src/input/multitouch_device.hpp @@ -107,6 +107,8 @@ public: void updateDeviceState(unsigned int event_id); void handleControls(MultitouchButton* button); + + void updateConfigParams(); }; // MultitouchDevice diff --git a/src/states_screens/dialogs/multitouch_settings_dialog.cpp b/src/states_screens/dialogs/multitouch_settings_dialog.cpp index f163b5614..3df12258c 100644 --- a/src/states_screens/dialogs/multitouch_settings_dialog.cpp +++ b/src/states_screens/dialogs/multitouch_settings_dialog.cpp @@ -19,6 +19,9 @@ #include "config/user_config.hpp" #include "guiengine/widgets/spinner_widget.hpp" +#include "input/device_manager.hpp" +#include "input/input_manager.hpp" +#include "input/multitouch_device.hpp" #include "utils/translation.hpp" #include @@ -59,18 +62,26 @@ GUIEngine::EventPropagation MultitouchSettingsDialog::processEvent( { SpinnerWidget* scale = getWidget("scale"); assert(scale != NULL); - UserConfigParams::m_multitouch_scale = scale->getValue() / 100.0f; + UserConfigParams::m_multitouch_scale = (float)scale->getValue() / 100.0f; SpinnerWidget* deadzone_edge = getWidget("deadzone_edge"); assert(deadzone_edge != NULL); UserConfigParams::m_multitouch_deadzone_edge = - deadzone_edge->getValue() / 100.0f; + (float)deadzone_edge->getValue() / 100.0f; SpinnerWidget* deadzone_center = getWidget("deadzone_center"); assert(deadzone_center != NULL); UserConfigParams::m_multitouch_deadzone_center = - deadzone_center->getValue() / 100.0f; + (float)deadzone_center->getValue() / 100.0f; + MultitouchDevice* touch_device = input_manager->getDeviceManager()-> + getMultitouchDevice(); + + if (touch_device != NULL) + { + touch_device->updateConfigParams(); + } + user_config->saveConfig(); ModalDialog::dismiss();