diff --git a/src/sysprof/icons/scalable/actions/empty-symbolic.svg b/src/sysprof/icons/scalable/actions/empty-symbolic.svg
new file mode 100644
index 00000000..182d5bd0
--- /dev/null
+++ b/src/sysprof/icons/scalable/actions/empty-symbolic.svg
@@ -0,0 +1,35 @@
+
+
diff --git a/src/sysprof/style.css b/src/sysprof/style.css
index 84d5c5af..627e0ec0 100644
--- a/src/sysprof/style.css
+++ b/src/sysprof/style.css
@@ -43,6 +43,9 @@ callgraphview symbol {
margin: -1px -3px;
padding: 1px 6px;
}
+callgraphview treeexpander expander:not(.expandable) {
+ -gtk-icon-source: -gtk-icontheme("empty-symbolic");
+}
callgraphview row:not(:selected) treeexpander expander:checked+box symbol.process,
callgraphview row:not(:selected) treeexpander expander:checked+box symbol.thread,
callgraphview row:not(:selected) treeexpander expander:checked+box symbol.root {
diff --git a/src/sysprof/sysprof-tree-expander.c b/src/sysprof/sysprof-tree-expander.c
index cb0ed064..0da9b6e7 100644
--- a/src/sysprof/sysprof-tree-expander.c
+++ b/src/sysprof/sysprof-tree-expander.c
@@ -126,6 +126,11 @@ sysprof_tree_expander_update_icon (SysprofTreeExpander *self)
icon = self->icon;
gtk_widget_unset_state_flags (self->expander, GTK_STATE_FLAG_CHECKED);
}
+
+ if (gtk_tree_list_row_is_expandable (self->list_row))
+ gtk_widget_add_css_class (GTK_WIDGET (self->expander), "expandable");
+ else
+ gtk_widget_remove_css_class (GTK_WIDGET (self->expander), "expandable");
}
gtk_image_set_from_gicon (GTK_IMAGE (self->image), icon);
diff --git a/src/sysprof/sysprof.gresource.xml b/src/sysprof/sysprof.gresource.xml
index 86a764af..f8680a8b 100644
--- a/src/sysprof/sysprof.gresource.xml
+++ b/src/sysprof/sysprof.gresource.xml
@@ -4,6 +4,7 @@
gtk/help-overlay.ui
gtk/menus.ui
icons/scalable/actions/address-layout-symbolic.svg
+ icons/scalable/actions/empty-symbolic.svg
icons/scalable/actions/mark-chart-symbolic.svg
icons/scalable/actions/mark-table-symbolic.svg
icons/scalable/actions/mark-waterfall-symbolic.svg