Update the scrollbar that controls the time ruler along the bottom of the canvas...
[synfig.git] / synfig-studio / trunk / src / gtkmm / canvasview.cpp
index 0501e09..18cfb43 100644 (file)
@@ -1240,6 +1240,14 @@ CanvasView::init_menus()
                sigc::mem_fun(*work_area,&studio::WorkArea::select_all_ducks)
        );
 
+       action_group->add( Gtk::Action::create("unselect-all-ducks", _("Unselect All Ducks")),
+               sigc::mem_fun(*work_area,&studio::WorkArea::unselect_all_ducks)
+       );
+
+       action_group->add( Gtk::Action::create("select-all-layers", _("Select All Layers")),
+               sigc::mem_fun(*this,&CanvasView::on_select_layers)
+       );
+
        action_group->add( Gtk::Action::create("unselect-all-layers", _("Unselect All Layers")),
                sigc::mem_fun(*this,&CanvasView::on_unselect_layers)
        );
@@ -1520,6 +1528,8 @@ CanvasView::init_menus()
 //     editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-paste"),NOT_IMPLEMENTED_SLOT));
 //     editmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem());
 //     editmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Select All Ducks"),Gtk::AccelKey('E',Gdk::CONTROL_MASK),sigc::mem_fun(*work_area,&studio::WorkArea::select_all_ducks)));
+//     editmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Unselect All Ducks"),Gtk::AccelKey('E',Gdk::CONTROL_MASK),sigc::mem_fun(*work_area,&studio::WorkArea::unselect_all_ducks)));
+//     editmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Select All Layers"),Gtk::AccelKey('A',Gdk::CONTROL_MASK),sigc::mem_fun(*this,&CanvasView::on_select_layers)));
 //     editmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Unselect All Layers"),Gtk::AccelKey('D',Gdk::CONTROL_MASK),sigc::mem_fun(*this,&CanvasView::on_unselect_layers)));
 //     editmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem());
 //
@@ -1719,6 +1729,14 @@ CanvasView::init_menus()
 }
 
 void
+CanvasView::on_select_layers()
+{
+       Canvas::Handle canvas(get_canvas());
+       for (CanvasBase::iterator iter = canvas->begin(); iter != canvas->end(); iter++)
+               layer_tree->select_all_children_layers(*iter);
+}
+
+void
 CanvasView::on_unselect_layers()
 {
        layer_tree->clear_selected_layers();
@@ -1962,6 +1980,18 @@ CanvasView::refresh_rend_desc()
        }
 
        //clamp time to big bounds...
+       if(time_window_adjustment().get_value() < begin_time)
+       {
+               time_window_adjustment().set_value(begin_time);
+               time_window_adjustment().value_changed();
+       }
+
+       if(time_window_adjustment().get_value() + time_window_adjustment().get_page_size() > end_time)
+       {
+               time_window_adjustment().set_value(end_time - time_window_adjustment().get_page_size());
+               time_window_adjustment().value_changed();
+       }
+
        if(time_adjustment().get_value() < begin_time)
        {
                time_adjustment().set_value(begin_time);
@@ -2628,6 +2658,7 @@ CanvasView::on_duck_changed(const synfig::Point &value,const synfigapp::ValueDes
                        break;
 
                case ValueBase::TYPE_VECTOR:
+               {
                        Vector old_tangent = (*bline_tangent)(get_time()).get(Vector());
                        Angle old_angle = old_tangent.angle();
                        Real old_length = old_tangent.mag();
@@ -2648,6 +2679,9 @@ CanvasView::on_duck_changed(const synfig::Point &value,const synfigapp::ValueDes
                                return false;
                        return canvas_interface()->change_value(synfigapp::ValueDesc(bline_tangent,offset_index), old_offset + new_angle - old_angle);
                }
+               default:
+                       break;
+               }
        }
 
        switch(value_desc.get_value_type())