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