From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Wasabi/api/skin/widgets/groupclickwnd.cpp | 84 +++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Src/Wasabi/api/skin/widgets/groupclickwnd.cpp (limited to 'Src/Wasabi/api/skin/widgets/groupclickwnd.cpp') diff --git a/Src/Wasabi/api/skin/widgets/groupclickwnd.cpp b/Src/Wasabi/api/skin/widgets/groupclickwnd.cpp new file mode 100644 index 00000000..119885bb --- /dev/null +++ b/Src/Wasabi/api/skin/widgets/groupclickwnd.cpp @@ -0,0 +1,84 @@ +#include +#include "groupclickwnd.h" +#include +#include + +GroupClickWnd::GroupClickWnd() { + trap = NULL; + inarea = 0; +} + +GroupClickWnd::~GroupClickWnd() { + delete trap; +} + +void GroupClickWnd::abstract_onNewContent() { + delete trap; + trap = NULL; + + if (!abstract_getContent()) return; + + GuiObject *mousetrap = abstract_getContent()->guiobject_findObject(L"mousetrap"); + + if (mousetrap != NULL) + trap = new MouseTrap(this, mousetrap->guiobject_getScriptObject()); +} + +void GroupClickWnd::groupclick_onLeftPush() { + notifyParent(ChildNotify::BUTTON_LEFTPUSH); +} + +void GroupClickWnd::groupclick_onRightPush() { + notifyParent(ChildNotify::BUTTON_RIGHTPUSH); +} + +void GroupClickWnd::content_onLeftButtonDown() { + notifyParent(ChildNotify::CLICKWND_LEFTDOWN); +} + +void GroupClickWnd::content_onLeftButtonUp() { + notifyParent(ChildNotify::CLICKWND_LEFTUP); + if (inarea) groupclick_onLeftPush(); +} + +void GroupClickWnd::content_onRightButtonDown() { + notifyParent(ChildNotify::CLICKWND_RIGHTDOWN); +} + +void GroupClickWnd::content_onRightButtonUp() { + notifyParent(ChildNotify::CLICKWND_RIGHTUP); + if (inarea) groupclick_onRightPush(); +} + +void GroupClickWnd::content_onEnterArea() { + inarea = 1; +} + +void GroupClickWnd::content_onLeaveArea() { + inarea = 0; +} + + +void MouseTrap::hook_onLeftButtonDown(int x, int y) { + window->content_onLeftButtonDown(); +} + +void MouseTrap::hook_onLeftButtonUp(int x, int y) { + window->content_onLeftButtonUp(); +} + +void MouseTrap::hook_onRightButtonDown(int x, int y) { + window->content_onRightButtonDown(); +} + +void MouseTrap::hook_onRightButtonUp(int x, int y) { + window->content_onRightButtonUp(); +} + +void MouseTrap::hook_onEnterArea() { + window->content_onEnterArea(); +} + +void MouseTrap::hook_onLeaveArea() { + window->content_onLeaveArea(); +} -- cgit