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 be943534f..87c764b67 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 @@ -300,17 +300,12 @@ abstract class MatteryScreen(menu: T, inventory: Inventory, tit * * @param panel panel to be pushed up */ - fun popup(panel: EditablePanel>) { + fun popup(panel: EditablePanel>): Boolean { val indexOf = panels.indexOf(panel) - - require(indexOf != -1) { "No such panel $panel" } - - if (indexOf == 0) { - return - } - + if (indexOf <= 0) return false panels.removeAt(indexOf) panels.addFirst(panel) + return true } /** 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 ff5518306..189e3d6e9 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 @@ -1185,6 +1185,10 @@ open class EditablePanel @JvmOverloads constructor( var parent: EditablePanel<*>? = this while (parent != null) { + if (parent.parent == null) { + parent.popup(false) + } + for (child in parent.childrenInternal) { if (child !== filter) { child.killFocus() @@ -1193,8 +1197,11 @@ open class EditablePanel @JvmOverloads constructor( filter = parent parent = parent.parent - parent?.killFocusThis(false) - parent?.hasFocusedChildren = true + + if (parent != null) { + parent.killFocusThis(false) + parent.hasFocusedChildren = true + } } isFocusedThis = true @@ -1328,12 +1335,8 @@ open class EditablePanel @JvmOverloads constructor( } } - if (mouseClickedInner(x, y, button)) { - if (autoRequestFocus) requestFocus() - return true - } - - return false + if (autoRequestFocus) requestFocus() + return mouseClickedInner(x, y, button) } fun mouseClickedChecked(x: Double, y: Double, button: Int): Boolean {