Add function LayerTreeStore::queue_rebuild(). Nothing uses it yet.
[synfig.git] / synfig-studio / trunk / src / gtkmm / layertreestore.cpp
index ffc5cc7..04e5814 100644 (file)
@@ -6,6 +6,7 @@
 **
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2008 Chris Moore
 **
 **     This package is free software; you can redistribute it and/or
 **     modify it under the terms of the GNU General Public License as
@@ -41,6 +42,8 @@
 
 #include <gtk/gtkversion.h>
 #include <ETL/clock>
+#include "general.h"
+
 #endif
 
 /* === U S I N G =========================================================== */
@@ -67,6 +70,7 @@ static LayerTreeStore::Model& ModelHack()
 
 LayerTreeStore::LayerTreeStore(etl::loose_handle<synfigapp::CanvasInterface> canvas_interface_):
        Gtk::TreeStore                  (ModelHack()),
+       queued                                  (false),
        canvas_interface_               (canvas_interface_)
 {
        layer_icon=Gtk::Button().render_icon(Gtk::StockID("synfig-layer"),Gtk::ICON_SIZE_SMALL_TOOLBAR);
@@ -95,7 +99,8 @@ LayerTreeStore::LayerTreeStore(etl::loose_handle<synfigapp::CanvasInterface> can
 
 LayerTreeStore::~LayerTreeStore()
 {
-       synfig::info("LayerTreeStore::~LayerTreeStore(): Deleted");
+       if (getenv("SYNFIG_DEBUG_DESTRUCTORS"))
+               synfig::info("LayerTreeStore::~LayerTreeStore(): Deleted");
 }
 
 int
@@ -196,11 +201,7 @@ LayerTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colum
                Glib::Value<Glib::ustring> x;
                g_value_init(x.gobj(),x.value_type());
 
-
-               if(!layer->get_description().empty())
-                       x.set(layer->get_description());
-               else
-                       x.set(layer->get_local_name());
+               x.set(layer->get_non_empty_description());
 
                g_value_init(value.gobj(),x.value_type());
                //g_value_copy(x.gobj(),value.gobj());
@@ -586,8 +587,24 @@ LayerTreeStore::drag_data_received_vfunc (const TreeModel::Path& dest, const Gtk
 }
 
 void
+LayerTreeStore::queue_rebuild()
+{
+       if (queued) return;
+       queued = false;
+       queue_connection.disconnect();
+       queue_connection=Glib::signal_timeout().connect(
+               sigc::bind_return(
+                       sigc::mem_fun(*this,&LayerTreeStore::rebuild),
+                       false
+               )
+       ,150);
+}
+
+void
 LayerTreeStore::rebuild()
 {
+       if (queued) queued = false;
+
        //etl::clock timer;timer.reset();
 
        //synfig::warning("---------rebuilding layer table---------");
@@ -895,25 +912,21 @@ LayerTreeStore::on_layer_param_changed(synfig::Layer::Handle handle,synfig::Stri
        }
 
        /*
-       //DEBUGPOINT();
        Gtk::TreeModel::Children::iterator iter;
        if(find_layer_row(handle,iter))
        {
-               //DEBUGPOINT();
                Gtk::TreeModel::Children children(iter->children());
 
                for(iter = children.begin(); iter && iter != children.end(); ++iter)
                {
                        if((Glib::ustring)(*iter)[model.param_name]==param_name)
                        {
-                               //DEBUGPOINT();
                                Gtk::TreeRow row=*iter;
                                refresh_row(row);
                                return;
                        }
                }
        }
-       //DEBUGPOINT();
        rebuild();
        */
 }
@@ -1006,7 +1019,6 @@ LayerTreeStore::find_layer_row_(const synfig::Layer::Handle &layer, synfig::Canv
                }
 
                iter=children().end();
-               //DEBUGPOINT();
                //return false;
        }