implement onMouseDoubleClick event in UIWidget
This commit is contained in:
parent
4563471790
commit
1340699b01
|
@ -27,6 +27,7 @@
|
|||
void Timer::restart()
|
||||
{
|
||||
m_startTicks = g_clock.ticks();
|
||||
m_stopped = false;
|
||||
}
|
||||
|
||||
ticks_t Timer::ticksElapsed()
|
||||
|
|
|
@ -31,13 +31,17 @@ public:
|
|||
Timer() { restart(); }
|
||||
|
||||
void restart();
|
||||
void stop() { m_stopped = true; }
|
||||
|
||||
ticks_t startTicks() { return m_startTicks; }
|
||||
ticks_t ticksElapsed();
|
||||
double timeElapsed() { return ticksElapsed()/1000.0; }
|
||||
|
||||
bool running() { return !m_stopped; }
|
||||
|
||||
private:
|
||||
ticks_t m_startTicks;
|
||||
Boolean<false> m_stopped;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -35,6 +35,7 @@ UIWidget::UIWidget()
|
|||
{
|
||||
m_lastFocusReason = Fw::ActiveFocusReason;
|
||||
m_states = Fw::DefaultState;
|
||||
m_clickTimer.stop();
|
||||
|
||||
initBaseStyle();
|
||||
initText();
|
||||
|
@ -1111,6 +1112,14 @@ bool UIWidget::onKeyUp(uchar keyCode, int keyboardModifiers)
|
|||
|
||||
bool UIWidget::onMousePress(const Point& mousePos, Fw::MouseButton button)
|
||||
{
|
||||
if(button == Fw::MouseLeftButton) {
|
||||
if(m_clickTimer.running() && m_clickTimer.ticksElapsed() <= 500) {
|
||||
if(onMouseDoubleClick(mousePos))
|
||||
return true;
|
||||
m_clickTimer.stop();
|
||||
} else
|
||||
m_clickTimer.restart();
|
||||
}
|
||||
return callLuaField<bool>("onMousePress", mousePos, button);
|
||||
}
|
||||
|
||||
|
@ -1145,6 +1154,11 @@ bool UIWidget::onMouseWheel(const Point& mousePos, Fw::MouseWheelDirection direc
|
|||
return callLuaField<bool>("onMouseWheel", mousePos, direction);
|
||||
}
|
||||
|
||||
bool UIWidget::onMouseDoubleClick(const Point& mousePos)
|
||||
{
|
||||
return callLuaField<bool>("onMouseDoubleClick", mousePos);
|
||||
}
|
||||
|
||||
bool UIWidget::propagateOnKeyText(const std::string& keyText)
|
||||
{
|
||||
// do a backup of children list, because it may change while looping it
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include <framework/otml/otmlnode.h>
|
||||
#include <framework/graphics/font.h>
|
||||
#include <framework/graphics/coordsbuffer.h>
|
||||
#include <framework/core/timer.h>
|
||||
|
||||
template<typename T = int>
|
||||
struct EdgeGroup {
|
||||
|
@ -71,6 +72,7 @@ protected:
|
|||
UIWidgetList m_lockedChildren;
|
||||
UIWidgetPtr m_focusedChild;
|
||||
OTMLNodePtr m_style;
|
||||
Timer m_clickTimer;
|
||||
Fw::FocusReason m_lastFocusReason;
|
||||
|
||||
public:
|
||||
|
@ -176,6 +178,7 @@ protected:
|
|||
virtual bool onMouseRelease(const Point& mousePos, Fw::MouseButton button);
|
||||
virtual bool onMouseMove(const Point& mousePos, const Point& mouseMoved);
|
||||
virtual bool onMouseWheel(const Point& mousePos, Fw::MouseWheelDirection direction);
|
||||
virtual bool onMouseDoubleClick(const Point& mousePos);
|
||||
|
||||
bool propagateOnKeyText(const std::string& keyText);
|
||||
bool propagateOnKeyDown(uchar keyCode, int keyboardModifiers);
|
||||
|
|
Loading…
Reference in New Issue