From d092fe0e4be483ce754b06e0bdf50025685aa82c Mon Sep 17 00:00:00 2001 From: James Crook Date: Sun, 17 Jul 2016 09:38:23 +0100 Subject: [PATCH] Review and fix CaptureMouse (per Bug 1204 commit comment) This is using the same idiom of only capturing if not capturing already. These cases in AutoDuck, Resizing, Grabber and TQP might have been latent ASSERTs. This based on precedent rather than actual elicited buggy behaviour. --- src/effects/AutoDuck.cpp | 3 ++- src/toolbars/ToolBar.cpp | 3 ++- src/toolbars/ToolManager.cpp | 3 ++- src/widgets/Ruler.cpp | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/effects/AutoDuck.cpp b/src/effects/AutoDuck.cpp index 601d48b59..efe9e9f82 100644 --- a/src/effects/AutoDuck.cpp +++ b/src/effects/AutoDuck.cpp @@ -862,7 +862,8 @@ void EffectAutoDuckPanel::OnLeftDown(wxMouseEvent & evt) for (int i = 0; i < AUTO_DUCK_PANEL_NUM_CONTROL_POINTS; i++) mMoveStartControlPoints[i] = mControlPoints[i]; - CaptureMouse(); + if( !HasCapture() ) + CaptureMouse(); } } diff --git a/src/toolbars/ToolBar.cpp b/src/toolbars/ToolBar.cpp index 4fcf771bb..03e79d24c 100644 --- a/src/toolbars/ToolBar.cpp +++ b/src/toolbars/ToolBar.cpp @@ -168,7 +168,8 @@ void ToolBarResizer::OnLeftDown( wxMouseEvent & event ) mOrigSize = mBar->GetSize(); // We want all of the mouse events - CaptureMouse(); + if( !HasCapture() ) + CaptureMouse(); } void ToolBarResizer::OnLeftUp( wxMouseEvent & event ) diff --git a/src/toolbars/ToolManager.cpp b/src/toolbars/ToolManager.cpp index 780e820b5..080b8d3e4 100644 --- a/src/toolbars/ToolManager.cpp +++ b/src/toolbars/ToolManager.cpp @@ -1358,7 +1358,8 @@ void ToolManager::OnGrabber( GrabberEvent & event ) } // We want all mouse events from this point on - mParent->CaptureMouse(); + if( !mParent->HasCapture() ) + mParent->CaptureMouse(); // Start monitoring shift key changes mLastState = wxGetKeyState( WXK_SHIFT ); diff --git a/src/widgets/Ruler.cpp b/src/widgets/Ruler.cpp index ac3f08932..166ca0eff 100644 --- a/src/widgets/Ruler.cpp +++ b/src/widgets/Ruler.cpp @@ -2526,7 +2526,8 @@ void AdornedRulerPanel::HandleQPClick(wxMouseEvent &evt, wxCoord mousePosX) // Check if we are dragging BEFORE CaptureMouse. if (mMouseEventState != mesNone) SetCursor(mCursorSizeWE); - CaptureMouse(); + if ( !HasCapture() ) + CaptureMouse(); } void AdornedRulerPanel::HandleQPDrag(wxMouseEvent &event, wxCoord mousePosX)