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

Modified Files:
        TrackPanel.cpp TrackPanel.h 
Log Message:
Prevent zooming if track display is set to Pitch and vertical ruler is clicked.
Restrict vertical zoom lines to visible track display.


Index: TrackPanel.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackPanel.cpp,v
retrieving revision 1.352
retrieving revision 1.353
diff -u -d -r1.352 -r1.353
--- TrackPanel.cpp      19 May 2007 18:56:43 -0000      1.352
+++ TrackPanel.cpp      19 May 2007 23:11:58 -0000      1.353
@@ -2383,24 +2383,28 @@
    if (event.ButtonDown() || event.ButtonDClick(1)) {
       HandleZoomClick(event);
    }
-   else if (event.Dragging()) {
-      HandleZoomDrag(event);
-   }
-   else if (event.ButtonUp()) {
-      HandleZoomButtonUp(event);
+   else if (mMouseCapture == IsZooming) {
+      if (event.Dragging()) {
+         HandleZoomDrag(event);
+      }
+      else if (event.ButtonUp()) {
+         HandleZoomButtonUp(event);
+      }
    }
 }
 
 /// Zoom button down, record the position.
 void TrackPanel::HandleZoomClick(wxMouseEvent & event)
 {
-   Track *t;
-   wxRect r;
-   int num;
+   if (mCapturedTrack)
+      return;
 
-   t = FindTrack(event.m_x, event.m_y, false, false, &r, &num);
+   mCapturedTrack = FindTrack(event.m_x, event.m_y, false, false,
+                              &mCapturedRect, &mCapturedNum);
+   if (!mCapturedTrack)
+      return;
 
-   SetCapturedTrack(t, IsZooming);
+   SetCapturedTrack(mCapturedTrack, IsZooming);
 
    mZoomStart = event.m_x;
    mZoomEnd = event.m_x;
@@ -2450,6 +2454,12 @@
    Refresh(false);
 }
 
+/// Determines if drag zooming is active
+bool TrackPanel::IsDragZooming()
+{
+   return (abs(mZoomEnd - mZoomStart) > DragThreshold);
+}
+
 ///  This actually sets the Zoom value when you're done doing
 ///  a drag zoom.
 void TrackPanel::DragZoom(wxMouseEvent & event, int trackLeftEdge)
@@ -4523,8 +4533,10 @@
       i++;
    }
 
-   if (IsDragZooming()  && (mMouseCapture != IsAdjustingLabel))
+   if ((mMouseCapture == IsZooming || mMouseCapture == IsVZooming) &&
+       IsDragZooming()) {
       DrawZooming(dc, clip);
+   }
 
    // Paint over the part below the tracks
    GetSize(&trackRect.width, &trackRect.height);
@@ -4618,16 +4630,18 @@
 /// zooming.
 void TrackPanel::DrawZooming(wxDC * dc, const wxRect clip)
 {
-
    wxRect r;
 
    dc->SetBrush(*wxTRANSPARENT_BRUSH);
    dc->SetPen(*wxBLACK_DASHED_PEN);
 
    if (mMouseCapture==IsVZooming) {
+      int width, height;
+      GetTracksUsableArea(&width, &height);
+
       r.y = mZoomStart;
       r.x = GetVRulerOffset();
-      r.width = 10000;
+      r.width = width + GetVRulerWidth() + 1; //+1 extends into border rect
       r.height = mZoomEnd - mZoomStart;
    }
    else {

Index: TrackPanel.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackPanel.h,v
retrieving revision 1.116
retrieving revision 1.117
diff -u -d -r1.116 -r1.117
--- TrackPanel.h        19 May 2007 18:56:43 -0000      1.116
+++ TrackPanel.h        19 May 2007 23:11:58 -0000      1.117
@@ -271,6 +271,7 @@
    void HandleZoomDrag(wxMouseEvent & event);
    void HandleZoomButtonUp(wxMouseEvent & event);
 
+   bool IsDragZooming();
    void DragZoom(wxMouseEvent &event, int x);
    void DoZoomInOut(wxMouseEvent &event, int x);
 
@@ -531,8 +532,6 @@
    //   coordinate should the dragging track move up or down?
    int mMoveUpThreshold;
    int mMoveDownThreshold;
-   
-   bool IsDragZooming() const { return abs(mZoomEnd - mZoomStart) > 
DragThreshold;}
 
    wxCursor *mArrowCursor;
    wxCursor *mPencilCursor;


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to