libsysprof-gtk: use listview instead of columnview

We don't really want the columnview headers at all, so just use listview
and we'll use our inscription to control the size of the name "column".
This commit is contained in:
Christian Hergert
2023-06-15 13:28:03 -07:00
parent b572b7426e
commit 7568c31fcf
2 changed files with 15 additions and 48 deletions

View File

@ -32,7 +32,7 @@ struct _SysprofMarkChart
SysprofSession *session;
GtkWidget *box;
GtkColumnView *column_view;
GtkListView *list_view;
};
enum {
@ -51,7 +51,7 @@ sysprof_mark_chart_disconnect (SysprofMarkChart *self)
g_assert (SYSPROF_IS_MARK_CHART (self));
g_assert (SYSPROF_IS_SESSION (self->session));
gtk_column_view_set_model (self->column_view, NULL);
gtk_list_view_set_model (self->list_view, NULL);
}
static void
@ -61,22 +61,17 @@ sysprof_mark_chart_connect (SysprofMarkChart *self)
GtkFilterListModel *filtered;
GtkFlattenListModel *flatten;
SysprofDocument *document;
GtkSortListModel *sort_model;
GtkSorter *column_sorter;
g_assert (SYSPROF_IS_MARK_CHART (self));
g_assert (SYSPROF_IS_SESSION (self->session));
column_sorter = gtk_column_view_get_sorter (self->column_view);
document = sysprof_session_get_document (self->session);
flatten = gtk_flatten_list_model_new (sysprof_document_catalog_marks (document));
filtered = gtk_filter_list_model_new (G_LIST_MODEL (flatten), NULL);
g_object_bind_property (self->session, "filter", filtered, "filter", G_BINDING_SYNC_CREATE);
sort_model = gtk_sort_list_model_new (G_LIST_MODEL (filtered), g_object_ref (column_sorter));
single = gtk_single_selection_new (G_LIST_MODEL (sort_model));
single = gtk_single_selection_new (G_LIST_MODEL (filtered));
gtk_column_view_set_model (self->column_view, GTK_SELECTION_MODEL (single));
gtk_list_view_set_model (self->list_view, GTK_SELECTION_MODEL (single));
}
static void
@ -154,7 +149,7 @@ sysprof_mark_chart_class_init (SysprofMarkChartClass *klass)
gtk_widget_class_set_css_name (widget_class, "markchart");
gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT);
gtk_widget_class_bind_template_child (widget_class, SysprofMarkChart, box);
gtk_widget_class_bind_template_child (widget_class, SysprofMarkChart, column_view);
gtk_widget_class_bind_template_child (widget_class, SysprofMarkChart, list_view);
g_resources_register (libsysprof_gtk_get_resource ());

View File

@ -8,7 +8,7 @@
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child>
<object class="GtkColumnView" id="column_view">
<object class="GtkListView" id="list_view">
<style>
<class name="data-table"/>
</style>
@ -21,9 +21,6 @@
<property name="child">
<object class="GtkInscription">
<property name="xalign">0</property>
<property name="nat-chars">40</property>
<property name="min-chars">40</property>
<property name="text-overflow">clip</property>
<binding name="text">
<lookup name="group" type="SysprofMarkCatalog">
<lookup name="item">GtkListHeader</lookup>
@ -37,21 +34,19 @@
</property>
</object>
</property>
<child>
<object class="GtkColumnViewColumn" id="name_column">
<property name="title" translatable="yes">Marks</property>
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes"><![CDATA[
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GtkListItem">
<property name="child">
<object class="GtkLabel">
<object class="GtkInscription">
<property name="xalign">0</property>
<property name="ellipsize">end</property>
<property name="max-width-chars">40</property>
<binding name="label">
<property name="nat-chars">40</property>
<property name="min-chars">40</property>
<property name="text-overflow">clip</property>
<binding name="text">
<lookup name="name" type="SysprofMarkCatalog">
<lookup name="item">GtkListItem</lookup>
</lookup>
@ -61,32 +56,9 @@
</template>
</interface>
]]>
</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkColumnViewColumn" id="visuals_column">
<property name="expand">true</property>
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GtkListItem">
<property name="child">
<object class="GtkInscription">
</object>
</property>
</template>
</interface>
]]>
</property>
</object>
</property>
</object>
</child>
</property>
</object>
</child>
</object>