mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-09-27 17:52:58 +02:00
Add g_list_store_sort
GListStore already has a g_list_store_insert_sorted function, which can be used to keep the list sorted according to a fixed sort function. But if the sort function changes (as e.g. with sort columns in a list UI), the entire list needs to be resorted. In that case, you want g_list_store_sort(). https://bugzilla.gnome.org/show_bug.cgi?id=754152
This commit is contained in:
@@ -4443,6 +4443,7 @@ g_list_store_append
|
|||||||
g_list_store_remove
|
g_list_store_remove
|
||||||
g_list_store_remove_all
|
g_list_store_remove_all
|
||||||
g_list_store_splice
|
g_list_store_splice
|
||||||
|
g_list_store_sort
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
G_TYPE_LIST_STORE
|
G_TYPE_LIST_STORE
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
@@ -316,6 +316,32 @@ g_list_store_insert_sorted (GListStore *store,
|
|||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_list_store_sort:
|
||||||
|
* @store: a #GListStore
|
||||||
|
* @compare_func: (scope call): pairwise comparison function for sorting
|
||||||
|
* @user_data: (closure): user data for @compare_func
|
||||||
|
*
|
||||||
|
* Sort the items in @store according to @compare_func.
|
||||||
|
*
|
||||||
|
* Since: 2.46
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
g_list_store_sort (GListStore *store,
|
||||||
|
GCompareDataFunc compare_func,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
gint n_items;
|
||||||
|
|
||||||
|
g_return_if_fail (G_IS_LIST_STORE (store));
|
||||||
|
g_return_val_if_fail (compare_func != NULL, 0);
|
||||||
|
|
||||||
|
g_sequence_sort (store->items, compare_func, user_data);
|
||||||
|
|
||||||
|
n_items = g_sequence_get_length (store->items);
|
||||||
|
g_list_store_items_changed (store, 0, n_items, n_items);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* g_list_store_append:
|
* g_list_store_append:
|
||||||
* @store: a #GListStore
|
* @store: a #GListStore
|
||||||
|
@@ -49,6 +49,11 @@ guint g_list_store_insert_sorted (GListSt
|
|||||||
GCompareDataFunc compare_func,
|
GCompareDataFunc compare_func,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
|
GLIB_AVAILABLE_IN_2_46
|
||||||
|
void g_list_store_sort (GListStore *store,
|
||||||
|
GCompareDataFunc compare_func,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
GLIB_AVAILABLE_IN_2_44
|
GLIB_AVAILABLE_IN_2_44
|
||||||
void g_list_store_append (GListStore *store,
|
void g_list_store_append (GListStore *store,
|
||||||
gpointer item);
|
gpointer item);
|
||||||
|
Reference in New Issue
Block a user