@@ -172,9 +172,9 @@ class MenuEvents extends haxe.ui.events.Events {
172172 private function onItemClick (event : MouseEvent ) {
173173 var item : MenuItem = cast (event .target , MenuItem );
174174 if (! item .expandable ) {
175- var event = new MenuEvent (MenuEvent .MENU_SELECTED );
176- event .menu = _menu ;
177- event .menuItem = item ;
175+ var menuSelectedEvent = new MenuEvent (MenuEvent .MENU_SELECTED );
176+ menuSelectedEvent .menu = _menu ;
177+ menuSelectedEvent .menuItem = item ;
178178 // we'll add a delay of 100ms here because it "feels nicer" for the menu to
179179 // not just instantly disappear - especially in the case of checkbox menu items
180180 Timer .delay (function () {
@@ -184,19 +184,20 @@ class MenuEvents extends haxe.ui.events.Events {
184184 if (@:privateAccess _menu ._isDisposed ) {
185185 return ;
186186 }
187- findRootMenu ().dispatch (event );
187+ findRootMenu ().dispatch (menuSelectedEvent );
188188
189- if (_menu .menuBar == null ) {
189+ // if (_menu.menuBar == null) {
190190 var beforeCloseEvent = new UIEvent (UIEvent .BEFORE_CLOSE );
191191 beforeCloseEvent .relatedComponent = item ;
192+ beforeCloseEvent .relatedEvent = event ;
192193 findRootMenu ().dispatch (beforeCloseEvent );
193194 if (beforeCloseEvent .canceled ) {
194195 return ;
195196 }
196197
197198 hideMenu ();
198199 removeScreenMouseDown ();
199- }
200+ // }
200201 _menu .dispatch (new UIEvent (UIEvent .CLOSE ));
201202 }, 100 );
202203 }
@@ -439,6 +440,13 @@ class MenuEvents extends haxe.ui.events.Events {
439440 }
440441
441442 if (close ) {
443+ var beforeCloseEvent = new UIEvent (UIEvent .BEFORE_CLOSE );
444+ beforeCloseEvent .relatedEvent = event ;
445+ findRootMenu ().dispatch (beforeCloseEvent );
446+ if (beforeCloseEvent .canceled ) {
447+ return ;
448+ }
449+
442450 hideMenu ();
443451 removeScreenMouseDown ();
444452 _menu .dispatch (new UIEvent (UIEvent .CLOSE ));
0 commit comments