Move the test for whether the duck is the correct type to before the distance calcula...
authordooglus <dooglus@1f10aa63-cdf2-0310-b900-c93c546f37ac>
Wed, 26 Nov 2008 19:22:19 +0000 (19:22 +0000)
committerdooglus <dooglus@1f10aa63-cdf2-0310-b900-c93c546f37ac>
Wed, 26 Nov 2008 19:22:19 +0000 (19:22 +0000)
git-svn-id: https://synfig.svn.sourceforge.net/svnroot/synfig@2288 1f10aa63-cdf2-0310-b900-c93c546f37ac

synfig-studio/trunk/src/gtkmm/duckmatic.cpp

index 485b9f6..0032e4f 100644 (file)
@@ -881,8 +881,10 @@ Duckmatic::find_duck(synfig::Point point, synfig::Real radius, Duck::Type type)
        {
                const Duck::Handle& duck(iter->second);
 
-               if(duck->get_ignore())
+               if(duck->get_ignore() ||
+                  (duck->get_type() && !(type & duck->get_type())))
                        continue;
+
                Real dist((duck->get_trans_point()-point).mag_squared());
 
                if(duck->get_type()&Duck::TYPE_VERTEX)
@@ -892,7 +894,7 @@ Duckmatic::find_duck(synfig::Point point, synfig::Real radius, Duck::Type type)
                else if(duck->get_type()&Duck::TYPE_RADIUS)
                        dist*=0.9999;
 
-               if(dist<closest && !( duck->get_type() && (!(type & duck->get_type())) ) )
+               if(dist<closest)
                {
                        closest=dist;
                        ret=duck;