Mercurial > dwindows
changeset 2911:f27fe14eef82
C++: MenuItem constructors need to call Setup() and Clickable::ClickedConnected may
not have been initialized, both could cause problems particularly on Windows.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 27 Dec 2022 09:00:02 +0000 |
parents | 927fcf85b132 |
children | 08fcbd5fa069 |
files | dw.hpp |
diffstat | 1 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/dw.hpp Tue Dec 27 01:23:09 2022 +0000 +++ b/dw.hpp Tue Dec 27 09:00:02 2022 +0000 @@ -131,7 +131,7 @@ #else int (*_ConnectClicked)(); #endif - static int _OnClicked(HWND window, void *data) { + static int _OnClicked(HWND window, void *data) { if(reinterpret_cast<Clickable *>(data)->_ConnectClicked) return reinterpret_cast<Clickable *>(data)->_ConnectClicked(); return reinterpret_cast<Clickable *>(data)->OnClicked(); } @@ -142,6 +142,9 @@ dw_signal_connect(hwnd, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_OnClicked), this); ClickedConnected = true; } + else { + ClickedConnected = false; + } } // Our signal handler functions to be overriden... // If they are not overridden and an event is generated, remove the unused handler @@ -205,13 +208,13 @@ public: // Constructors MenuItem(Menus *menu, const char *title, unsigned long id, unsigned long flags, int end, int check, Menus *submenu) { - SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, id, flags, end, check, submenu ? submenu->GetHMENUI() : DW_NOMENU)); + SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, id, flags, end, check, submenu ? submenu->GetHMENUI() : DW_NOMENU)); Setup(); } MenuItem(Menus *menu, const char *title, Menus *submenu) { - SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, DW_MENU_AUTO, 0, TRUE, FALSE, submenu ? submenu->GetHMENUI() : DW_NOMENU)); + SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, DW_MENU_AUTO, 0, TRUE, FALSE, submenu ? submenu->GetHMENUI() : DW_NOMENU)); Setup(); } MenuItem(Menus *menu, const char *title) { - SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, DW_MENU_AUTO, 0, TRUE, FALSE, DW_NOMENU)); + SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, DW_MENU_AUTO, 0, TRUE, FALSE, DW_NOMENU)); Setup(); } // User functions