diff options
author | Jean-Francois Mauguit <jfmauguit@mac.com> | 2024-09-24 09:03:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 09:03:25 -0400 |
commit | bab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/wnd/wndclass/clickwnd.h | |
parent | 4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff) | |
parent | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff) | |
download | winamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz |
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/Wasabi/api/wnd/wndclass/clickwnd.h')
-rw-r--r-- | Src/Wasabi/api/wnd/wndclass/clickwnd.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/Src/Wasabi/api/wnd/wndclass/clickwnd.h b/Src/Wasabi/api/wnd/wndclass/clickwnd.h new file mode 100644 index 00000000..101e8445 --- /dev/null +++ b/Src/Wasabi/api/wnd/wndclass/clickwnd.h @@ -0,0 +1,74 @@ +#ifndef _CLICKWND_H +#define _CLICKWND_H + +// this class defines clicking behavior, i.e. detecting mouse downs and ups +// and doing captures to determine clicks + +#include <bfc/common.h> +// benski> CUT: #include <api/wnd/wndclass/backbufferwnd.h> +#include <api/wnd/wndclass/abstractwndhold.h> + +#ifdef WASABI_COMPILE_SKIN +#define CLICKWND_PARENT AbstractWndHolder +#else +#define CLICKWND_PARENT ServiceWndHolder +#endif +// benski> CUT: #define CLICKWND_PARENT BackBufferWnd + +class NOVTABLE ClickWnd : public CLICKWND_PARENT { + +public: + ClickWnd(); + virtual ~ClickWnd(); + + void setHandleRightClick(int tf); + int getHandleRightClick(); + + // override these to get clicks! + virtual void onLeftPush(int x, int y) {} + virtual void onRightPush(int x, int y) {} + virtual void onLeftDoubleClick(int x, int y) {} + virtual void onRightDoubleClick(int x, int y) {} + + virtual void onEnterArea(); + virtual void onLeaveArea(); + + virtual void onSetVisible(int show); + virtual void onCancelCapture(); + virtual int isInClick() { return mousedown; } + +protected: + virtual int onLeftButtonDown(int x, int y); + virtual int onRightButtonDown(int x, int y); + virtual int onLeftButtonUp(int x, int y); + virtual int onRightButtonUp(int x, int y); + virtual int onMouseMove(int x, int y); + + // override this and return 0 to ignore clicks + virtual int wantClicks() { return 1; } + // override this and return 1 to force down-ness + virtual int userDown() { return 0; } + + virtual int getHilite() { return hilite; } // mouse is over, period + virtual int getDown() { return down; } // mouse is over and pushing down + + int onButtonDown(int which, int x, int y); + int onButtonUp(int which, int x, int y); + void _enterCapture(); + + virtual int wantClickWndAutoInvalidate() { return 1; } + +private: + void _onEnterArea(); + void _onLeaveArea(); + + int button; // 0 == left, 1 == right, which button was pushed + int handleRight:1; + int mousedown:1; + int mcaptured:1; // we are capturing the mouse + int hilite:1; // mouse is over but not down + int down:1; + int areacheck; +}; + +#endif |