From c531bf45a0129915c434284e2e2f1ed242f4c962 Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Thu, 16 Oct 2025 10:45:58 +0000 Subject: [PATCH] messagebox can be closed now git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@362 b9cfdab3-6d41-4d17-bbe4-086880011989 --- examples/basic/listbox.c | 2 ++ examples/basic/messagebox.c | 2 ++ src/core.c | 1 + src/messagebox.c | 8 ++++++++ 4 files changed, 13 insertions(+) diff --git a/examples/basic/listbox.c b/examples/basic/listbox.c index aa21218..4ccd9c1 100644 --- a/examples/basic/listbox.c +++ b/examples/basic/listbox.c @@ -6,6 +6,8 @@ MwWidget wmain; void destroy(MwWidget handle, void* user, void* call) { + (void)handle; + (void)call; MwMessageBoxDestroy(user); } diff --git a/examples/basic/messagebox.c b/examples/basic/messagebox.c index 73c01dc..86bb044 100644 --- a/examples/basic/messagebox.c +++ b/examples/basic/messagebox.c @@ -2,6 +2,8 @@ #include void ok(MwWidget handle, void* user, void* call) { + (void)handle; + (void)call; MwMessageBoxDestroy(user); } diff --git a/src/core.c b/src/core.c index b48b590..88f0af9 100644 --- a/src/core.c +++ b/src/core.c @@ -62,6 +62,7 @@ static void llclosehandler(MwLL handle, void* data) { } } else { h->close = 1; + MwDispatchUserHandler(h, MwNcloseHandler, NULL); } } diff --git a/src/messagebox.c b/src/messagebox.c index c6e1691..ac5ed4b 100644 --- a/src/messagebox.c +++ b/src/messagebox.c @@ -19,6 +19,12 @@ static void spawn_button(MwWidget handle, int x, int y, int id, const char* text handle->opaque = mb; } +static void messagebox_close(MwWidget handle, void* user, void* call) { + (void)user; + (void)call; + MwMessageBoxDestroy(handle); +} + MwWidget MwMessageBox(MwWidget handle, const char* text, const char* title, unsigned int flag) { MwWidget window; MwPoint p; @@ -95,6 +101,8 @@ MwWidget MwMessageBox(MwWidget handle, const char* text, const char* title, unsi MwLLSetSizeHints(window->lowlevel, w, h, w, h); MwLLMakePopup(window->lowlevel, handle->lowlevel); + MwAddUserHandler(window, MwNcloseHandler, messagebox_close, NULL); + return window; }