Hi,
I have a class like this
class mainwindow : public DockWindow // public
{
virtual void DragAndDrop(Point p, PasteClip& d);
}
I have an application with docking.
Testing proved that DragAndDrop is not called...
Should it be called looking at examples?
What is the reason?
What would you do ?
Thanks.
Aftershock
#include <CtrlLib/CtrlLib.h> #include <Docking/Docking.h> using namespace Upp; struct MyApp : DockWindow { virtual void DragAndDrop(Point p, PasteClip& d) { if(AcceptFiles(d)) PromptOK(Join(GetFiles(d), "&")); } }; GUI_APP_MAIN { MyApp().Run(); }
Compiler MSC12x64
I also have some docked... that could make a difference?
WithmanualtradeLayout <DockableCtrl> manual_trade;
DockableCtrl & manual_trade_dk = Register ( manual_trade.Title ( t_ ( "Manual trade" ) ) );
DockLeft ( manual_trade_dk );
#include <Docking/Docking.h> using namespace Upp; #define LAYOUTFILE <tradetester_drag_bug/tradetester.lay> #include <CtrlCore/lay.h> class maintradetesterwindow : public DockWindow // public Withtablayout<TopWindow>oin { public: maintradetesterwindow(); void DragAndDrop(Point p, PasteClip& d); class ManualTradeDock : public WithmanualtradeLayout <DockableCtrl> { // <--- virtual void DragAndDrop(Point p, PasteClip& d) { if(IsDragAndDropSource()) return; if(AcceptFiles(d)) { Vector<String> files2 = GetFiles(d); DUMP(files2); } } }; ManualTradeDock manual_trade; }; maintradetesterwindow::maintradetesterwindow() { Sizeable(); CtrlLayout ( manual_trade ); DockableCtrl & manual_trade_dk = Register ( manual_trade.Title ( t_ ( "Manual trade" ) ) ); DockLeft ( manual_trade_dk ); } void maintradetesterwindow::DragAndDrop(Point p, PasteClip& d) { // if(IsDragAndDropSource()) // return; // if(AcceptFiles(d)) { // Vector<String> files2 = GetFiles(d); /// DUMP(files2); // } } GUI_APP_MAIN { // ::SColorFace_Write(Black()); // ::SColorText_Write(Yellow()); maintradetesterwindow().Run(); }
Should not it work on the top of the hierarchy as well?
class maintradetesterwindow : public DockWindow // public Withtablayout<TopWindow> { public: maintradetesterwindow(); void DragAndDrop(Point p, PasteClip& d); class ManualTradeDock : public WithmanualtradeLayout <DockableCtrl> { public: virtual void DragAndDrop(Point p, PasteClip& d) { if(IsDragAndDropSource()) return; if(AcceptFiles(d)) { Vector<String> files2 = GetFiles(d); DUMP(files2); } } }; ManualTradeDock manual_trade; }; maintradetesterwindow::maintradetesterwindow() { Sizeable(); CtrlLayout ( manual_trade ); DockableCtrl & manual_trade_dk = Register ( manual_trade.Title ( t_ ( "Manual trade" ) ) ); DockLeft ( manual_trade_dk ); } void maintradetesterwindow::DragAndDrop(Point p, PasteClip& d) { manual_trade.DragAndDrop(p, d); // <--- }
Though there is one problem
void maintradetesterwindow::WithdataLayoutEx::DragAndDrop(Point p, PasteClip& d)
{
if(IsDragAndDropSource())
return;
Ctrl* c = GetDragAndDropTarget();
DUMP(c);
if (c!=nullptr)
if (c==&m->datasource_info.analyse)
{
if(AcceptFiles(d)) {
Vector<String> files2 = GetFiles(d);
m->analyse_a_file(files2[0]);
}
}
}