123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef __WASABI_DRAG_H
- #define __WASABI_DRAG_H
- class ifc_window;
- #include <bfc/wasabi_std.h>
- class NOVTABLE DragInterface
- {
- public:
- // (called on dest) when dragged item enters the winder
- virtual int dragEnter(ifc_window *sourceWnd) = 0;
- // (called on dest) during the winder
- virtual int dragOver(int x, int y, ifc_window *sourceWnd) = 0;
- // (called on src)
- virtual int dragSetSticky(ifc_window *wnd, int left, int right, int up, int down) = 0;
- // (called on dest) when dragged item leaves the winder
- virtual int dragLeave(ifc_window *sourceWnd) = 0;
- // (called on dest) here is where we actually drop it
- virtual int dragDrop(ifc_window *sourceWnd, int x, int y) = 0;
- // must be called from within dragDrop(); (receiver)
- virtual const wchar_t *dragGetSuggestedDropTitle(void) = 0;
- // must be called from within your dragEnter, Over, Leave, or Drop
- // return the slot # if you support this form of the data, -1 otherwise
- // nitems can be NULL if you're just checking validity
- virtual int dragCheckData(const wchar_t *type, int *nitems = NULL) = 0;
- // fetches a specific pointer that was stored
- virtual void *dragGetData(int slot, int itemnum) = 0;
- virtual int dragCheckOption(int option) = 0;
- };
- class DragInterfaceI : public DragInterface
- {
- public:
- // (called on dest) when dragged item enters the winder
- virtual int dragEnter(ifc_window *sourceWnd) { return 0; }
- // (called on dest) during the winder
- virtual int dragOver(int x, int y, ifc_window *sourceWnd) { return 0; }
- // (called on src)
- virtual int dragSetSticky(ifc_window *wnd, int left, int right, int up, int down) { return 0; }
- // (called on dest) when dragged item leaves the winder
- virtual int dragLeave(ifc_window *sourceWnd) { return 0; }
- // (called on dest) here is where we actually drop it
- virtual int dragDrop(ifc_window *sourceWnd, int x, int y) { return 0; }
- // must be called from within dragDrop(); (receiver)
- virtual const wchar_t *dragGetSuggestedDropTitle(void) { return NULL; }
- // must be called from within your dragEnter, Over, Leave, or Drop
- // return the slot # if you support this form of the data, -1 otherwise
- // nitems can be NULL if you're just checking validity
- virtual int dragCheckData(const wchar_t *type, int *nitems = NULL) { return 0; }
- // fetches a specific pointer that was stored
- virtual void *dragGetData(int slot, int itemnum) { return 0; }
- virtual int dragCheckOption(int option) { return 0; }
- };
- class DI
- {
- public:
- DI(ifc_window *rw);
- int dragEnter(ifc_window *sourceWnd);
- int dragOver(int x, int y, ifc_window *sourceWnd);
- int dragSetSticky(ifc_window *wnd, int left, int right, int up, int down);
- int dragLeave(ifc_window *sourceWnd);
- int dragDrop(ifc_window *sourceWnd, int x, int y);
- const wchar_t *dragGetSuggestedDropTitle(void);
- int dragCheckData(const wchar_t *type, int *nitems = NULL);
- void *dragGetData(int slot, int itemnum);
- int dragCheckOption(int option);
- private:
- DragInterface *di;
- };
- #endif
|