/* GWEN Copyright (c) 2010 Facepunch Studios See license in Gwen.h */ #include "Gwen/Controls/Dragger.h" using namespace Gwen; using namespace Gwen::ControlsInternal; GWEN_CONTROL_CONSTRUCTOR(Dragger) { m_pTarget = NULL; SetMouseInputEnabled(true); m_bDepressed = false; } void Dragger::OnMouseClickLeft(int x, int y, bool bDown) { if (!m_pTarget) return; if (bDown) { m_bDepressed = true; m_HoldPos = m_pTarget->CanvasPosToLocal(Gwen::Point(x, y)); Gwen::MouseFocus = this; } else { m_bDepressed = false; Gwen::MouseFocus = NULL; } } void Dragger::OnMouseMoved(int x, int y, int /*deltaX*/, int /*deltaY*/) { if (!m_pTarget) return; if (!m_bDepressed) return; Gwen::Point p = Gwen::Point(x - m_HoldPos.x, y - m_HoldPos.y); // Translate to parent if (m_pTarget->GetParent()) p = m_pTarget->GetParent()->CanvasPosToLocal(p); //m_pTarget->SetPosition( p.x, p.y ); m_pTarget->MoveTo(p.x, p.y); onDragged.Call(this); } void Dragger::Render(Skin::Base* /*skin*/) { //skin->DrawButton(this,false,false); }