From b44e5217c30831ba685bd2393402af3908174955 Mon Sep 17 00:00:00 2001 From: Ian Harrigan Date: Sat, 6 Apr 2024 11:59:47 +0200 Subject: [PATCH] menus dont need to hide themselves when associated with a menubar --- haxe/ui/containers/menus/Menu.hx | 22 +++++++++++++--------- haxe/ui/containers/menus/MenuBar.hx | 1 + 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/haxe/ui/containers/menus/Menu.hx b/haxe/ui/containers/menus/Menu.hx index 0e010690c..c91772f42 100644 --- a/haxe/ui/containers/menus/Menu.hx +++ b/haxe/ui/containers/menus/Menu.hx @@ -28,6 +28,8 @@ class Menu extends Box { @:behaviour(CurrentIndexBehaviour, 0) public var currentIndex:Int; @:behaviour(CurrentItemBehaviour) public var currentItem:MenuItem; + public var menuBar:MenuBar = null; + /** Utility property to add a single `MenuEvent.MENU_SELECTED` event **/ @@ -171,16 +173,18 @@ class MenuEvents extends haxe.ui.events.Events { event.menu = _menu; event.menuItem = item; findRootMenu().dispatch(event); - - var beforeCloseEvent = new UIEvent(UIEvent.BEFORE_CLOSE); - beforeCloseEvent.relatedComponent = item; - findRootMenu().dispatch(beforeCloseEvent); - if (beforeCloseEvent.canceled) { - return; - } - hideMenu(); - removeScreenMouseDown(); + if (_menu.menuBar == null) { + var beforeCloseEvent = new UIEvent(UIEvent.BEFORE_CLOSE); + beforeCloseEvent.relatedComponent = item; + findRootMenu().dispatch(beforeCloseEvent); + if (beforeCloseEvent.canceled) { + return; + } + + hideMenu(); + removeScreenMouseDown(); + } _menu.dispatch(new UIEvent(UIEvent.CLOSE)); } } diff --git a/haxe/ui/containers/menus/MenuBar.hx b/haxe/ui/containers/menus/MenuBar.hx index e4d93d2a3..6a27c66cc 100644 --- a/haxe/ui/containers/menus/MenuBar.hx +++ b/haxe/ui/containers/menus/MenuBar.hx @@ -132,6 +132,7 @@ private class Events extends haxe.ui.events.Events { return; } + menu.menuBar = _menubar; for (button in builder._buttons) { if (button != target) { button.selected = false;