diff --git a/include/Mw/TypeDefs.h b/include/Mw/TypeDefs.h index 8fd695b..572148c 100644 --- a/include/Mw/TypeDefs.h +++ b/include/Mw/TypeDefs.h @@ -102,6 +102,9 @@ struct _MwClass { MwHandler draw; MwHandler click; MwHandler parent_resize; + MwHandler mouse_move; + MwHandler mouse_up; + MwHandler mouse_down; }; struct _MwFont { diff --git a/src/core.c b/src/core.c index 2f05c7b..4f91b30 100644 --- a/src/core.c +++ b/src/core.c @@ -22,6 +22,7 @@ static void lluphandler(MwLL handle, void* data) { h->mouse_point.y = p->y; MwDispatch(h, click); + MwDispatch(h, mouse_up); } static void lldownhandler(MwLL handle, void* data) { @@ -30,6 +31,8 @@ static void lldownhandler(MwLL handle, void* data) { h->pressed = 1; h->mouse_point.x = p->x; h->mouse_point.y = p->y; + + MwDispatch(h, mouse_down); } static void llresizehandler(MwLL handle, void* data) { @@ -57,6 +60,8 @@ static void llmovehandler(MwLL handle, void* data) { MwPoint* p = data; h->mouse_point.x = p->x; h->mouse_point.y = p->y; + + MwDispatch(h, mouse_move); } MwWidget MwCreateWidget(MwClass widget_class, const char* name, MwWidget parent, int x, int y, unsigned int width, unsigned int height) { diff --git a/src/widget/button.c b/src/widget/button.c index f76ba73..85968eb 100644 --- a/src/widget/button.c +++ b/src/widget/button.c @@ -66,6 +66,9 @@ MwClassRec MwButtonClassRec = { NULL, /* destroy */ draw, /* draw */ click, /* click */ - NULL /* parent_resize */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + NULL, /* mouse_up */ + NULL /* mouse_down */ }; MwClass MwButtonClass = &MwButtonClassRec; diff --git a/src/widget/frame.c b/src/widget/frame.c index c371ef1..71f750d 100644 --- a/src/widget/frame.c +++ b/src/widget/frame.c @@ -28,6 +28,9 @@ MwClassRec MwFrameClassRec = { NULL, /* destroy */ draw, /* draw */ NULL, /* click */ - NULL /* parent_resize */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + NULL, /* mouse_up */ + NULL /* mouse_down */ }; MwClass MwFrameClass = &MwFrameClassRec; diff --git a/src/widget/image.c b/src/widget/image.c index e08e433..428219f 100644 --- a/src/widget/image.c +++ b/src/widget/image.c @@ -25,6 +25,9 @@ MwClassRec MwImageClassRec = { NULL, /* destroy */ draw, /* draw */ NULL, /* click */ - NULL /* parent_resize */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + NULL, /* mouse_up */ + NULL /* mouse_down */ }; MwClass MwImageClass = &MwImageClassRec; diff --git a/src/widget/menu.c b/src/widget/menu.c index 490cbda..30ec3cf 100644 --- a/src/widget/menu.c +++ b/src/widget/menu.c @@ -144,11 +144,14 @@ static void parent_resize(MwWidget handle) { } MwClassRec MwMenuClassRec = { - create, /* create */ - destroy, /* destroy */ - draw, /* draw */ - NULL, /* click */ - parent_resize /* parent_resize */ + create, /* create */ + destroy, /* destroy */ + draw, /* draw */ + NULL, /* click */ + parent_resize, /* parent_resize */ + NULL, /* mouse_move */ + NULL, /* mouse_up */ + NULL /* mouse_down */ }; MwClass MwMenuClass = &MwMenuClassRec; diff --git a/src/widget/opengl.c b/src/widget/opengl.c index 171f109..5c56f6d 100644 --- a/src/widget/opengl.c +++ b/src/widget/opengl.c @@ -133,7 +133,10 @@ MwClassRec MwOpenGLClassRec = { destroy, /* destroy */ NULL, /* draw */ NULL, /* click */ - NULL /* parent_resize */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + NULL, /* mouse_up */ + NULL /* mouse_down */ }; MwClass MwOpenGLClass = &MwOpenGLClassRec; diff --git a/src/widget/scrollbar.c b/src/widget/scrollbar.c index 124bd73..2a95ebd 100644 --- a/src/widget/scrollbar.c +++ b/src/widget/scrollbar.c @@ -80,6 +80,9 @@ MwClassRec MwScrollBarClassRec = { destroy, /* destroy */ draw, /* draw */ NULL, /* click */ - NULL /* parent_resize */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + NULL, /* mouse_up */ + NULL /* mouse_down */ }; MwClass MwScrollBarClass = &MwScrollBarClassRec; diff --git a/src/widget/submenu.c b/src/widget/submenu.c index 193a965..1e419f8 100644 --- a/src/widget/submenu.c +++ b/src/widget/submenu.c @@ -156,7 +156,10 @@ MwClassRec MwSubMenuClassRec = { destroy, /* destroy */ draw, /* draw */ click, /* click */ - NULL /* parent_resize */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + NULL, /* mouse_up */ + NULL /* mouse_down */ }; MwClass MwSubMenuClass = &MwSubMenuClassRec; diff --git a/src/widget/vulkan.c b/src/widget/vulkan.c index 02faa83..fd5c9f4 100644 --- a/src/widget/vulkan.c +++ b/src/widget/vulkan.c @@ -509,6 +509,9 @@ MwClassRec MwVulkanClassRec = { destroy, /* destroy */ NULL, /* draw */ NULL, /* click */ - NULL /* parent_resize */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + NULL, /* mouse_up */ + NULL /* mouse_down */ }; MwClass MwVulkanClass = &MwVulkanClassRec; diff --git a/src/widget/window.c b/src/widget/window.c index ea172f6..13b7619 100644 --- a/src/widget/window.c +++ b/src/widget/window.c @@ -26,7 +26,10 @@ MwClassRec MwWindowClassRec = { NULL, /* destroy */ draw, /* draw */ NULL, /* click */ - NULL /* parent_resize */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + NULL, /* mouse_up */ + NULL /* mouse_down */ }; MwClass MwWindowClass = &MwWindowClassRec;