`GtkSignalListItemFactory` is a `GtkListItemFactory` that emits signals to to manage listitems.
Signals are emitted for every listitem in the same order:
[[email protected]:GtkSignalListItemFactory:setup] is emitted to set up permanent things on the listitem.
This usually means constructing the widgets used in the row and adding them to the listitem.
[[email protected]:GtkSignalListItemFactory:bind] is emitted to bind the item passed via [
[email protected]:item] to the widgets that have been created in step 1 or to add item-specific widgets. Signals are connected to
listen to changes - both to changes in the item to update the widgets or to changes in the widgets to update the item. After this
signal has been called, the listitem may be shown in a list widget.
[[email protected]:GtkSignalListItemFactory:unbind] is emitted to undo everything done in step 2. Usually
this means disconnecting signal handlers. Once this signal has been called, the listitem will no longer be used in a list widget.
[[email protected]:GtkSignalListItemFactory:bind] and [[email protected]:
GtkSignalListItemFactory:unbind] may be emitted multiple times again to bind the listitem for use with new items. By reusing
listitems, potentially costly setup can be avoided. However, it means code needs to make sure to properly clean up the listitem in
step 3 so that no information from the previous use leaks into the next use.
[[email protected]:GtkSignalListItemFactory:teardown] is emitted to allow undoing the effects of [
[email protected]:GtkSignalListItemFactory:setup]. After this signal was emitted on a listitem, the listitem
will be destroyed and not be used again.
Note that during the signal emissions, changing properties on the `GtkListItem`s passed will not trigger notify signals as the listitem's
notifications are frozen. See freeze_notify for details.
For tracking changes in other properties in the `GtkListItem`, the notify signal is recommended. The signal
can be connected in the [[email protected]:GtkSignalListItemFactory:setup] signal and removed again during [
[email protected]:GtkSignalListItemFactory:teardown].