#include "dnd.h" /* void Test::LeftDown(Point p, dword keyflags) { } */ struct LineEditDnd : LineEdit { /// virtual void DragEnter(Point p, const ClipData& d, bool drop) { LOG("Enter"); } // virtual void DragLeave() { LOG("Leave"); } // virtual void DragAndDrop(Point p, DnDEvent& d); virtual void LeftHold(Point p, dword flags); virtual void LeftDrag(Point p, dword flags); virtual void LeftTriple(Point p, dword flags); virtual String GetClip(const char *fmt, int kind); }; /* void LineEditDnd::DragAndDrop(Point p, DnDEvent& d) { if(!d.Has("text")) return; d.Accept(); if(d.IsDrop()) Paste(String(~d.Get("text")).ToWString()); } */ void LineEditDnd::LeftHold(Point p, dword flags) { // PromptOK("Hold!"); } void LineEditDnd::LeftTriple(Point p, dword flags) { PromptOK("Left triple-click"); } void LineEditDnd::LeftDrag(Point p, dword f) { String txt = GetData(); ImageDraw iw(128, 128); iw.Alpha().DrawRect(0, 0, 128, 128, Black); for(int y = 0; y < 128; y += 140) { iw.Alpha().DrawText(2, y + 2, txt, Courier(11), White); iw.DrawText(2, y + 2, txt, Courier(11)); } // DnDAction(this, "text").Sample(iw).Do(); LineEdit::LeftDown(p, f); } String LineEditDnd::GetClip(const char *fmt, int kind) { return GetData(); } GUI_APP_MAIN { DUMP(GUI_DragDistance()); DUMP(GUI_DblClickTime()); Ctrl::LogMessages = true; // Ctrl::OverrideCursor(CtrlImg::HandCursor()); TopWindow win; LineEditDnd dnd; win.Add(dnd.SizePos()); win.Run(); }