Update of /cvsroot/audacity/audacity-src/src
In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv13716/src

Modified Files:
        TrackPanel.cpp 
Log Message:
- Improved Mute/Solo behaviour
- Prevent TruncSilence with 0 or below for duration.

Index: TrackPanel.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackPanel.cpp,v
retrieving revision 1.373
retrieving revision 1.374
diff -u -d -r1.373 -r1.374
--- TrackPanel.cpp      14 Sep 2007 21:48:50 -0000      1.373
+++ TrackPanel.cpp      23 Sep 2007 19:49:06 -0000      1.374
@@ -5401,22 +5401,43 @@
 
    if (shiftDown) 
       {
-         // Shift-click mutes/solos this track and unmutes/unsolos other 
tracks.
+         // Cosmetic...  
+         // Shift-click mutes this track and unmutes other tracks.
          TrackListIterator iter(mTracks);
          Track *i = iter.First();
          while (i) {
             if (i == t) {
                i->SetMute(true);
+               i->SetSolo(false);
             }
             else {
                i->SetMute(false);
+               i->SetSolo(false);
             }
             i = iter.Next();
          }
       }
    else {
-      // Normal click just toggles this track.
+      // Normal click toggles this track.
       t->SetMute(!t->GetMute());
+
+      TrackListIterator iter(mTracks);
+      Track *i = iter.First();
+      int nPlaying=0;
+
+      // We also set a solo indicator if we have just one track playing.
+      // otherwise clear solo on everything.
+      while (i) {
+         if( !i->GetMute())
+            nPlaying += 1;
+         i = iter.Next();
+      }
+
+      i = iter.First();
+      while (i) {
+         i->SetSolo( (nPlaying==1) && !i->GetMute() );
+         i = iter.Next();
+      }
    }
 
    Refresh(false);
@@ -5432,25 +5453,23 @@
 
    if (shiftDown) 
       {
-         // Shift-click mutes/solos this track and unmutes/unsolos other 
tracks.
-         TrackListIterator iter(mTracks);
-         Track *i = iter.First();
-         while (i) {
-            if (i == t) {
-               i->SetSolo(true);
-
-            }
-            else {
-               i->SetSolo(false);
-               
-            }
-            i = iter.Next();
-         }
+         // A cosmetic feature - we can solo more than one by shift clicking.
+         // on additional tracks.
+         t->SetSolo( true );
+         t->SetMute( false );
       }
    else {
-      // Normal click just toggles this track.
-
-      t->SetSolo(!t->GetSolo());
+      // Normal click solo this track only, mute everything else.
+      // OR unmute and unsolo everything.
+      TrackListIterator iter(mTracks);
+      Track *i = iter.First();
+      bool bWasSolo = t->GetSolo();
+      while (i) {
+         i->SetSolo( (i==t) && !bWasSolo);
+         i->SetMute( (i!=t) && !bWasSolo);
+         i = iter.Next();
+      }
+      //t->SetSolo(!t->GetSolo());
    }
 
    Refresh(false);


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to