Skip to content
  • Niels De Graef's avatar
    Use a GtkListBox instead of a GtkTreeView · 334b7d53
    Niels De Graef authored
    The biggest reason to get rid of some of our `GtkTreeView`s (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 `GListModel`s 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
    `GtkCellRenderer`s.
    
    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.
    334b7d53