Add keyboard shortcut to tooltip text where possible.
[ardour.git] / gtk2_ardour / time_axis_view.cc
index 2c241ee283b89a04a4553027e7689f46c7eab124..983bd8c33bc008d76f48b3cfce5424cdb4a0bdf4 100644 (file)
@@ -74,6 +74,7 @@ uint32_t TimeAxisView::hSmaller = 0;
 uint32_t TimeAxisView::hSmall = 0;
 bool TimeAxisView::need_size_info = true;
 int const TimeAxisView::_max_order = 512;
+PBD::Signal1<void,TimeAxisView*> TimeAxisView::CatchDeletion;
 
 TimeAxisView::TimeAxisView (ARDOUR::Session* sess, PublicEditor& ed, TimeAxisView* rent, Canvas& /*canvas*/)
        : AxisView (sess),
@@ -88,6 +89,7 @@ TimeAxisView::TimeAxisView (ARDOUR::Session* sess, PublicEditor& ed, TimeAxisVie
        }
        _canvas_background = new Group (*ed.get_background_group (), 0.0, 0.0);
        _canvas_display = new Group (*ed.get_trackview_group (), 0.0, 0.0);
+       _canvas_display->hide(); // reveal as needed 
 
        selection_group = new Group (*_canvas_display);
        selection_group->hide();
@@ -178,6 +180,8 @@ TimeAxisView::TimeAxisView (ARDOUR::Session* sess, PublicEditor& ed, TimeAxisVie
        controls_hbox.show ();
 
        ColorsChanged.connect (sigc::mem_fun (*this, &TimeAxisView::color_handler));
+
+       GhostRegion::CatchDeletion.connect (*this, ui_bind (&TimeAxisView::erase_ghost, this, _1), gui_context());
 }
 
 TimeAxisView::~TimeAxisView()
@@ -267,7 +271,7 @@ TimeAxisView::show_at (double y, int& nth, VBox *parent)
                if (canvas_item_visible ((*i)->_canvas_display)) {
                        ++nth;
                        _effective_height += (*i)->show_at (y + _effective_height, nth, parent);
-               }
+               } 
        }
 
        return _effective_height;
@@ -661,6 +665,8 @@ TimeAxisView::build_display_menu ()
 {
        using namespace Menu_Helpers;
 
+       delete display_menu;
+
        display_menu = new Menu;
        display_menu->set_name ("ArdourContextMenu");
 
@@ -925,24 +931,23 @@ TimeAxisView::add_ghost (RegionView* rv)
 
        if(gr) {
                ghosts.push_back(gr);
-               gr->CatchDeletion.connect (*this, ui_bind (&TimeAxisView::erase_ghost, this, _1), gui_context());
        }
 }
 
 void
-TimeAxisView::remove_ghost (RegionView* rv) {
+TimeAxisView::remove_ghost (RegionView* rv) 
+{
        rv->remove_ghost_in (*this);
 }
 
 void
-TimeAxisView::erase_ghost (GhostRegion* gr) {
-       if(in_destructor) {
+TimeAxisView::erase_ghost (GhostRegion* gr) 
+{
+       if (in_destructor) {
                return;
        }
-
-       list<GhostRegion*>::iterator i;
-
-       for (i = ghosts.begin(); i != ghosts.end(); ++i) {
+       
+       for (list<GhostRegion*>::iterator i = ghosts.begin(); i != ghosts.end(); ++i) {
                if ((*i) == gr) {
                        ghosts.erase (i);
                        break;
@@ -1353,3 +1358,19 @@ TimeAxisView::resizer_expose (GdkEventExpose* event)
        return true;
 }
 
+bool
+TimeAxisView::set_visibility (bool yn)
+{
+       if (yn != marked_for_display()) {
+               if (yn) {
+                       set_marked_for_display (true);
+                       canvas_display()->show();
+               } else {
+                       set_marked_for_display (false);
+                       hide ();
+               }
+               return true; // things changed
+       }
+       
+       return false;
+}