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:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user