**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007, 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
CanvasTreeStore (canvas_interface_),
layer_tree (layer_tree)
{
- queued=false;
+ queued=0;
// Connect all the signals
canvas_interface()->signal_value_node_changed().connect(sigc::mem_fun(*this,&studio::LayerParamTreeStore::on_value_node_changed));
canvas_interface()->signal_value_node_renamed().connect(sigc::mem_fun(*this,&studio::LayerParamTreeStore::on_value_node_renamed));
changed_connection_list.back().disconnect();
changed_connection_list.pop_back();
}
- synfig::info("LayerParamTreeStore::~LayerParamTreeStore(): Deleted");
+
+ if (getenv("SYNFIG_DEBUG_DESTRUCTORS"))
+ synfig::info("LayerParamTreeStore::~LayerParamTreeStore(): Deleted");
}
Glib::RefPtr<LayerParamTreeStore>
g_value_init(x.gobj(),model.active.type());
g_value_copy(value.gobj(),x.gobj());
- synfigapp::Action::Handle action(synfigapp::Action::create("layer_activate"));
+ synfigapp::Action::Handle action(synfigapp::Action::create("LayerActivate"));
if(!action)
return;
}
catch(std::exception x)
{
- g_warning(x.what());
+ g_warning("%s", x.what());
}
}
void
LayerParamTreeStore::rebuild()
{
- Profiler profiler("LayerParamTreeStore::rebuild()");
- if(queued)queued=false;
+ // Profiler profiler("LayerParamTreeStore::rebuild()");
+ if(queued)queued=0;
clear();
layer_list=layer_tree->get_selected_layers();
struct REBUILD_HELPER
{
ParamVocab vocab;
+ Layer::Handle layer_0;
static ParamVocab::iterator find_param_desc(ParamVocab& vocab, const synfig::String& x)
{
return iter;
}
- void process_vocab(ParamVocab x)
+ void process_vocab(synfig::Layer::Handle layer_n)
{
+ ParamVocab x = layer_n->get_param_vocab();
ParamVocab::iterator iter;
for(iter=vocab.begin();iter!=vocab.end();++iter)
{
- ParamVocab::iterator iter2(find_param_desc(x,iter->get_name()));
- if(iter2==x.end())
+ String name(iter->get_name());
+ ParamVocab::iterator iter2(find_param_desc(x,name));
+ if(iter2==x.end() ||
+ layer_0->get_param(name).get_type() != layer_n->get_param(name).get_type())
{
// remove it and start over
vocab.erase(iter);
{
LayerList::iterator iter(layer_list.begin());
rebuild_helper.vocab=(*iter)->get_param_vocab();
+ rebuild_helper.layer_0=*iter;
for(++iter;iter!=layer_list.end();++iter)
{
- rebuild_helper.process_vocab((*iter)->get_param_vocab());
+ rebuild_helper.process_vocab(*iter);
changed_connection_list.push_back(
(*iter)->signal_changed().connect(
sigc::mem_fun(
if(value!=((*iter2)->get_param(iter->get_name())))
{
row[model.is_inconsistent] = true;
- while(!row.children().empty() && erase(row.children().begin()));
+ while(!row.children().empty() && erase(row.children().begin()))
+ ;
break;
}
}
void
LayerParamTreeStore::refresh()
{
- if(queued)queued=false;
+ if(queued)queued=0;
Gtk::TreeModel::Children children_(children());
if(value!=((*iter2)->get_param(param_desc.get_name())))
{
row[model.is_inconsistent] = true;
- while(!row.children().empty() && erase(row.children().begin()));
+ while(!row.children().empty() && erase(row.children().begin()))
+ ;
return;
}
}
LayerParamTreeStore::set_row(Gtk::TreeRow row,synfigapp::ValueDesc value_desc)
{
Gtk::TreeModel::Children children = row.children();
- while(!children.empty() && erase(children.begin()));
+ while(!children.empty() && erase(children.begin()))
+ ;
CanvasTreeStore::set_row(row,value_desc);
}