From 8afa4940c410840f02b25fc6afe79f0313d4e8a4 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Fri, 1 Oct 2021 13:05:05 -0700 Subject: [PATCH] libsysprof-ui: more GTK 4 porting changes --- src/libsysprof-ui/egg-three-grid.c | 24 ++- src/libsysprof-ui/sysprof-marks-page.c | 8 +- src/libsysprof-ui/sysprof-marks-page.ui | 146 ++++++++++-------- src/libsysprof-ui/sysprof-scrollmap.c | 8 + src/libsysprof-ui/sysprof-scrollmap.h | 15 +- .../sysprof-visualizer-group-header.c | 3 +- src/libsysprof-ui/sysprof-visualizers-frame.c | 2 +- 7 files changed, 132 insertions(+), 74 deletions(-) diff --git a/src/libsysprof-ui/egg-three-grid.c b/src/libsysprof-ui/egg-three-grid.c index 455e3c06..20e5165a 100644 --- a/src/libsysprof-ui/egg-three-grid.c +++ b/src/libsysprof-ui/egg-three-grid.c @@ -53,7 +53,11 @@ typedef struct int nat_below_baseline; } EggThreeGridRowInfo; -G_DEFINE_TYPE_WITH_PRIVATE (EggThreeGrid, egg_three_grid, GTK_TYPE_WIDGET) +static void buildable_iface_init (GtkBuildableIface *iface); + +G_DEFINE_TYPE_WITH_CODE (EggThreeGrid, egg_three_grid, GTK_TYPE_WIDGET, + G_ADD_PRIVATE (EggThreeGrid) + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, buildable_iface_init)) enum { PROP_0, @@ -695,3 +699,21 @@ egg_three_grid_column_get_type (void) return type_id; } + +static void +egg_three_grid_add_child (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const char *type) +{ + if (GTK_IS_WIDGET (child)) + egg_three_grid_add (EGG_THREE_GRID (buildable), GTK_WIDGET (child), 0, EGG_THREE_GRID_COLUMN_LEFT); + else + g_warning ("%s cannot be added to %s", G_OBJECT_TYPE_NAME (child), G_OBJECT_TYPE_NAME (buildable)); +} + +static void +buildable_iface_init (GtkBuildableIface *iface) +{ + iface->add_child = egg_three_grid_add_child; +} diff --git a/src/libsysprof-ui/sysprof-marks-page.c b/src/libsysprof-ui/sysprof-marks-page.c index 3b7a7d35..c08381b9 100644 --- a/src/libsysprof-ui/sysprof-marks-page.c +++ b/src/libsysprof-ui/sysprof-marks-page.c @@ -50,6 +50,8 @@ typedef struct GtkLabel *end; GtkLabel *duration; GtkTextView *message; + GtkWidget *failed; + GtkWidget *marks; } SysprofMarksPagePrivate; enum { @@ -310,9 +312,9 @@ sysprof_marks_page_load_cb (GObject *object, gtk_tree_view_set_model (priv->tree_view, GTK_TREE_MODEL (model)); if (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (model), NULL) == 0) - gtk_stack_set_visible_child_name (priv->stack, "empty-state"); + gtk_stack_set_visible_child (priv->stack, GTK_WIDGET (priv->failed)); else - gtk_stack_set_visible_child_name (priv->stack, "marks"); + gtk_stack_set_visible_child (priv->stack, GTK_WIDGET (priv->marks)); g_task_return_boolean (task, TRUE); } @@ -517,6 +519,8 @@ sysprof_marks_page_class_init (SysprofMarksPageClass *klass) gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksPage, duration); gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksPage, time); gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksPage, message); + gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksPage, marks); + gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksPage, failed); properties [PROP_KIND] = g_param_spec_enum ("kind", NULL, NULL, diff --git a/src/libsysprof-ui/sysprof-marks-page.ui b/src/libsysprof-ui/sysprof-marks-page.ui index 0697c835..e7f92c8d 100644 --- a/src/libsysprof-ui/sysprof-marks-page.ui +++ b/src/libsysprof-ui/sysprof-marks-page.ui @@ -3,10 +3,11 @@