1 #ifndef FILEZILLA_DROP_TARGET_EX_HEADER 2 #define FILEZILLA_DROP_TARGET_EX_HEADER 3 4 #include <wx/dnd.h> 5 #include <wx/timer.h> 6 7 template<class Control> 8 class CScrollableDropTarget : public wxEvtHandler, public wxDropTarget 9 { 10 public: 11 CScrollableDropTarget(Control* pCtrl); 12 13 virtual bool OnDrop(wxCoord x, wxCoord y); 14 15 virtual wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult def); 16 17 virtual void OnLeave(); 18 19 virtual wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult def); 20 21 virtual typename Control::Item DisplayDropHighlight(wxPoint const&) = 0; 22 23 protected: 24 wxDragResult FixupDragResult(wxDragResult res); 25 26 bool IsScroll(wxPoint p) const; 27 bool IsTopScroll(wxPoint p) const; 28 bool IsBottomScroll(wxPoint p) const; 29 30 void OnTimer(wxTimerEvent& /*event*/); 31 32 protected: 33 Control *m_pCtrl; 34 35 wxTimer m_timer; 36 int m_count{}; 37 38 DECLARE_EVENT_TABLE() 39 }; 40 41 #endif 42