Author: Carlos Lopez <[email protected]>
Date:   Wed Jun 29 20:47:32 2011 +0200

Limit waypoints dragging within the document start and end times limits. Fix 
bug #1688324

---

 .../gui/cellrenderer/cellrenderer_timetrack.cpp    |   32 ++++++++++++++++++--
 1 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp 
b/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp
index c06e9b1..1e7512e 100644
--- a/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp
+++ b/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp
@@ -809,11 +809,37 @@ CellRenderer_TimeTrack::activate_vfunc(
                                        }
 
                                        set<Time>       newset;
-                                       std::set<synfig::Time>::iterator i = 
sel_times.begin(), end = sel_times.end();
-                                       for(; i != end; ++i)
+                                       std::set<synfig::Time>::iterator i, 
begin = sel_times.begin(), end = sel_times.end();
+                                       // Check if we are moving the set of 
waypoints out of the
+                                       // boundaries of the canvas start and 
end times.
+                                       // If that happens, then limit the 
movement in that side.
+                                       //Solves bug:
+                                       Time endtime, starttime;
+                                       
starttime=get_canvas()->rend_desc().get_time_start();
+                                       
endtime=get_canvas()->rend_desc().get_time_end();
+                                       Time smaller(Time::end());
+                                       Time higher(Time::begin());
+                                       for(i=begin; i != end; ++i)
+                                       {
+                                               Time t=(*i + 
deltatime).round(get_canvas()->rend_desc().get_frame_rate());
+                                               if(t > endtime && t > higher)
+                                                       higher = t;
+                                               if(t < starttime && t < smaller)
+                                                       smaller = t;
+                                       }
+                                       if(higher > endtime)
+                                               {
+                                                       deltatime 
-=higher-endtime;
+                                                       
synfig::warning(_("Attempting to move waypoints after end time!. Clamping 
movement"));
+                                               }
+                                       if(smaller < starttime)
+                                               {
+                                                       deltatime 
+=starttime-smaller;
+                                                       
synfig::warning(_("Attempting to move waypoints before start time!. Clamping 
movement"));
+                                               }
+                                       for(i=begin; i != end; ++i)
                                        {
                                                param_list.add("addtime",*i);
-
                                                newset.insert((*i + 
deltatime).round(get_canvas()->rend_desc().get_frame_rate()));
                                        }
 


------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to