### Godot version

v4.1.rc1.official [1f9e540f1]

### System information

Windows 10

### Issue description

Attempting to reorder the children of a TabContainer results in an unintended ordering and incorrect undo states.

Also happens in v4.0.3.stable.official [5222a99f5].

https://github.com/godotengine/godot/assets/3820082/2c2458e3-88ad-46d9-8a04-f289a049984a



### Steps to reproduce

1. Add a new TabContainer
2. Add a few children to it
3. Drag and drop to erroneously reorder them
4. Attempt to undo the change

### Minimal reproduction project

N/A
p_child->data.name = p_name;
	data.children.insert(p_name, p_child);
	p_child->data.internal_mode = p_internal_mode;
	switch (p_internal_mode) {
		case INTERNAL_MODE_FRONT: {
			p_child->data.index = data.internal_children_front_count_cache++;
		} break;
		case INTERNAL_MODE_BACK: {
			p_child->data.index = data.internal_children_back_count_cache++;
		} break;
		case INTERNAL_MODE_DISABLED: {
			p_child->data.index = data.external_children_count_cache++;
		} break;
	}
	p_child->data.parent = this;
	if (!data.children_cache_dirty && p_internal_mode == INTERNAL_MODE_DISABLED && data.internal_children_back_count_cache == 0) {
		
		data.children_cache.push_back(p_child);
	} else {
		data.children_cache_dirty = true;
	}
	p_child->notification(NOTIFICATION_PARENTED);
	if (data.tree) {
		p_child->_set_tree(data.tree);
	}