Skip to content

Use a GtkListBox instead of a GtkTreeView

Niels De Graef requested to merge wip/nielsdg/seahorse-listview into master

The biggest reason to get rid of some of our GtkTreeViews (which are supported by GcrCollectionModel), as they're leading to bugs when scrolling or selecting items.

The first element to accomplish this is a new object: SeahorseItemList SeahorseItemList is a wrapper to easily combine a GtkListBox and a GcrCollectionModel. In the long term, we probably want to get rid of the latter in favor of GListModels everywhere, but this will also need changes (and the appropriate deprecations) in libgcr.

Second, we create a KeyManagerItemRow, which represents a widget in the main window (the KeyManager), rather than using custom GtkCellRenderers.

Third, we rewrite the SideBar to also make use of an internal GListStore, combined with a GcrUnionCollection to keep the transition smaller.

Note that this is one big commit, which I normally really dislike, but it was the only practical way, since a lot of the things were linked together in some unfathomable way, which meant that changing something could break the code somewhere completely else.

Merge request reports