Hack Fix YACL unbinding keys
This commit is contained in:
@@ -31,37 +31,9 @@ class KeybindingController(
|
|||||||
{ option.pendingValue() },
|
{ option.pendingValue() },
|
||||||
{ option.requestSet(it) },
|
{ option.requestSet(it) },
|
||||||
{ screen.focused = null },
|
{ screen.focused = null },
|
||||||
{ screen.focused = button }
|
{ screen.focused = button },
|
||||||
)
|
)
|
||||||
button = object : ControllerWidget<KeybindingController>(this, screen, widgetDimension) {
|
button = KeybindingWidget(sm, 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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
option.addListener { t, u ->
|
option.addListener { t, u ->
|
||||||
sm.updateLabel()
|
sm.updateLabel()
|
||||||
}
|
}
|
||||||
@@ -69,3 +41,43 @@ class KeybindingController(
|
|||||||
return button
|
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.IntegerSliderControllerBuilder
|
||||||
import dev.isxander.yacl3.api.controller.StringControllerBuilder
|
import dev.isxander.yacl3.api.controller.StringControllerBuilder
|
||||||
import dev.isxander.yacl3.api.controller.TickBoxControllerBuilder
|
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
|
||||||
import kotlin.time.Duration.Companion.seconds
|
import kotlin.time.Duration.Companion.seconds
|
||||||
import kotlin.time.DurationUnit
|
import kotlin.time.DurationUnit
|
||||||
|
import net.minecraft.client.gui.Element
|
||||||
import net.minecraft.client.gui.screen.Screen
|
import net.minecraft.client.gui.screen.Screen
|
||||||
import net.minecraft.text.Text
|
import net.minecraft.text.Text
|
||||||
import moe.nea.firmament.gui.config.BooleanHandler
|
import moe.nea.firmament.gui.config.BooleanHandler
|
||||||
@@ -121,7 +124,23 @@ class YaclIntegration : FirmamentConfigScreenProvider {
|
|||||||
get() = "yacl"
|
get() = "yacl"
|
||||||
|
|
||||||
override fun open(parent: Screen?): Screen {
|
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