ListView

GtkListView presents a large dynamic list of items.

GtkListView uses its factory to generate one row widget for each visible item and shows them in a linear display, either vertically or horizontally.

The [property@Gtk.ListView:show-separators] property offers a simple way to display separators between the rows.

GtkListView allows the user to select items according to the selection characteristics of the model. For models that allow multiple selected items, it is possible to turn on _rubberband selection_, using [property@Gtk.ListView:enable-rubberband].

If you need multiple columns with headers, see [class@Gtk.ColumnView].

To learn more about the list widget framework, see the overview.

An example of using GtkListView:

static void
setup_listitem_cb (GtkListItemFactory *factory,
GtkListItem        *list_item)
{
GtkWidget *image;

image = gtk_image_new ();
gtk_image_set_icon_size (GTK_IMAGE (image), GTK_ICON_SIZE_LARGE);
gtk_list_item_set_child (list_item, image);
}

static void
bind_listitem_cb (GtkListItemFactory *factory,
GtkListItem        *list_item)
{
GtkWidget *image;
GAppInfo *app_info;

image = gtk_list_item_get_child (list_item);
app_info = gtk_list_item_get_item (list_item);
gtk_image_set_from_gicon (GTK_IMAGE (image), g_app_info_get_icon (app_info));
}

static void
activate_cb (GtkListView  *list,
guint         position,
gpointer      unused)
{
GAppInfo *app_info;

app_info = g_list_model_get_item (G_LIST_MODEL (gtk_list_view_get_model (list)), position);
g_app_info_launch (app_info, NULL, NULL, NULL);
g_object_unref (app_info);
}

...

model = create_application_list ();

factory = gtk_signal_list_item_factory_new ();
g_signal_connect (factory, "setup", G_CALLBACK (setup_listitem_cb), NULL);
g_signal_connect (factory, "bind", G_CALLBACK (bind_listitem_cb), NULL);

list = gtk_list_view_new (GTK_SELECTION_MODEL (gtk_single_selection_new (model)), factory);

g_signal_connect (list, "activate", G_CALLBACK (activate_cb), NULL);

gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), list);

CSS nodes

listview[.separators][.rich-list][.navigation-sidebar][.data-table]
├── row
│
├── row
│
┊
╰── [rubberband]

GtkListView uses a single CSS node named listview. It may carry the .separators style class, when GtkListView:show-separators property is set. Each child widget uses a single CSS node named row. For rubberband selection, a node with name rubberband is used.

The main listview node may also carry style classes to select the style of list presentation: .rich-list, .navigation-sidebar or .data-table.

Accessibility

GtkListView uses the %GTK_ACCESSIBLE_ROLE_LIST role, and the list items use the %GTK_ACCESSIBLE_ROLE_LIST_ITEM role.

Constructors

this
this(GtkListView* gtkListView, bool ownedRef)

Sets our main struct and passes it to the parent class.

this
this(SelectionModelIF model, ListItemFactory factory)

Creates a new GtkListView that uses the given @factory for mapping items to widgets.

Members

Functions

addOnActivate
gulong addOnActivate(void delegate(uint, ListView) dlg, ConnectFlags connectFlags)

Emitted when a row has been activated by the user, usually via activating the GtkListView|list.activate-item action.

getEnableRubberband
bool getEnableRubberband()

Returns whether rows can be selected by dragging with the mouse.

getFactory
ListItemFactory getFactory()

Gets the factory that's currently used to populate list items.

getListViewStruct
GtkListView* getListViewStruct(bool transferOwnership)

Get the main Gtk struct

getModel
SelectionModelIF getModel()

Gets the model that's currently used to read the items displayed.

getShowSeparators
bool getShowSeparators()

Returns whether the list box should show separators between rows.

getSingleClickActivate
bool getSingleClickActivate()

Returns whether rows will be activated on single click and selected on hover.

getStruct
void* getStruct()

the main Gtk struct as a void*

setEnableRubberband
void setEnableRubberband(bool enableRubberband)

Sets whether selections can be changed by dragging with the mouse.

setFactory
void setFactory(ListItemFactory factory)

Sets the GtkListItemFactory to use for populating list items.

setModel
void setModel(SelectionModelIF model)

Sets the model to use.

setShowSeparators
void setShowSeparators(bool showSeparators)

Sets whether the list box should show separators between rows.

setSingleClickActivate
void setSingleClickActivate(bool singleClickActivate)

Sets whether rows should be activated on single click and selected on hover.

Static functions

getType
GType getType()

Variables

gtkListView
GtkListView* gtkListView;

the main Gtk struct

Inherited Members

From ListBase

gtkListBase
GtkListBase* gtkListBase;

the main Gtk struct

getListBaseStruct
GtkListBase* getListBaseStruct(bool transferOwnership)

Get the main Gtk struct

getStruct
void* getStruct()

the main Gtk struct as a void*

__anonymous
mixin OrientableT!(GtkListBase)
Undocumented in source.
__anonymous
mixin ScrollableT!(GtkListBase)
Undocumented in source.
getType
GType getType()

Meta