瀏覽代碼

Optimize moving HTML elements

Kandrashin Denis 13 年之前
父節點
當前提交
e2f7cdaaea
共有 2 個文件被更改,包括 6 次插入15 次删除
  1. 6 13
      source/fb2tree.cpp
  2. 0 2
      source/fb2tree.hpp

+ 6 - 13
source/fb2tree.cpp

@@ -128,17 +128,6 @@ Fb2TreeItem * Fb2TreeItem::content(const Fb2TreeModel &model, int number, QModel
     return 0;
 }
 
-void Fb2TreeItem::move(Fb2TreeItem * child, int delta)
-{
-    int x = index(child);
-    int i = x; if (delta < 0) i += delta;
-    int j = x; if (delta > 0) j += delta;
-    if (i < 0 || j >= count()) return;
-    QWebElement element = m_list[i]->element().takeFromDocument();
-    m_list[j]->element().appendOutside(element);
-    m_list.move(i, j);
-}
-
 //---------------------------------------------------------------------------
 //  Fb2TreeModel
 //---------------------------------------------------------------------------
@@ -396,12 +385,16 @@ QModelIndex Fb2TreeModel::move(const QModelIndex &index, int dx, int dy)
             result = createIndex(to, 0, (void*)child);
 
             if (dy > 0) {
-                from = to;
                 to = index.row();
+                from = to + dy;
             }
 
             beginMoveRows(parent, from, from, parent, to);
-            owner->move(child, dy);
+            Fb2TreeItem * child = owner->item(to);
+            Fb2TreeItem * brother = owner->takeAt(from);
+            owner->insert(brother, to);
+            QWebElement element = child->element().takeFromDocument();
+            brother->element().appendOutside(element);
             endMoveRows();
         } break;
     }

+ 0 - 2
source/fb2tree.hpp

@@ -64,8 +64,6 @@ public:
 
     Fb2TreeItem * content(const Fb2TreeModel &model, int number, QModelIndex &index) const;
 
-    void move(Fb2TreeItem * child, int delta);
-
 private:
     QString static title(const QWebElement &element);
     void addChildren(QWebElement &parent, bool direct = true);