static void
etgl_item_is_editing_changed_cb (ETableItem *item,
                                 GParamSpec *param,
                                 ETableGroupLeaf *etgl)
{
	g_return_if_fail (E_IS_TABLE_GROUP_LEAF (etgl));

	g_object_notify (G_OBJECT (etgl), "is-editing");
}
void
e_table_group_apply_to_leafs (ETableGroup *etg, ETableGroupLeafFn fn, void *closure)
{
	if (E_IS_TABLE_GROUP_CONTAINER (etg)){
		ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER (etg);
		GList *list = etgc->children;

		/* Protect from unrefs in the callback functions */
		g_object_ref (etg);

		for (list = etgc->children; list; list = list->next){
			ETableGroupContainerChildNode *child_node = list->data;

			e_table_group_apply_to_leafs (child_node->child, fn, closure);
		}

		g_object_unref (etg);
	} else if (E_IS_TABLE_GROUP_LEAF (etg)){
		(*fn) (E_TABLE_GROUP_LEAF (etg)->item, closure);
	} else {
		g_error ("Unknown ETableGroup found: %s",
			 g_type_name (G_TYPE_FROM_INSTANCE (etg)));
	}
}