Don't let 'select all' select the green ducks of a plant layer.
[synfig.git] / synfig-studio / trunk / src / gtkmm / duckmatic.cpp
index fec7061..118d339 100644 (file)
@@ -99,7 +99,12 @@ Duckmatic::Duckmatic():
 Duckmatic::~Duckmatic()
 {
        clear_ducks();
-       //synfig::info("Duckmatic::~Duckmatic(): Deleted. Duck Count=%d",Duck::duck_count);
+
+       if (Duck::duck_count)
+               synfig::error("%d ducks not yet deleted!", Duck::duck_count);
+
+       if (getenv("SYNFIG_DEBUG_DESTRUCTORS"))
+               synfig::info("Duckmatic::~Duckmatic(): Deleted");
 }
 
 void
@@ -243,20 +248,17 @@ Duckmatic::is_duck_group_selectable(const etl::handle<Duck>& x)const
        const Type type(get_type_mask());
 
        if(( x->get_type() && (!(type & x->get_type())) ) )
-       {
                return false;
-       }
+
        if(x->get_value_desc().parent_is_layer_param() && type & Duck::TYPE_POSITION)
        {
                Layer::Handle layer(x->get_value_desc().get_layer());
                String layer_name(layer->get_name());
-               if(
-                       layer_name=="outline" ||
-                       layer_name=="region" ||
-                       layer_name=="polygon" ||
-                       layer_name=="curve_gradient"
-               )
+
+               if (layer_name == "outline" || layer_name == "region" || layer_name == "plant" ||
+                       layer_name == "polygon" || layer_name == "curve_gradient")
                        return false;
+
                if((layer_name=="PasteCanvas"|| layer_name=="paste_canvas") &&
                   !layer->get_param("children_lock").get(bool()))
                        return false;
@@ -408,7 +410,7 @@ Duckmatic::end_duck_drag()
 }
 
 Point
-Duckmatic::snap_point_to_grid(const Point& x, float radius)const
+Duckmatic::snap_point_to_grid(const synfig::Point& x, float radius)const
 {
        Point ret(x);
 
@@ -817,6 +819,7 @@ Duckmatic::find_bezier(synfig::Point pos, synfig::Real scale, synfig::Real radiu
 bool
 Duckmatic::save_sketch(const synfig::String& filename)const
 {
+       ChangeLocale change_locale(LC_NUMERIC, "C");
        std::ofstream file(filename.c_str());
 
        if(!file)return false;
@@ -850,6 +853,7 @@ Duckmatic::save_sketch(const synfig::String& filename)const
 bool
 Duckmatic::load_sketch(const synfig::String& filename)
 {
+       ChangeLocale change_locale(LC_NUMERIC, "C");
        std::ifstream file(filename.c_str());
 
        if(!file)