+void expand_event(GtkTreeView *treeview, GtkTreeIter *iter, GtkTreePath *arg2, gpointer user_data)
+{
+ ControlFlowData *resourceview_data =
+ (ControlFlowData*)g_object_get_data(
+ G_OBJECT(treeview),
+ "resourceview_data");
+ ProcessList *process_list = (ProcessList *) user_data;
+ ResourceUnique *rup;
+ HashedResourceData *hrd;
+ gboolean result;
+
+ GtkTreeModel *model;
+ GtkTreeIter child;
+
+ /* Determine which trace has been expanded */
+ model = gtk_tree_view_get_model(treeview);
+
+ /* mark each of the trace's resources invisible */
+ result = gtk_tree_model_iter_children(model, &child, iter);
+
+ /* for each child of the collapsed row */
+ while(result) {
+ /* hide the item */
+ gtk_tree_model_get(model, &child, DATA_COLUMN, &hrd, -1);
+ hrd->hidden=0;
+
+ /* find next */
+ result = gtk_tree_model_iter_next(model, &child);
+ }
+
+ update_index_to_pixmap(process_list);
+
+ gtk_widget_queue_draw(resourceview_data->drawing->drawing_area);
+}
+
+void collapse_event(GtkTreeView *treeview, GtkTreeIter *iter, GtkTreePath *arg2, gpointer user_data)
+{
+ ControlFlowData *resourceview_data =
+ (ControlFlowData*)g_object_get_data(
+ G_OBJECT(treeview),
+ "resourceview_data");
+ ProcessList *process_list = (ProcessList *) user_data;
+ ResourceUnique *rup;
+ HashedResourceData *hrd;
+ gboolean result;
+
+ GtkTreeModel *model;
+ GtkTreeIter child;
+
+ /* Determine which trace has been expanded */
+ model = gtk_tree_view_get_model(treeview);
+
+ /* mark each of the trace's resources invisible */
+ result = gtk_tree_model_iter_children(model, &child, iter);
+
+ /* for each child of the collapsed row */
+ while(result) {
+ char *name;
+ /* hide the item */
+ gtk_tree_model_get(model, &child, NAME_COLUMN, &name, DATA_COLUMN, &hrd, -1);
+ hrd->hidden=1;
+
+ /* find next */
+ result = gtk_tree_model_iter_next(model, &child);
+ }
+
+ update_index_to_pixmap(process_list);
+
+ gtk_widget_queue_draw(resourceview_data->drawing->drawing_area);
+}
+