fix(gtk): properly select mod list items

This commit is contained in:
Johannes Frohnmeyer 2024-10-04 18:48:35 +02:00
parent 6089636255
commit 2960f109c5
Signed by: Johannes
GPG Key ID: E76429612C2929F4

View File

@ -172,18 +172,21 @@ class ModsTab(window: InstanceSettingsWindow) : SettingsTab<Leaflet, InstanceSet
vscrollPolicy = ScrollablePolicy.NATURAL vscrollPolicy = ScrollablePolicy.NATURAL
addCssClass("navigation-sidebar") addCssClass("navigation-sidebar")
vexpand = true vexpand = true
hexpand = true
showSeparators = true showSeparators = true
} }
} }
class ModsListSelectionModel(model: StringList): SingleSelection(model) { inner class ModsListSelectionModel(model: StringList): SingleSelection(model) {
init { init {
autoselect = false autoselect = false
// onSelectionChanged { position, nItems -> onSelectionChanged { position, _ ->
// val v = (selectedItem as? StringObject)?.string if (position != -1) {
// if (v != null) val v = (selectedItem as? StringObject)?.string
// } if (v != null) {
mods[v]?.let { selectMod(it) }
}
}
}
} }
} }
@ -193,7 +196,6 @@ class ModsTab(window: InstanceSettingsWindow) : SettingsTab<Leaflet, InstanceSet
inner class ModsListItemFactory: KSignalListItemFactory<Decomposed, ActionRow>() { inner class ModsListItemFactory: KSignalListItemFactory<Decomposed, ActionRow>() {
override fun setup(): ActionRow { override fun setup(): ActionRow {
val row = ActionRow() val row = ActionRow()
row.activatable = true
val quickAction = Button.fromIconName("folder-download-symbolic") val quickAction = Button.fromIconName("folder-download-symbolic")
quickAction.addCssClass("flat") quickAction.addCssClass("flat")
@ -208,7 +210,6 @@ class ModsTab(window: InstanceSettingsWindow) : SettingsTab<Leaflet, InstanceSet
override fun BindContext.bind(row: ActionRow, data: Decomposed) { override fun BindContext.bind(row: ActionRow, data: Decomposed) {
row.title = data.mod!!.name.escapedMarkup row.title = data.mod!!.name.escapedMarkup
row.subtitle = data.mod.summary.escapedMarkup row.subtitle = data.mod.summary.escapedMarkup
registerForUnbind(row.onActivated { selectMod(data.mod) })
fun setupQuickAction( fun setupQuickAction(
iconName: String, iconName: String,
description: @PropertyKey(resourceBundle = I18n.BUNDLE) String, description: @PropertyKey(resourceBundle = I18n.BUNDLE) String,
@ -257,7 +258,7 @@ class ModsTab(window: InstanceSettingsWindow) : SettingsTab<Leaflet, InstanceSet
data class Installed(private val mod: Mod) : ModState { data class Installed(private val mod: Mod) : ModState {
private val sources = mod.metadata.sources private val sources = mod.metadata.sources
val updates: List<() -> Unit> = sources.mapNotNull { it.value.getOrNull() }.map { { mod.update(it) } } val updates: List<() -> Unit> = sources.mapNotNull { it.value.getOrNull() }.map { { mod.update(it) } }
val outdated get() = updates.isEmpty() val outdated get() = updates.isNotEmpty()
fun remove() = mod.delete() fun remove() = mod.delete()
override val name: String = mod.name override val name: String = mod.name
override val summary: String by lazy { mod.metadata.sources.bestSummary } override val summary: String by lazy { mod.metadata.sources.bestSummary }