[haiku-commits] r35378 - haiku/trunk/src/preferences/locale

  • From: pulkomandy@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 1 Feb 2010 13:58:43 +0100 (CET)

Author: pulkomandy
Date: 2010-02-01 13:58:43 +0100 (Mon, 01 Feb 2010)
New Revision: 35378
Changeset: http://dev.haiku-os.org/changeset/35378/haiku

Modified:
   haiku/trunk/src/preferences/locale/LocaleWindow.cpp
Log:
Move the parent along with child items in the language selection list.


Modified: haiku/trunk/src/preferences/locale/LocaleWindow.cpp
===================================================================
--- haiku/trunk/src/preferences/locale/LocaleWindow.cpp 2010-02-01 08:55:44 UTC 
(rev 35377)
+++ haiku/trunk/src/preferences/locale/LocaleWindow.cpp 2010-02-01 12:58:43 UTC 
(rev 35378)
@@ -176,17 +176,28 @@
 
 
 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);
-       LanguageListItem* newItem = new 
LanguageListItem(*static_cast<LanguageListItem*>
-               (origin->FullListItemAt(index)));
+       // Check that the node we are going to move is a top-level one.
+       // If not, we want his parent instead
+       
+       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);
-       newItem->SetExpanded(origin->FullListItemAt(index)->IsExpanded());
+       newItem->SetExpanded(itemToMove->IsExpanded());
 
        for (int i = 0; i < itemCount ; i++) {
                LanguageListItem* subItem = static_cast<LanguageListItem*>(
-                       origin->ItemUnderAt(origin->FullListItemAt(index), 
true, i));
+                       origin->ItemUnderAt(itemToMove, true, i));
                this->AddUnder(new LanguageListItem(*subItem),newItem);
        }
        origin->RemoveItem(index);


Other related posts:

  • » [haiku-commits] r35378 - haiku/trunk/src/preferences/locale - pulkomandy