Class

Gtk.ListView

Description [src]

final class Gtk.ListView : Gtk.ListBase {
  /* No available fields */
}

GtkListView is a widget to present a view into 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 GtkListView: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 GtkListView:enable-rubberband.

If you need multiple columns with headers, see GtkColumnView.

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.

Ancestors

Constructors

gtk_list_view_new

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

Instance methods

gtk_list_view_get_enable_rubberband

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

gtk_list_view_get_factory

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

gtk_list_view_get_model

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

gtk_list_view_get_show_separators

Returns whether the list box should show separators between rows.

gtk_list_view_get_single_click_activate

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

gtk_list_view_set_enable_rubberband

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

gtk_list_view_set_factory

Sets the GtkListItemFactory to use for populating list items.

gtk_list_view_set_model

Sets the GtkSelectionModel to use.

gtk_list_view_set_show_separators

Sets whether the list box should show separators between rows.

gtk_list_view_set_single_click_activate

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

Methods inherited from GtkWidget (159)
Methods inherited from GtkBuildable (1)

Class structure

struct GtkListViewClass {
  /* no available fields */
}