fix: handle null list item widgets
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/push/docs Pipeline was successful

This commit is contained in:
Johannes Frohnmeyer 2024-07-09 14:58:53 +02:00
parent 862616c856
commit 84b1120efb
Signed by: Johannes
GPG Key ID: E76429612C2929F4

View File

@ -1,6 +1,7 @@
package io.gitlab.jfronny.inceptum.gtk.control
import io.github.jwharm.javagi.gobject.SignalConnection
import io.gitlab.jfronny.inceptum.gtk.util.Log
import org.gnome.gtk.ListItem
import org.gnome.gtk.SignalListItemFactory
import org.gnome.gtk.StringObject
@ -13,10 +14,18 @@ abstract class KSignalListItemFactory<TData, TWidget : Widget> : SignalListItemF
val li = it as ListItem
li.child = setup()
}
onTeardown {
val li = it as ListItem
li.child = null
}
onBind {
val li = it as ListItem
val id = (li.item as StringObject).string
val context = BindContextImpl(id, li)
if (li.child == null) {
Log.warn("Unexpectedly, list item widget is null, retrying setup")
li.child = setup()
}
val widget = context.castWidget(li.child!!)
context.bind(widget, context.lookup(id, widget))
}