diff --git a/launcher-gtk/src/main/kotlin/io/gitlab/jfronny/inceptum/gtk/control/KSignalListItemFactory.kt b/launcher-gtk/src/main/kotlin/io/gitlab/jfronny/inceptum/gtk/control/KSignalListItemFactory.kt index 7d60899..f402a67 100644 --- a/launcher-gtk/src/main/kotlin/io/gitlab/jfronny/inceptum/gtk/control/KSignalListItemFactory.kt +++ b/launcher-gtk/src/main/kotlin/io/gitlab/jfronny/inceptum/gtk/control/KSignalListItemFactory.kt @@ -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 : 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)) }