--- /dev/null
+#include "container.h"
+#include "draghandle.h"
+
+namespace Msp {
+namespace GLtk {
+
+DragHandle::DragHandle():
+ dragging(false),
+ drag_x(0),
+ drag_y(0)
+{ }
+
+void DragHandle::button_press(int x, int y, unsigned btn)
+{
+ if(btn==1 && parent)
+ {
+ dragging = true;
+ drag_x = x;
+ drag_y = y;
+ }
+}
+
+void DragHandle::button_release(int, int, unsigned btn)
+{
+ if(btn==1)
+ dragging = false;
+}
+
+void DragHandle::pointer_motion(int x, int y)
+{
+ if(dragging)
+ {
+ const Geometry &pgeom = parent->get_geometry();
+ parent->set_position(pgeom.x+x-drag_x, pgeom.y+y-drag_y);
+ }
+}
+
+void DragHandle::on_reparent()
+{
+ dragging = false;
+}
+
+} // namespace GLtk
+} // namespace Msp