diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.kt index ed499337f..2eeccb3e4 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.kt @@ -657,16 +657,9 @@ abstract class MatteryScreen(menu: T, inventory: Inventory, tit this.renderBackground(graphics, mouseX, mouseY, partialTick) super.hoveredSlot = null + var hovered = false - - for (panel in panels) { - if (hovered) { - panel.unsetHovered() - } else if (panel.tickHovered0(mouseXf, mouseYf)) { - hovered = true - } - } - + panels.forEach { hovered = it.tickHovered0(mouseXf, mouseYf, hovered) } panels.forEach { it.tickHovered1() } panels.forEach { it.tickHovered2() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt index 182de36ea..3aaa32061 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt @@ -1006,9 +1006,16 @@ open class EditablePanel( /** * Determining whenever panel is hovered or not */ - fun tickHovered0(mouseX: Float, mouseY: Float): Boolean { + fun tickHovered0(mouseX: Float, mouseY: Float, somethingElseHovered: Boolean): Boolean { if (isRemoved) - return false + return somethingElseHovered + else if (somethingElseHovered) { + if (parent == null) + updateAbsolutePosition() + + unsetHovered() + return true + } val potentiallyHovered: Boolean @@ -1025,14 +1032,7 @@ open class EditablePanel( if (potentiallyHovered) { var hit = false - - for (child in visibleChildrenInternal) { - if (hit) { - child.unsetHovered() - } else if (child.tickHovered0(mouseX, mouseY)) { - hit = true - } - } + visibleChildrenInternal.forEach { hit = it.tickHovered0(mouseX, mouseY, hit) } pendingIsHovered = !hit && diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Panel2Widget.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Panel2Widget.kt index 3793a24fc..6c06bc038 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Panel2Widget.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Panel2Widget.kt @@ -22,7 +22,7 @@ class Panel2Widget>( val wrap = MGUIGraphics(graphics) - panel.tickHovered0(xFloat, yFloat) + panel.tickHovered0(xFloat, yFloat, false) panel.tickHovered1() panel.tickHovered2() panel.render(wrap, xFloat, yFloat, partialTick)