kdenonbeta/kdedebian/kapture/libkapture
CVS commit by mornfall:
Optimize tree refreshing (in libkapture now) further. We nearly beat
synaptic on install/deinstall marking performance now. :D.
M +20 -14 listtreewidget.cpp 1.27
M +1 -0 listtreewidget.h 1.17
--- kdenonbeta/kdedebian/kapture/libkapture/listtreewidget.cpp #1.26:1.27
@@ -50,13 +50,6 @@ ListTreeWidgetItem::~ListTreeWidgetItem
void ListTreeWidgetItem::setItemParent ()
{
- // std::cerr << "ListTreeWidgetItem::setItemParent ()" << std::endl;
delete m_item;
m_item = 0;
- /* if (TreeDepNode::castNode (this)) {
- std::cerr << "ListTreeWidgetDItem::setItemParent; parent = " << m_parent << std::endl;
- }
- if (TreeBranchNode::castNode (this)) {
- std::cerr << "ListTreeWidgetSItem::setItemParent; parent = " << m_parent << std::endl;
- } */
if (m_parent) {
if (m_parent == m_list -> top ()) {
@@ -71,9 +64,13 @@ void ListTreeWidgetItem::setItemParent (
std::cerr << "open node: " << path () << std::endl;
m_item -> setOpen (m_list -> isOpen (path ()));
- m_elem -> visit (this);
+ itemRefresh ();
}
}
}
/* }}} */
+void ListTreeWidgetItem::itemRefresh ()
+{
+ m_elem -> visit (this);
+}
// detachItem - detach m_item from us (it is being deleted) {{{
// --------------------------------------------------------------------------
@@ -174,9 +171,4 @@ class callSetItemParent : public TreeVis
void visitGenericNode (TreeNode *_n)
{
- // std::cerr << "visiting node: " << _n << std::endl;
- /* if (TreeBranchNode::castNode (_n))
- std::cerr << "visiting branch: " << _n << std::endl;
- if (TreeDepNode::castNode (_n))
- std::cerr << "visiting dep: " << _n << std::endl; */
ListTreeWidgetItem *n = dynamic_cast <ListTreeWidgetItem *> (_n);
if (n)
@@ -185,4 +177,17 @@ class callSetItemParent : public TreeVis
};
/* }}} */
+// class callItemRefresh {{{
+// --------------------------------------------------------------------------
+class callItemRefresh : public TreeVisitor
+{
+ public:
+ void visitGenericNode (TreeNode *_n)
+ {
+ ListTreeWidgetItem *n = dynamic_cast <ListTreeWidgetItem *> (_n);
+ if (n)
+ n -> itemRefresh ();
+ };
+};
+ /* }}} */
// rebuild - rebuild the tree from scatch {{{
// --------------------------------------------------------------------------
@@ -201,5 +206,6 @@ void ListTreeWidget::refresh ()
std::cerr << "ListTreeWidget::refresh ()" << std::endl;
Tree::refresh ();
- TreeVisitor *v = new callSetItemParent;
+ // XXX OPTIMIZE: following is redundant in case rebuild ran
+ TreeVisitor *v = new callItemRefresh;
iterate (v);
delete v;
--- kdenonbeta/kdedebian/kapture/libkapture/listtreewidget.h #1.16:1.17
@@ -71,4 +71,5 @@ namespace kapture {
ListTreeWidgetItem (ListTreeWidget *list, TreeNode *parent, CElemPtr e);
void setItemParent ();
+ void itemRefresh ();
void detachItem ();
virtual ~ListTreeWidgetItem ();
Reply to: