Непонятно. Вставка только между выбранными айтемами? В поставновке задачи это не сказано:) (как обычно)
А постановка и не должна перечислять все что не запрещено. Код выше по существу находит ту пару айтемов что была бы в дереве если удалить все selected.
Дальше мы имеем N слотов для вставки (хотя бы 1 всегда есть). Пример
C++ (Qt)
int maxDepth = item1->Depth() + (item1->IsOpenedFolder() ? 1 ; 0);
int minDepth = item2->Depth();
Напр depth оказались 4 и 2, значит можно вставить сразу после item1 (верхнего над мышей), на том же уровне или в его чайлдов, можно в конец его парента или в конец его парент-парента, во всех случаях вставляемое появится там где рисовалась линия вставки. По существу все решено, осталось только показать юзверю где текущий слот. Ну то уже чисто подробности рисования и отслеживания мыши