From 84b1120efbe0f86fcd22d7bc833e4831e863a9ca Mon Sep 17 00:00:00 2001 From: JFronny Date: Tue, 9 Jul 2024 14:58:53 +0200 Subject: [PATCH] fix: handle null list item widgets --- .../inceptum/gtk/control/KSignalListItemFactory.kt | 9 +++++++++ 1 file changed, 9 insertions(+) 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)) }