Move the parent along with child items in the language selection list.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35378 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Adrien Destugues
2010-02-01 12:58:43 +00:00
parent c2629ccc6a
commit d66b223341
+17 -6
View File
@@ -176,17 +176,28 @@ LanguageListView::MoveItems(BList& items, int32 index)
void void
LanguageListView::MoveItemFrom(BOutlineListView* origin, int32 index, int32 dropSpot) LanguageListView::MoveItemFrom(BOutlineListView* origin, int32 index,
int32 dropSpot)
{ {
int itemCount = origin->CountItemsUnder(origin->FullListItemAt(index), true); // Check that the node we are going to move is a top-level one.
LanguageListItem* newItem = new LanguageListItem(*static_cast<LanguageListItem*> // If not, we want his parent instead
(origin->FullListItemAt(index)));
LanguageListItem* itemToMove = static_cast<LanguageListItem*>(origin->Superitem(
origin->FullListItemAt(index)));
if (itemToMove == NULL) {
itemToMove = static_cast<LanguageListItem*>(
origin->FullListItemAt(index));
} else
index = origin->FullListIndexOf(itemToMove);
int itemCount = origin->CountItemsUnder(itemToMove, true);
LanguageListItem* newItem = new LanguageListItem(*itemToMove);
this->AddItem(newItem, dropSpot); this->AddItem(newItem, dropSpot);
newItem->SetExpanded(origin->FullListItemAt(index)->IsExpanded()); newItem->SetExpanded(itemToMove->IsExpanded());
for (int i = 0; i < itemCount ; i++) { for (int i = 0; i < itemCount ; i++) {
LanguageListItem* subItem = static_cast<LanguageListItem*>( LanguageListItem* subItem = static_cast<LanguageListItem*>(
origin->ItemUnderAt(origin->FullListItemAt(index), true, i)); origin->ItemUnderAt(itemToMove, true, i));
this->AddUnder(new LanguageListItem(*subItem),newItem); this->AddUnder(new LanguageListItem(*subItem),newItem);
} }
origin->RemoveItem(index); origin->RemoveItem(index);