1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-16 16:10:06 +02:00

Bug 2386 - Win/Linux: Toolbar grabber gets stuck pushed

This commit is contained in:
Leland Lucius 2021-02-15 09:59:42 -06:00
parent 3ecc5717ad
commit 182878caae
3 changed files with 23 additions and 1 deletions

View File

@ -1527,7 +1527,12 @@ void ToolManager::HandleEscapeKey()
void ToolManager::DoneDragging() void ToolManager::DoneDragging()
{ {
// Done dragging // Done dragging - ensure grabber button isn't pushed
if( mDragBar )
{
mDragBar->SetDocked( NULL, false );
}
// Release capture // Release capture
auto &window = GetProjectFrame( *mParent ); auto &window = GetProjectFrame( *mParent );
if( window.HasCapture() ) if( window.HasCapture() )

View File

@ -44,6 +44,7 @@ BEGIN_EVENT_TABLE(Grabber, wxWindow)
EVT_ENTER_WINDOW(Grabber::OnEnter) EVT_ENTER_WINDOW(Grabber::OnEnter)
EVT_LEAVE_WINDOW(Grabber::OnLeave) EVT_LEAVE_WINDOW(Grabber::OnLeave)
EVT_LEFT_DOWN(Grabber::OnLeftDown) EVT_LEFT_DOWN(Grabber::OnLeftDown)
EVT_LEFT_UP(Grabber::OnLeftUp)
EVT_ERASE_BACKGROUND( Grabber::OnErase ) EVT_ERASE_BACKGROUND( Grabber::OnErase )
EVT_PAINT(Grabber::OnPaint) EVT_PAINT(Grabber::OnPaint)
EVT_KEY_DOWN(Grabber::OnKeyDown) EVT_KEY_DOWN(Grabber::OnKeyDown)
@ -188,6 +189,8 @@ void Grabber::PushButton(bool state )
{ {
if( mAsSpacer ) if( mAsSpacer )
return; return;
if (!state)
mPressed = state;
wxRect r = GetRect(); wxRect r = GetRect();
mOver = r.Contains(ScreenToClient(wxGetMousePosition())); mOver = r.Contains(ScreenToClient(wxGetMousePosition()));
@ -210,6 +213,19 @@ void Grabber::OnLeftDown(wxMouseEvent & event)
event.Skip(); event.Skip();
} }
//
// Handle left button up events
//
void Grabber::OnLeftUp(wxMouseEvent & event)
{
// Normally, "left up" events are handled by the ToolManager::OnMouse() method
// but, if the user double clicks a grabber, the "left up" event will come here
// instead, so just "unpush" the button.
PushButton(false);
event.Skip();
}
// //
// Handle mouse enter events // Handle mouse enter events
// //

View File

@ -124,6 +124,7 @@ class Grabber final : public wxWindow
protected: protected:
void OnLeftDown(wxMouseEvent & event); void OnLeftDown(wxMouseEvent & event);
void OnLeftUp(wxMouseEvent & event);
void OnEnter(wxMouseEvent & event); void OnEnter(wxMouseEvent & event);
void OnLeave(wxMouseEvent & event); void OnLeave(wxMouseEvent & event);
void OnErase(wxEraseEvent & event); void OnErase(wxEraseEvent & event);