/*
	GWEN
	Copyright (c) 2010 Facepunch Studios
	See license in Gwen.h
*/

#pragma once
#ifndef GWEN_CONTROLS_DRAGGER_H
#define GWEN_CONTROLS_DRAGGER_H

#include "Gwen/Controls/Base.h"
#include "Gwen/Gwen.h"
#include "Gwen/Skin.h"

namespace Gwen
{
namespace ControlsInternal
{
class GWEN_EXPORT Dragger : public Controls::Base
{
public:
	GWEN_CONTROL(Dragger, Controls::Base);

	virtual void OnMouseMoved(int x, int y, int deltaX, int deltaY);

	virtual void OnMouseClickLeft(int x, int y, bool bDown);
	virtual void Render(Skin::Base* skin);

	virtual void SetTarget(Controls::Base* pBase) { m_pTarget = pBase; }

	Gwen::Event::Caller onDragged;

protected:
	bool m_bDepressed;
	Gwen::Point m_HoldPos;
	Controls::Base* m_pTarget;
};
}  // namespace ControlsInternal
}  // namespace Gwen
#endif
