QMimeData* HierarchyTreeControl::mimeData(const QList<QTreeWidgetItem*> items) const
{
	std::list<SortedItems> sortedItems;
	
	for (QList<QTreeWidgetItem*>::const_iterator iter = items.begin(); iter != items.end(); ++iter)
	{
		QTreeWidgetItem* item = (*iter);
		sortedItems.push_back(SortedItems(item, GetInternalIndex(item)));
	}
	
	sortedItems.sort(SortByInternalIndex);
	QList<QTreeWidgetItem* > qSortedItems;
	for (std::list<SortedItems>::iterator iter = sortedItems.begin(); iter != sortedItems.end(); ++iter)
	{
		qSortedItems.push_back(iter->item);
	}
	
	QMimeData* data = QTreeWidget::mimeData(qSortedItems);
	data->setUserData(TREE_MIME_DATA, new HierarchyTreeControlMimeData(qSortedItems));
	return data;
}