# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1672131602 0 # Node ID f27fe14eef823dc725bc41a24c1fa092641cc0ba # Parent 927fcf85b132d625c93cadf000251cb13c56f132 C++: MenuItem constructors need to call Setup() and Clickable::ClickedConnected may not have been initialized, both could cause problems particularly on Windows. diff -r 927fcf85b132 -r f27fe14eef82 dw.hpp --- 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(data)->_ConnectClicked) return reinterpret_cast(data)->_ConnectClicked(); return reinterpret_cast(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