Pcbnew: fix incorrect UI behavior of "Zoom to selection" tool in GAL canvas.

This commit is contained in:
jean-pierre charras 2017-06-13 09:23:56 +02:00
parent a1a9440091
commit 1ada4863fc
3 changed files with 11 additions and 2 deletions

View File

@ -389,6 +389,9 @@ public:
virtual void ReCreateMenuBar() override; virtual void ReCreateMenuBar() override;
virtual void ReCreateAuxiliaryToolbar(); virtual void ReCreateAuxiliaryToolbar();
// Toolbar accessors
wxAuiToolBar* GetMainToolBar() const { return m_mainToolBar; }
/** /**
* Function SetToolID * Function SetToolID
* sets the tool command ID to \a aId and sets the cursor to \a aCursor. The * sets the tool command ID to \a aId and sets the cursor to \a aCursor. The

View File

@ -211,7 +211,6 @@ void PCB_EDIT_FRAME::OnUpdateSave( wxUpdateUIEvent& aEvent )
void PCB_EDIT_FRAME::OnUpdateVerticalToolbar( wxUpdateUIEvent& aEvent ) void PCB_EDIT_FRAME::OnUpdateVerticalToolbar( wxUpdateUIEvent& aEvent )
{ {
if( aEvent.GetEventObject() == m_drawToolBar )
aEvent.Check( GetToolId() == aEvent.GetId() ); aEvent.Check( GetToolId() == aEvent.GetId() );
} }

View File

@ -47,6 +47,12 @@ void ZOOM_TOOL::Reset( RESET_REASON aReason )
int ZOOM_TOOL::Main( const TOOL_EVENT& aEvent ) int ZOOM_TOOL::Main( const TOOL_EVENT& aEvent )
{ {
// This method is called both when the zoom tool is activated (on) or deactivated (off)
bool zoom_tool_is_on = m_frame->GetMainToolBar()->GetToolToggled( ID_ZOOM_SELECTION );
if( !zoom_tool_is_on ) // This is a tool deselection: do nothing
return 0;
m_frame->SetToolID( ID_ZOOM_SELECTION, wxCURSOR_MAGNIFIER, _( "Zoom to selection" ) ); m_frame->SetToolID( ID_ZOOM_SELECTION, wxCURSOR_MAGNIFIER, _( "Zoom to selection" ) );
while( auto evt = Wait() ) while( auto evt = Wait() )
@ -64,6 +70,7 @@ int ZOOM_TOOL::Main( const TOOL_EVENT& aEvent )
m_toolMgr->PassEvent(); m_toolMgr->PassEvent();
} }
// Exit zoom tool
m_frame->SetNoToolSelected(); m_frame->SetNoToolSelected();
return 0; return 0;
} }