diff --git a/include/MwCXX/Widget/Window.h b/include/MwCXX/Widget/Window.h index 907cc7d..c31603b 100644 --- a/include/MwCXX/Widget/Window.h +++ b/include/MwCXX/Widget/Window.h @@ -31,10 +31,12 @@ namespace MwCXX { virtual void OnColorChosen(MwRGB value) {}; virtual void OnFileChosen(MwCXX::String value) {}; virtual void OnDirectoryChosen(MwCXX::String value) {}; + virtual void OnClose() {}; void (*ColorChosenHandler)(MwCXX::Window* widget, MwRGB value); void (*FileChosenHandler)(MwCXX::Window* widget, MwCXX::String value); void (*DirectoryChosenHandler)(MwCXX::Window* widget, MwCXX::String value); + void (*CloseHandler)(MwCXX::Window* widget); }; }; // namespace MwCXX diff --git a/src/widget/window.cc b/src/widget/window.cc index c8885fb..80416a3 100644 --- a/src/widget/window.cc +++ b/src/widget/window.cc @@ -77,12 +77,19 @@ static void __OnDirectoryChosen(MwWidget handle, void* user, void* call) { if(((MwCXX::Window*)user)->DirectoryChosenHandler != NULL) ((MwCXX::Window*)user)->DirectoryChosenHandler((MwCXX::Window*)user, (MwCXX::String)(char*)call); } +static void __OnClose(MwWidget handle, void* user, void* call) { + ((MwCXX::Window*)user)->OnClose(); + if(((MwCXX::Window*)user)->CloseHandler != NULL) ((MwCXX::Window*)user)->CloseHandler((MwCXX::Window*)user); +} + void MwCXX::Window::RegisterHandlers() { MwAddUserHandler(this->widget, MwNcolorChosenHandler, __OnColorChosen, (void*)this); MwAddUserHandler(this->widget, MwNfileChosenHandler, __OnFileChosen, (void*)this); MwAddUserHandler(this->widget, MwNdirectoryChosenHandler, __OnDirectoryChosen, (void*)this); + MwAddUserHandler(this->widget, MwNcloseHandler, __OnClose, (void*)this); this->ColorChosenHandler = NULL; this->FileChosenHandler = NULL; this->DirectoryChosenHandler = NULL; + this->CloseHandler = NULL; }