[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdebase/kmenuedit
From:       Waldo Bastian <bastian () kde ! org>
Date:       2005-03-17 15:44:53
Message-ID: 20050317154453.A05F11853F () office ! kde ! org
[Download RAW message or body]

CVS commit by waba: 

Don't lose recent changes when moving a folder around.
BUG:93241


  M +24 -5     treeview.cpp   1.94


--- kdebase/kmenuedit/treeview.cpp  #1.93:1.94
@@ -760,5 +760,12 @@ void TreeView::slotDropped (QDropEvent *
           }
 
-         del(m_dragItem, false);
+         // Remove MenuFolderInfo
+         TreeItem *oldParentItem = static_cast<TreeItem*>(m_dragItem->parent());
+         MenuFolderInfo *oldParentFolderInfo = oldParentItem ? \
oldParentItem->folderInfo() : m_rootFolder; +         \
oldParentFolderInfo->take(folderInfo); +
+         // Delete old menu
+         m_menuFile->pushAction(MenuFile::REMOVE_MENU, m_dragItem->directory(), \
QString::null); +
          // Move menu
          QString oldFolder = folderInfo->fullId;
@@ -787,8 +794,20 @@ void TreeView::slotDropped (QDropEvent *
          parentFolderInfo->add(folderInfo);
 
-         TreeItem *newItem = createTreeItem(parentItem, after, folderInfo);
-
-         setSelected ( newItem, true);
-         itemSelected( newItem);
+         if ((parentItem != oldParentItem) || !after)
+         {
+            if (oldParentItem)
+               oldParentItem->takeItem(m_dragItem);
+            else
+               takeItem(m_dragItem);
+            if (parentItem)
+               parentItem->insertItem(m_dragItem);
+            else
+               insertItem(m_dragItem);
+         }
+         m_dragItem->moveItem(after);
+         m_dragItem->setName(folderInfo->caption);
+         m_dragItem->setDirectoryPath(folderInfo->fullId);
+         setSelected(m_dragItem, true);
+         itemSelected(m_dragItem);
       }
    }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic