From 6da5a25e6a9e87b7ac9fec85d4498cb7dd4610cb Mon Sep 17 00:00:00 2001 From: Bixilon Date: Fri, 18 Feb 2022 14:51:42 +0100 Subject: [PATCH] fix missing Element::onMouseLeave when pushing element above it --- .../minosoft/gui/rendering/gui/gui/GUIManager.kt | 14 ++++++++------ .../gui/hud/elements/LayoutedGUIElement.kt | 1 + .../minosoft/gui/rendering/gui/popper/Popper.kt | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/GUIManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/GUIManager.kt index 48148dbae..49b29ccc0 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/GUIManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/GUIManager.kt @@ -184,11 +184,7 @@ class GUIManager( fun open(builder: GUIBuilder<*>) { clear() - val element = this[builder] - elementOrder += element - element.onOpen() - - renderWindow.inputHandler.inputHandler = guiRenderer + push(builder) } fun popOrPause() { @@ -206,9 +202,15 @@ class GUIManager( if (elementOrder.isEmpty()) { renderWindow.inputHandler.inputHandler = guiRenderer } - elementOrder.firstOrNull()?.onHide() + for ((index, elementEntry) in elementOrder.toList().withIndex()) { + if (index != 0 && !elementEntry.activeWhenHidden) { + continue + } + elementEntry.onHide() + } elementOrder.add(0, element) element.onOpen() + onMouseMove(guiRenderer.currentCursorPosition) } @Deprecated("Only use for dynamic gui (e.g. dialogs, ...)") diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/LayoutedGUIElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/LayoutedGUIElement.kt index 03d39be1d..0900fd1ee 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/LayoutedGUIElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/LayoutedGUIElement.kt @@ -168,6 +168,7 @@ class LayoutedGUIElement( override fun onHide() { elementLayout.onHide() + elementLayout.onMouseLeave() } companion object { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/popper/Popper.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/popper/Popper.kt index 09440be2b..1bb345995 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/popper/Popper.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/popper/Popper.kt @@ -27,7 +27,7 @@ abstract class Popper( guiRenderer: GUIRenderer, position: Vec2i, ) : Element(guiRenderer), LayoutedElement { - private val background = ColorElement(guiRenderer, Vec2i.EMPTY, color = ChatColors.YELLOW) + private val background = ColorElement(guiRenderer, Vec2i.EMPTY, color = ChatColors.DARK_BLUE) open var dead = false override var layoutOffset: Vec2i = position protected set