Added copyright lines for files I've edited this year.
[synfig.git] / synfig-studio / trunk / src / gtkmm / canvasview.cpp
index 7ebbcdb..ad2ab6b 100644 (file)
@@ -6,7 +6,7 @@
 **
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
-**     Copyright (c) 2007 Chris Moore
+**     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
@@ -1057,6 +1057,13 @@ void
 CanvasView::on_current_time_widget_changed()
 {
        set_time(current_time_widget->get_value());
+
+       // show the value being used - it will have been rounded to nearest frame
+       // this was already being done elsewhere, but only if the time was really changed;
+       // if the current time was 6f and the user edited it to 6.1f, then the 6.1f would
+       // be left in the display without the following line to fix it
+       current_time_widget->set_value(get_time());
+       current_time_widget->set_position(-1); // leave the cursor at the end
 }
 
 //     Gtk::Widget*
@@ -2437,7 +2444,12 @@ CanvasView::on_time_changed()
 void
 CanvasView::time_zoom_in()
 {
+       float frame_rate = get_canvas()->rend_desc().get_frame_rate();
+       Time min_page_size = 2/frame_rate;
+
        time_window_adjustment().set_page_size(time_window_adjustment().get_page_size()*0.75);
+       if (time_window_adjustment().get_page_size() < min_page_size)
+               time_window_adjustment().set_page_size(min_page_size);
        time_window_adjustment().changed();
 
        refresh_time_window();
@@ -2446,7 +2458,12 @@ CanvasView::time_zoom_in()
 void
 CanvasView::time_zoom_out()
 {
+       Time length = (get_canvas()->rend_desc().get_time_end() -
+                                  get_canvas()->rend_desc().get_time_start());
+
        time_window_adjustment().set_page_size(time_window_adjustment().get_page_size()/0.75);
+       if (time_window_adjustment().get_page_size() > length)
+               time_window_adjustment().set_page_size(length);
        time_window_adjustment().changed();
 
        refresh_time_window();
@@ -3236,7 +3253,7 @@ CanvasView::on_waypoint_clicked_canvasview(synfigapp::ValueDesc value_desc,
                waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem((size == 1) ? _("_Remove") : strprintf(_("_Remove %d Waypoints"), size),
                         sigc::bind(sigc::ptr_fun(remove_waypoints), waypoint_set, canvas_interface())));
 
-               if (size == 1)
+               if (size == 1 && value_desc.is_valid())
                        waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Properties"),
                                sigc::mem_fun(waypoint_dialog,&Gtk::Widget::show)));