fix: handle null list item widgets
This commit is contained in:
parent
862616c856
commit
84b1120efb
@ -1,6 +1,7 @@
|
|||||||
package io.gitlab.jfronny.inceptum.gtk.control
|
package io.gitlab.jfronny.inceptum.gtk.control
|
||||||
|
|
||||||
import io.github.jwharm.javagi.gobject.SignalConnection
|
import io.github.jwharm.javagi.gobject.SignalConnection
|
||||||
|
import io.gitlab.jfronny.inceptum.gtk.util.Log
|
||||||
import org.gnome.gtk.ListItem
|
import org.gnome.gtk.ListItem
|
||||||
import org.gnome.gtk.SignalListItemFactory
|
import org.gnome.gtk.SignalListItemFactory
|
||||||
import org.gnome.gtk.StringObject
|
import org.gnome.gtk.StringObject
|
||||||
@ -13,10 +14,18 @@ abstract class KSignalListItemFactory<TData, TWidget : Widget> : SignalListItemF
|
|||||||
val li = it as ListItem
|
val li = it as ListItem
|
||||||
li.child = setup()
|
li.child = setup()
|
||||||
}
|
}
|
||||||
|
onTeardown {
|
||||||
|
val li = it as ListItem
|
||||||
|
li.child = null
|
||||||
|
}
|
||||||
onBind {
|
onBind {
|
||||||
val li = it as ListItem
|
val li = it as ListItem
|
||||||
val id = (li.item as StringObject).string
|
val id = (li.item as StringObject).string
|
||||||
val context = BindContextImpl(id, li)
|
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!!)
|
val widget = context.castWidget(li.child!!)
|
||||||
context.bind(widget, context.lookup(id, widget))
|
context.bind(widget, context.lookup(id, widget))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user