diff --git a/include/Mw/Widget/Window.h b/include/Mw/Widget/Window.h index 24b7153..e5826c1 100644 --- a/include/Mw/Widget/Window.h +++ b/include/Mw/Widget/Window.h @@ -27,6 +27,19 @@ MwInline void MwWindowMakeBorderless(MwWidget handle, int toggle) { MwVaWidgetExecute(handle, "mwWindowMakeBorderless", NULL, toggle); } + +/*! + * @brief Whether the window should close + * @param handle Widget + * @return bool + */ +MwInline MwBool MwWindowShouldClose(MwWidget handle) { + MwBool res = MwFALSE; + MwVaWidgetExecute(handle, "mwWindowShouldClose", NULL, &res); + return res; +} + + #ifdef __cplusplus } #endif diff --git a/src/widget/window.c b/src/widget/window.c index 7178d3f..930b092 100644 --- a/src/widget/window.c +++ b/src/widget/window.c @@ -35,6 +35,10 @@ static void mwWindowMakeBorderlessImpl(MwWidget handle, int toggle) { MwLLEndStateChange(handle->lowlevel); } +static void mwWindowShouldCloseImpl(MwWidget handle, MwBool* out) { + *out = handle->close; +} + static void func_handler(MwWidget handle, const char* name, void* out, va_list va) { (void)out; @@ -42,6 +46,10 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v int toggle = va_arg(va, int); mwWindowMakeBorderlessImpl(handle, toggle); } + if(strcmp(name, "mwWindowShouldClose") == 0) { + MwBool *out = va_arg(va, MwBool*); + mwWindowShouldCloseImpl(handle, out); + } } MwClassRec MwWindowClassRec = { wcreate, /* create */