### Class

# Gtk SortListModel

#### Description [src]

    final class Gtk.SortListModel : GObject.Object
      implements Gio.ListModel, Gtk.SectionModel {
      /* No available fields */
    }

A `GListModel` that sorts the elements of an underlying model according to a `GtkSorter`.

The model is a stable sort. If two items compare equal according to the sorter, the one that appears first in the original model will also appear first after sorting. Note that if you change the sorter, the previous order will have no influence on the new order. If you want that, consider using a `GtkMultiSorter` and appending the previous sorter to it.

The model can be set up to do incremental sorting, so that sorting long lists doesn’t block the UI. See `gtk_sort_list_model_set_incremental()` for details.

`GtkSortListModel` is a generic model and because of that it cannot take advantage of any external knowledge when sorting. If you run into performance issues with `GtkSortListModel`, it is strongly recommended that you write your own sorting list model.

`GtkSortListModel` allows sorting the items into sections. It implements `GtkSectionModel` and when `GtkSortListModel:section-sorter` is set, it will sort all items with that sorter and items comparing equal with it will be put into the same section. The `GtkSortListModel:sorter` will then be used to sort items inside their sections.

#### Ancestors

- GObject

#### Implements

- GListModel
- GtkSectionModel

#### Constructors

###### gtk_sort_list_model_new

Creates a new sort list model that uses the `sorter` to sort `model`.

#### Instance methods

###### gtk_sort_list_model_get_incremental

Returns whether incremental sorting is enabled.

###### gtk_sort_list_model_get_model

Gets the model currently sorted or `NULL` if none.

###### gtk_sort_list_model_get_pending

Estimates progress of an ongoing sorting operation.

###### gtk_sort_list_model_get_section_sorter

Gets the section sorter that is used to sort items of `self` into sections.

since: 4.12

###### gtk_sort_list_model_get_sorter

Gets the sorter that is used to sort `self`.

###### gtk_sort_list_model_set_incremental

Sets the sort model to do an incremental sort.

###### gtk_sort_list_model_set_model

Sets the model to be sorted.

###### gtk_sort_list_model_set_section_sorter

Sets a new section sorter on `self`.

since: 4.12

###### gtk_sort_list_model_set_sorter

Sets a new sorter on `self`.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from GListModel (5)

###### g_list_model_get_item

Get the item at `position`.

###### g_list_model_get_item_type

Gets the type of the items in `list`.

###### g_list_model_get_n_items

Gets the number of items in `list`.

###### g_list_model_get_object

Get the item at `position`.

###### g_list_model_items_changed

Emits the `GListModel::items-changed` signal on `list`.

##### Methods inherited from GtkSectionModel (2)

###### gtk_section_model_get_section

Query the section that covers the given position. The number of items in the section can be computed by `out_end - out_start`.

since: 4.12

###### gtk_section_model_sections_changed

This function emits the `GtkSectionModel::sections-changed` signal to notify about changes to sections.

since: 4.12

#### Properties

###### Gtk.SortListModel:incremental

If the model should sort items incrementally.

###### Gtk.SortListModel:item-type

The type of items. See `g_list_model_get_item_type()`.

since: 4.8

###### Gtk.SortListModel:model

The model being sorted.

###### Gtk.SortListModel:n-items

The number of items. See `g_list_model_get_n_items()`.

since: 4.8

###### Gtk.SortListModel:pending

Estimate of unsorted items remaining.

###### Gtk.SortListModel:section-sorter

The section sorter for this model, if one is set.

since: 4.12

###### Gtk.SortListModel:sorter

The sorter for this model.

#### Signals

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

##### Signals inherited from GListModel (1)

###### GListModel::items-changed

This signal is emitted whenever items were added to or removed from `list`. At `position`, `removed` items were removed and `added` items were added in their place.

##### Signals inherited from GtkSectionModel (1)

###### GtkSectionModel::sections-changed

Emitted when the start-of-section state of some of the items in `model` changes.

since: 4.12

#### Class structure

    struct GtkSortListModelClass {
      GObjectClass parent_class;

    }

No description available.

###### Class members

`parent_class: GObjectClass`

  No description available.