class Gtk::Sorter


Gtk::Sorter is an object to describe sorting criteria.

Its primary user is Gtk::SortListModel

The model will use a sorter to determine the order in which its items should appear by calling Gtk::Sorter#compare for pairs of items.

Sorters may change their sorting behavior through their lifetime. In that case, they will emit the Gtk::Sorter::#changed signal to notify that the sort order is no longer valid and should be updated by calling gtk_sorter_compare() again.

GTK provides various pre-made sorter implementations for common sorting operations. Gtk::ColumnView has built-in support for sorting lists via the Gtk::ColumnViewColumn#sorter property, where the user can change the sorting by clicking on list headers.

Of course, in particular for large lists, it is also possible to subclass Gtk::Sorter and provide one's own sorter.

Direct Known Subclasses

Defined in:



Class Method Summary

Instance Method Summary

Instance methods inherited from class GObject::Object

bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding bind_property, bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding bind_property_full, data(key : String) : Pointer(Void)? data, finalize finalize, freeze_notify : Nil freeze_notify, getv(names : Enumerable(String), values : Enumerable(_)) : Nil getv, notify(property_name : String) : Nil notify, notify_by_pspec(pspec : GObject::ParamSpec) : Nil notify_by_pspec, notify_signal notify_signal, property(property_name : String, value : _) : Nil property, qdata(quark : UInt32) : Pointer(Void)? qdata, ref_count : UInt32 ref_count, run_dispose : Nil run_dispose, set_data(key : String, data : Pointer(Void)?) : Nil set_data, set_property(property_name : String, value : _) : Nil set_property, steal_data(key : String) : Pointer(Void)? steal_data, steal_qdata(quark : UInt32) : Pointer(Void)? steal_qdata, thaw_notify : Nil thaw_notify, to_unsafe : Pointer(Void) to_unsafe, watch_closure(closure : GObject::Closure) : Nil watch_closure

Constructor methods inherited from class GObject::Object

cast(obj : GObject::Object) : self cast, cast?(obj : GObject::Object) : self? cast?, new(pointer : Pointer(Void), transfer : GICrystal::Transfer)
, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv

Class methods inherited from class GObject::Object

compat_control(what : UInt64, data : Pointer(Void)?) : UInt64 compat_control, g_type : UInt64 g_type, interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec interface_find_property, interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec) interface_list_properties

Constructor Detail

def #

Initialize a new Sorter.

Class Method Detail

def self.g_type : UInt64 #

Returns the type id (GType) registered in GLib type system.

Instance Method Detail

def changed(change : Gtk::SorterChange) : Nil #

Notifies all users of the sorter that it has changed.

This emits the Gtk::Sorter::#changed signal. Users of the sorter should then update the sort order via Gtk::Sorter#compare.

Depending on the @change parameter, it may be possible to update the sort order without a full resorting. Refer to the Gtk::SorterChange documentation for details.

This function is intended for implementors of Gtk::Sorter subclasses and should not be called from other functions.

def changed_signal #

def compare(item1 : GObject::Object, item2 : GObject::Object) : Gtk::Ordering #

Compares two given items according to the sort order implemented by the sorter.

Sorters implement a partial order:

  • It is reflexive, ie a = a
  • It is antisymmetric, ie if a < b and b < a, then a = b
  • It is transitive, ie given any 3 items with a ≤ b and b ≤ c, then a ≤ c

The sorter may signal it conforms to additional constraints via the return value of Gtk::Sorter#order.

def order : Gtk::SorterOrder #

Gets the order that @self conforms to.

See Gtk::SorterOrder for details of the possible return values.

This function is intended to allow optimizations.