From 09ab647a79393b3010127a78feaacdbcc7233b7e Mon Sep 17 00:00:00 2001 From: Loof <223481293+unciv-loof@users.noreply.github.com> Date: Thu, 18 Sep 2025 17:57:55 +0200 Subject: [PATCH 1/2] Fix Button#isEnabled ? --- .../unciv/ui/components/extensions/Scene2dExtensions.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt b/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt index 68a05fb0f6..296d71727f 100644 --- a/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt +++ b/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt @@ -55,6 +55,7 @@ private class RestorableTextButtonStyle( //todo ButtonStyle *does* have a `disabled` Drawable, and Button ignores touches in disabled state anyway - all this is a wrong approach /** Disable a [Button] by setting its [touchable][Button.touchable] and [style][Button.style] properties. */ fun Button.disable() { + touchable = Touchable.disabled /** We want disabled buttons to "swallow" the click so that things behind aren't activated, so we don't change touchable The action won't be activated due to [ActorAttachments.activate] checking the isDisabled property */ isDisabled = true @@ -65,6 +66,7 @@ fun Button.disable() { } /** Enable a [Button] by setting its [touchable][Button.touchable] and [style][Button.style] properties. */ fun Button.enable() { + touchable = Touchable.enabled val oldStyle = style if (oldStyle is RestorableTextButtonStyle) { style = oldStyle.restoreStyle @@ -78,7 +80,12 @@ fun Button.enable() { * which is more appropriate to toggle On/Off buttons, while this one is good for 'click-to-do-something' buttons. */ var Button.isEnabled: Boolean - get() = touchable == Touchable.enabled + get() = when (touchable) { + Touchable.enabled -> true + Touchable.disabled -> false + // idk what to do here + Touchable.childrenOnly -> throw IllegalStateException() + } set(value) = if (value) enable() else disable() fun colorFromHex(hexColor: Int): Color { From f40cd771ef139c6df822025afa5bfb910ad7023e Mon Sep 17 00:00:00 2001 From: Loof <223481293+unciv-loof@users.noreply.github.com> Date: Thu, 18 Sep 2025 18:01:35 +0200 Subject: [PATCH 2/2] Revert Button.isEnabled getter --- .../unciv/ui/components/extensions/Scene2dExtensions.kt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt b/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt index 296d71727f..6d05c22c47 100644 --- a/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt +++ b/core/src/com/unciv/ui/components/extensions/Scene2dExtensions.kt @@ -80,12 +80,7 @@ fun Button.enable() { * which is more appropriate to toggle On/Off buttons, while this one is good for 'click-to-do-something' buttons. */ var Button.isEnabled: Boolean - get() = when (touchable) { - Touchable.enabled -> true - Touchable.disabled -> false - // idk what to do here - Touchable.childrenOnly -> throw IllegalStateException() - } + get() = touchable == Touchable.enabled set(value) = if (value) enable() else disable() fun colorFromHex(hexColor: Int): Color {