Update of /cvsroot/audacity/audacity-src/src
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv28056/src
Modified Files:
Menus.cpp
Log Message:
Fix pasting text into wrong label track.
Index: Menus.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Menus.cpp,v
retrieving revision 1.474
retrieving revision 1.475
diff -u -d -r1.474 -r1.475
--- Menus.cpp 9 May 2009 18:01:59 -0000 1.474
+++ Menus.cpp 25 May 2009 07:45:47 -0000 1.475
@@ -2996,19 +2996,20 @@
void AudacityProject::OnPaste()
{
- // If nothing's selected, we just insert new tracks...so first
- // check to see if anything's selected
-
- TrackListIterator iter2(mTracks);
- Track *countTrack = iter2.First();
+ // Handle Label tracks first
+ TrackListOfKindIterator iterlt(Track::Label, mTracks);
- int numSelected = 0;
+ LabelTrack *lt = (LabelTrack *) iterlt.First();
+ if (lt) {
- // Pastes text into the first label track or counts selected wave tracks
- while (countTrack) {
- if (countTrack->GetSelected()) {
- if (countTrack->GetKind() == Track::Label) {
- LabelTrack *lt = (LabelTrack *) countTrack;
+ // Look for selected label tracks and active labels
+ bool selected = false;
+ while (lt) {
+
+ // Does this track have an active label?
+ if (lt->IsSelected()) {
+
+ // Yes, so try pasting into it
if (lt->PasteSelectedText(mViewInfo.sel0, mViewInfo.sel1)) {
PushState(_("Pasted text from the clipboard"), _("Paste"));
@@ -3018,10 +3019,83 @@
mTrackPanel->ScrollIntoView(x);
}
+ // Redraw everyting (is that necessary???) and bail
RedrawProject();
return;
}
}
+
+ // Remember that we found a selected one
+ if (lt->GetSelected()) {
+ selected = true;
+ }
+
+ // Find the next one
+ lt = (LabelTrack *) iterlt.Next();
+ }
+
+ // Were any Label tracks without active labels selected?
+ if (selected) {
+ LabelTrack *plt = NULL;
+ bool pasted = false;
+
+ // Paste new labels into all selected label tracks
+ lt = (LabelTrack *) iterlt.First();
+ while (lt) {
+ if (lt->GetSelected()) {
+ // Ensure that the last pasted label gets unselected. This will
+ // leave only one "active" label when we're done.
+ if (plt) {
+ plt->Unselect();
+ }
+
+ // Add a new label
+ lt->AddLabel(mViewInfo.sel0, mViewInfo.sel1);
+
+ // Now paste the text into it
+ if (lt->PasteSelectedText(mViewInfo.sel0, mViewInfo.sel1)) {
+
+ // Remember that we pasted something
+ pasted = true;
+
+ // Make sure caret is in view
+ int x;
+ if (lt->CalcCursorX(this, &x)) {
+ mTrackPanel->ScrollIntoView(x);
+ }
+ }
+
+ // Remember this track so we can unselect the new label if its
+ // not the last one pasted
+ plt = lt;
+ }
+
+ // Find the next one
+ lt = (LabelTrack *) iterlt.Next();
+ }
+
+ // We're done if we pasted into any tracks
+ if (pasted) {
+ PushState(_("Pasted from the clipboard"), _("Paste"));
+
+ // Redraw everyting (is that necessary???) and bail
+ RedrawProject();
+ return;
+ }
+ }
+ }
+
+ // If nothing's selected, we just insert new tracks...so first
+ // check to see if anything's selected
+
+ TrackListIterator iter2(mTracks);
+ Track *countTrack = iter2.First();
+
+ int numSelected = 0;
+
+ // Pastes text into the first label track or counts selected wave tracks
+ while (countTrack) {
+ if (countTrack->GetSelected()) {
numSelected++;
}
countTrack = iter2.Next();
@@ -3082,7 +3156,7 @@
mViewInfo.sel0 = 0.0;
mViewInfo.sel1 = msClipLen;
-
+
PushState(_("Pasted from the clipboard"), _("Paste"));
RedrawProject();
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs