Hack Fix YACL unbinding keys
This commit is contained in:
@@ -31,37 +31,9 @@ class KeybindingController(
|
||||
{ option.pendingValue() },
|
||||
{ option.requestSet(it) },
|
||||
{ screen.focused = null },
|
||||
{ screen.focused = button }
|
||||
{ screen.focused = button },
|
||||
)
|
||||
button = object : ControllerWidget<KeybindingController>(this, screen, widgetDimension) {
|
||||
override fun getHoveredControlWidth(): Int {
|
||||
return 130
|
||||
}
|
||||
|
||||
override fun getValueText(): Text {
|
||||
return sm.label
|
||||
}
|
||||
|
||||
override fun keyPressed(keyCode: Int, scanCode: Int, modifiers: Int): Boolean {
|
||||
return sm.keyboardEvent(keyCode, true)
|
||||
}
|
||||
|
||||
override fun keyReleased(keyCode: Int, scanCode: Int, modifiers: Int): Boolean {
|
||||
return sm.keyboardEvent(keyCode, false)
|
||||
}
|
||||
|
||||
override fun unfocus() {
|
||||
sm.onLostFocus()
|
||||
}
|
||||
|
||||
override fun mouseClicked(mouseX: Double, mouseY: Double, button: Int): Boolean {
|
||||
if (button == 0 && isHovered) {
|
||||
sm.onClick()
|
||||
return true
|
||||
}
|
||||
return super.mouseClicked(mouseX, mouseY, button)
|
||||
}
|
||||
}
|
||||
button = KeybindingWidget(sm, this, screen, widgetDimension)
|
||||
option.addListener { t, u ->
|
||||
sm.updateLabel()
|
||||
}
|
||||
@@ -69,3 +41,43 @@ class KeybindingController(
|
||||
return button
|
||||
}
|
||||
}
|
||||
|
||||
class KeybindingWidget(
|
||||
val sm: KeyBindingStateManager,
|
||||
controller: KeybindingController,
|
||||
screen: YACLScreen,
|
||||
dimension: Dimension<Int>
|
||||
) : ControllerWidget<KeybindingController>(controller, screen, dimension) {
|
||||
override fun getHoveredControlWidth(): Int {
|
||||
return 130
|
||||
}
|
||||
|
||||
override fun getValueText(): Text {
|
||||
return sm.label
|
||||
}
|
||||
|
||||
override fun keyPressed(keyCode: Int, scanCode: Int, modifiers: Int): Boolean {
|
||||
return sm.keyboardEvent(keyCode, true)
|
||||
}
|
||||
|
||||
override fun keyReleased(keyCode: Int, scanCode: Int, modifiers: Int): Boolean {
|
||||
return sm.keyboardEvent(keyCode, false)
|
||||
}
|
||||
|
||||
override fun unfocus() {
|
||||
sm.onLostFocus()
|
||||
}
|
||||
|
||||
override fun setFocused(focused: Boolean) {
|
||||
super.setFocused(focused)
|
||||
if (!focused) sm.onLostFocus()
|
||||
}
|
||||
|
||||
override fun mouseClicked(mouseX: Double, mouseY: Double, button: Int): Boolean {
|
||||
if (button == 0 && isHovered) {
|
||||
sm.onClick()
|
||||
return true
|
||||
}
|
||||
return super.mouseClicked(mouseX, mouseY, button)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,9 +13,12 @@ import dev.isxander.yacl3.api.controller.DoubleSliderControllerBuilder
|
||||
import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder
|
||||
import dev.isxander.yacl3.api.controller.StringControllerBuilder
|
||||
import dev.isxander.yacl3.api.controller.TickBoxControllerBuilder
|
||||
import dev.isxander.yacl3.gui.YACLScreen
|
||||
import dev.isxander.yacl3.gui.tab.ListHolderWidget
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
import kotlin.time.DurationUnit
|
||||
import net.minecraft.client.gui.Element
|
||||
import net.minecraft.client.gui.screen.Screen
|
||||
import net.minecraft.text.Text
|
||||
import moe.nea.firmament.gui.config.BooleanHandler
|
||||
@@ -121,7 +124,23 @@ class YaclIntegration : FirmamentConfigScreenProvider {
|
||||
get() = "yacl"
|
||||
|
||||
override fun open(parent: Screen?): Screen {
|
||||
return buildConfig().generateScreen(parent)
|
||||
return object : YACLScreen(buildConfig(), parent) {
|
||||
override fun setFocused(focused: Element?) {
|
||||
if (this.focused is KeybindingWidget &&
|
||||
focused is ListHolderWidget<*>
|
||||
) {
|
||||
return
|
||||
}
|
||||
super.setFocused(focused)
|
||||
}
|
||||
|
||||
override fun shouldCloseOnEsc(): Boolean {
|
||||
if (focused is KeybindingWidget) {
|
||||
return false
|
||||
}
|
||||
return super.shouldCloseOnEsc()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user