From 4f169b4d8f04b4dece25a6560d6cd869a8b948ca Mon Sep 17 00:00:00 2001 From: Benjamin Ellenberger Date: Sun, 8 May 2016 20:26:05 +0200 Subject: [PATCH] Add missing m_callback call in SliderMove(). ------- The MySliderEventHandler is missing the m_callback whereas the SliderParams contains the m_callback field. Therefore, the m_callback is never called if the slider position is changed. This commit adds the missing m_callback field and call in SliderMove(). Fixes #613. --- .../GwenGUISupport/GwenParameterInterface.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/examples/ExampleBrowser/GwenGUISupport/GwenParameterInterface.cpp b/examples/ExampleBrowser/GwenGUISupport/GwenParameterInterface.cpp index 5032a1cdb..fee07bc94 100644 --- a/examples/ExampleBrowser/GwenGUISupport/GwenParameterInterface.cpp +++ b/examples/ExampleBrowser/GwenGUISupport/GwenParameterInterface.cpp @@ -27,17 +27,19 @@ struct MyButtonEventHandler : public Gwen::Event::Handler template struct MySliderEventHandler : public Gwen::Event::Handler { + SliderParamChangedCallback m_callback; Gwen::Controls::TextBox* m_label; Gwen::Controls::Slider* m_pSlider; char m_variableName[1024]; T* m_targetValue; bool m_showValue; - MySliderEventHandler(const char* varName, Gwen::Controls::TextBox* label, Gwen::Controls::Slider* pSlider,T* target) + MySliderEventHandler(const char* varName, Gwen::Controls::TextBox* label, Gwen::Controls::Slider* pSlider,T* target,SliderParamChangedCallback callback) :m_label(label), m_pSlider(pSlider), m_targetValue(target), - m_showValue(true) + m_showValue(true), + m_callback(callback) { memcpy(m_variableName,varName,strlen(varName)+1); } @@ -51,6 +53,11 @@ struct MySliderEventHandler : public Gwen::Event::Handler T v = T(bla); SetValue(v); + if (m_callback) + { + (*m_callback)(v); + } + } void SetValue(T v) @@ -219,7 +226,7 @@ void GwenParameterInterface::registerSliderFloatParameter(SliderParams& params) pSlider->SetValue( *params.m_paramValuePointer);//dimensions[i] ); char labelName[1024]; sprintf(labelName,"%s",params.m_name);//axisNames[0]); - MySliderEventHandler* handler = new MySliderEventHandler(labelName,label,pSlider,params.m_paramValuePointer); + MySliderEventHandler* handler = new MySliderEventHandler(labelName,label,pSlider,params.m_paramValuePointer,params.m_callback); handler->m_showValue = params.m_showValues; m_paramInternalData->m_sliderEventHandlers.push_back(handler);