Add a better backend for Gcolor3ColorStore
Right now, the store just has a GKeyFile
in memory. This isn't ideal anymore now that it implements the GListModel
interface, because we need to iterate all colors in the key file linearly every time we add, remove or rename a color. This is a problem mostly when renaming (for the other cases, the user probably won't notice a performance hit), where we need to calculate the position of the rename for the list model interface.
This is tricky, because the removal might be in a different spot than the addition, and the interface expects an in-place update. If we model this by removing and inserting, the location changes and this will be reflected in the UI, which is confusing.