Add a 'Type' column to the parameter dialog so it's possible to tell an 'Add' from...
[synfig.git] / synfig-studio / trunk / src / gtkmm / layertree.cpp
index 0fcaa11..82387b2 100644 (file)
@@ -344,7 +344,7 @@ LayerTree::create_param_tree()
                cellrenderer_value->signal_edited().connect(sigc::mem_fun(*this, &studio::LayerTree::on_edited_value));
                cellrenderer_value->property_value()=synfig::ValueBase();
                column->add_attribute(cellrenderer_value->property_param_desc(), param_model.param_desc);
-               column->add_attribute(cellrenderer_value->property_inconsistant(),param_model.is_inconsistent);
+               column->add_attribute(cellrenderer_value->property_inconsistent(),param_model.is_inconsistent);
                //cellrenderer_value->property_canvas()=canvas_interface->get_canvas(); // Is this line necessary?
                cellrenderer_value->property_attributes()=attr_list;
 
@@ -356,6 +356,18 @@ LayerTree::create_param_tree()
                column->set_reorderable();
                column->set_resizable();
        }
+       {       // --- T Y P E --------------------------------------------------------
+               const CanvasTreeStore::Model model;
+               int cols_count = get_param_tree_view().append_column(_("Type"),model.type);
+               Gtk::TreeViewColumn* column = get_param_tree_view().get_column(cols_count-1);
+               if(column)
+               {
+                       column->set_reorderable();
+                       column->set_resizable();
+                       column->set_clickable();
+                       column->set_sort_column_id(model.type);
+               }
+       }
        /*{     // --- T I M E   T R A C K --------------------------------------------
                Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Time Track")) );
                column_time_track=column;
@@ -648,7 +660,7 @@ LayerTree::on_selection_changed()
        button_duplicate->set_sensitive(true);
        button_delete->set_sensitive(true);
 
-       if(layer_list.size()==1 && (*layer_list.begin())->get_param("amount").is_valid()&& (*layer_list.begin())->get_param("amount").same_as(Real()))
+       if(layer_list.size()==1 && (*layer_list.begin())->get_param("amount").is_valid()&& (*layer_list.begin())->get_param("amount").same_type_as(Real()))
        {
                quick_layer=*layer_list.begin();
        }
@@ -871,11 +883,13 @@ LayerTree::on_param_tree_event(GdkEvent *event)
                                        {
                                                synfigapp::ValueDesc value_desc(row[param_model.value_desc]);
                                                Gtk::Menu* menu(manage(new Gtk::Menu()));
+                                               menu->signal_hide().connect(sigc::bind(sigc::ptr_fun(&delete_widget), menu));
                                                App::get_instance(param_tree_store_->canvas_interface()->get_canvas())->make_param_menu(menu,param_tree_store_->canvas_interface()->get_canvas(),value_desc,0.5f);
                                                menu->popup(event->button.button,gtk_get_current_event_time());
                                                return true;
                                        }
                                        Gtk::Menu* menu(manage(new Gtk::Menu()));
+                                       menu->signal_hide().connect(sigc::bind(sigc::ptr_fun(&delete_widget), menu));
                                        std::list<synfigapp::ValueDesc> value_desc_list;
                                        ParamDesc param_desc(row[param_model.param_desc]);
                                        for(;!layer_list.empty();layer_list.pop_back())