EditorRoutes needs to respond to PropertyChanged(selected)
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 10 Jun 2016 17:53:48 +0000 (13:53 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 10 Jun 2016 17:57:19 +0000 (13:57 -0400)
gtk2_ardour/editor_routes.cc

index dc41492dfd25876ca2128b14237dc15e11dfad57..4e97f757967c2b108e0b4204f99bcd5c5bac1668 100644 (file)
@@ -895,27 +895,40 @@ EditorRoutes::route_removed (TimeAxisView *tv)
 void
 EditorRoutes::route_property_changed (const PropertyChange& what_changed, boost::weak_ptr<Stripable> s)
 {
+       if (!what_changed.contains (ARDOUR::Properties::hidden) && !what_changed.contains (ARDOUR::Properties::name)) {
+               return;
+       }
+
        if (_adding_routes) {
                return;
        }
 
-       if (what_changed.contains (ARDOUR::Properties::name)) {
+       boost::shared_ptr<Stripable> stripable = s.lock ();
 
-               boost::shared_ptr<Stripable> stripable = s.lock ();
+       if (!stripable) {
+               return;
+       }
 
-               if (!stripable) {
-                       return;
-               }
+       TreeModel::Children rows = _model->children();
+       TreeModel::Children::iterator i;
+
+       for (i = rows.begin(); i != rows.end(); ++i) {
+
+               boost::shared_ptr<Stripable> ss = (*i)[_columns.stripable];
 
-               TreeModel::Children rows = _model->children();
-               TreeModel::Children::iterator i;
+               if (ss == stripable) {
 
-               for (i = rows.begin(); i != rows.end(); ++i) {
-                       boost::shared_ptr<Stripable> ss = (*i)[_columns.stripable];
-                       if (ss == stripable) {
+                       if (what_changed.contains (ARDOUR::Properties::name)) {
                                (*i)[_columns.text] = stripable->name();
                                break;
                        }
+
+                       if (what_changed.contains (ARDOUR::Properties::hidden)) {
+                               (*i)[_columns.visible] = !stripable->presentation_info().hidden();
+                               redisplay ();
+                       }
+
+                       break;
                }
        }
 }