Commit da2bf2a2 authored by Emmanuele Bassi's avatar Emmanuele Bassi 👣

Merge branch '1500-list-store-state' into 'master'

gliststore: Store validity of last_position explicitly

Closes #1500

See merge request !596
parents 8ce0c49f c9aba16a
Pipeline #52103 passed with stages
in 13 minutes and 46 seconds
......@@ -55,6 +55,7 @@ struct _GListStore
/* cache */
guint last_position;
GSequenceIter *last_iter;
gboolean last_position_valid;
};
enum
......@@ -79,7 +80,8 @@ g_list_store_items_changed (GListStore *store,
if (position <= store->last_position)
{
store->last_iter = NULL;
store->last_position = -1u;
store->last_position = 0;
store->last_position_valid = FALSE;
}
g_list_model_items_changed (G_LIST_MODEL (store), position, removed, added);
......@@ -179,7 +181,7 @@ g_list_store_get_item (GListModel *list,
GListStore *store = G_LIST_STORE (list);
GSequenceIter *it = NULL;
if (store->last_position != -1u)
if (store->last_position_valid)
{
if (position < G_MAXUINT && store->last_position == position + 1)
it = g_sequence_iter_prev (store->last_iter);
......@@ -194,6 +196,7 @@ g_list_store_get_item (GListModel *list,
store->last_iter = it;
store->last_position = position;
store->last_position_valid = TRUE;
if (g_sequence_iter_is_end (it))
return NULL;
......@@ -213,7 +216,8 @@ static void
g_list_store_init (GListStore *store)
{
store->items = g_sequence_new (g_object_unref);
store->last_position = -1u;
store->last_position = 0;
store->last_position_valid = FALSE;
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment