diff --git a/gerbview/tools/gerbview_inspection_tool.cpp b/gerbview/tools/gerbview_inspection_tool.cpp index 02ae4b8ca5..577f24d9e9 100644 --- a/gerbview/tools/gerbview_inspection_tool.cpp +++ b/gerbview/tools/gerbview_inspection_tool.cpp @@ -246,7 +246,6 @@ int GERBVIEW_INSPECTION_TOOL::MeasureTool( const TOOL_EVENT& aEvent ) break; } } - else if( evt->IsActivate() ) { if( originSet ) @@ -263,7 +262,6 @@ int GERBVIEW_INSPECTION_TOOL::MeasureTool( const TOOL_EVENT& aEvent ) break; } } - // click or drag starts else if( !originSet && ( evt->IsDrag( BUT_LEFT ) || evt->IsClick( BUT_LEFT ) ) ) { @@ -275,7 +273,6 @@ int GERBVIEW_INSPECTION_TOOL::MeasureTool( const TOOL_EVENT& aEvent ) originSet = true; } - // second click or mouse up after drag ends else if( originSet && ( evt->IsClick( BUT_LEFT ) || evt->IsMouseUp( BUT_LEFT ) ) ) { @@ -284,7 +281,6 @@ int GERBVIEW_INSPECTION_TOOL::MeasureTool( const TOOL_EVENT& aEvent ) controls.SetAutoPan( false ); controls.CaptureCursor( false ); } - // move or drag when origin set updates rules else if( originSet && ( evt->IsMotion() || evt->IsDrag( BUT_LEFT ) ) ) { @@ -294,9 +290,7 @@ int GERBVIEW_INSPECTION_TOOL::MeasureTool( const TOOL_EVENT& aEvent ) view.SetVisible( &ruler, true ); view.Update( &ruler, KIGFX::GEOMETRY ); } - - else if( evt->IsAction( &ACTIONS::toggleUnits ) - || evt->IsAction( &ACTIONS::updateUnits ) ) + else if( evt->IsAction( &ACTIONS::updateUnits ) ) { if( m_frame->GetUserUnits() != units ) { @@ -304,15 +298,16 @@ int GERBVIEW_INSPECTION_TOOL::MeasureTool( const TOOL_EVENT& aEvent ) ruler.SwitchUnits( units ); view.Update( &ruler, KIGFX::GEOMETRY ); } + evt->SetPassEvent(); } - else if( evt->IsClick( BUT_RIGHT ) ) { m_menu.ShowContextMenu( m_frame->GetCurrentSelection() ); } - else + { evt->SetPassEvent(); + } } view.SetVisible( &ruler, false ); diff --git a/include/preview_items/arc_assistant.h b/include/preview_items/arc_assistant.h index aa2bf4544b..7e3b1b3adb 100644 --- a/include/preview_items/arc_assistant.h +++ b/include/preview_items/arc_assistant.h @@ -65,6 +65,8 @@ namespace PREVIEW return "ARC_ASSISTANT"; } + void SetUnits( EDA_UNITS aUnits ) { m_units = aUnits; } + private: const ARC_GEOM_MANAGER& m_constructMan; EDA_UNITS m_units; diff --git a/include/preview_items/two_point_assistant.h b/include/preview_items/two_point_assistant.h index bdabb4e6f4..b30d54ddd9 100644 --- a/include/preview_items/two_point_assistant.h +++ b/include/preview_items/two_point_assistant.h @@ -82,6 +82,8 @@ public: return "TWO_POINT_ASSISTANT"; } + void SetUnits( EDA_UNITS aUnits ) { m_units = aUnits; } + private: const TWO_POINT_GEOMETRY_MANAGER& m_constructMan; EDA_UNITS m_units; diff --git a/pcbnew/tools/drawing_tool.cpp b/pcbnew/tools/drawing_tool.cpp index 883fef64b6..85fbd5ce83 100644 --- a/pcbnew/tools/drawing_tool.cpp +++ b/pcbnew/tools/drawing_tool.cpp @@ -1168,7 +1168,8 @@ int DRAWING_TOOL::SetAnchor( const TOOL_EVENT& aEvent ) grid.SetSnap( !evt->Modifier( MD_SHIFT ) ); grid.SetUseGrid( m_frame->IsGridVisible() ); - VECTOR2I cursorPos = grid.BestSnapAnchor( m_controls->GetMousePosition(), LSET::AllLayersMask() ); + VECTOR2I cursorPos = grid.BestSnapAnchor( m_controls->GetMousePosition(), + LSET::AllLayersMask() ); m_controls->ForceCursorPosition( true, cursorPos ); if( evt->IsClick( BUT_LEFT ) ) @@ -1208,10 +1209,10 @@ int DRAWING_TOOL::SetAnchor( const TOOL_EVENT& aEvent ) /** - * Update an PCB_SHAPE from the current state of an Two POINT Geometry Manager + * Update an PCB_SHAPE from the current state of a TWO_POINT_GEOMETRY_MANAGER */ -static void updateSegmentFromConstructionMgr( - const KIGFX::PREVIEW::TWO_POINT_GEOMETRY_MANAGER& aMgr, PCB_SHAPE* aGraphic ) +static void updateSegmentFromGeometryMgr( const KIGFX::PREVIEW::TWO_POINT_GEOMETRY_MANAGER& aMgr, + PCB_SHAPE* aGraphic ) { auto vec = aMgr.GetOrigin(); @@ -1238,8 +1239,8 @@ bool DRAWING_TOOL::drawSegment( const std::string& aTool, int aShape, PCB_SHAPE* // drawing assistant overlay // TODO: workaround because PCB_SHAPE_TYPE_T is not visible from commons. KIGFX::PREVIEW::GEOM_SHAPE geomShape( static_cast( aShape ) ); - KIGFX::PREVIEW::TWO_POINT_ASSISTANT twoPointAsst( - twoPointManager, m_frame->GetUserUnits(), geomShape ); + KIGFX::PREVIEW::TWO_POINT_ASSISTANT twoPointAsst( twoPointManager, m_frame->GetUserUnits(), + geomShape ); // Add a VIEW_GROUP that serves as a preview for the new item PCBNEW_SELECTION preview; @@ -1383,7 +1384,7 @@ bool DRAWING_TOOL::drawSegment( const std::string& aTool, int aShape, PCB_SHAPE* m_controls->SetAutoPan( true ); m_controls->CaptureCursor( true ); - updateSegmentFromConstructionMgr( twoPointManager, graphic ); + updateSegmentFromGeometryMgr( twoPointManager, graphic ); started = true; } @@ -1440,7 +1441,7 @@ bool DRAWING_TOOL::drawSegment( const std::string& aTool, int aShape, PCB_SHAPE* twoPointManager.SetAngleSnap( false ); } - updateSegmentFromConstructionMgr( twoPointManager, graphic ); + updateSegmentFromGeometryMgr( twoPointManager, graphic ); m_view->Update( &preview ); m_view->Update( &twoPointAsst ); } @@ -1463,6 +1464,12 @@ bool DRAWING_TOOL::drawSegment( const std::string& aTool, int aShape, PCB_SHAPE* isLocalOriginSet = true; evt->SetPassEvent(); } + else if( evt->IsAction( &ACTIONS::updateUnits ) ) + { + twoPointAsst.SetUnits( frame()->GetUserUnits() ); + m_view->Update( &twoPointAsst ); + evt->SetPassEvent(); + } else { evt->SetPassEvent(); @@ -1666,6 +1673,12 @@ bool DRAWING_TOOL::drawArc( const std::string& aTool, PCB_SHAPE** aGraphic, bool { arcManager.ToggleClockwise(); } + else if( evt->IsAction( &ACTIONS::updateUnits ) ) + { + arcAsst.SetUnits( frame()->GetUserUnits() ); + m_view->Update( &arcAsst ); + evt->SetPassEvent(); + } else { evt->SetPassEvent(); @@ -1889,7 +1902,6 @@ int DRAWING_TOOL::DrawZone( const TOOL_EVENT& aEvent ) m_controls->SetAutoPan( false ); m_controls->CaptureCursor( false ); } - // adding a corner else if( polyGeomMgr.AddPoint( cursorPos ) ) { @@ -1943,6 +1955,14 @@ int DRAWING_TOOL::DrawZone( const TOOL_EVENT& aEvent ) frame()->SetMsgPanel( zoneTool.GetZone() ); } } + else if( evt->IsAction( &ACTIONS::updateUnits ) ) + { + // If we ever have an assistant here that reports dimensions, we'll want to + // update its units here.... + // zoneAsst.SetUnits( frame()->GetUserUnits() ); + // m_view->Update( &zoneAsst ); + evt->SetPassEvent(); + } else { evt->SetPassEvent(); diff --git a/pcbnew/tools/pcb_viewer_tools.cpp b/pcbnew/tools/pcb_viewer_tools.cpp index 8b2f0eff6d..7e47826f2f 100644 --- a/pcbnew/tools/pcb_viewer_tools.cpp +++ b/pcbnew/tools/pcb_viewer_tools.cpp @@ -256,7 +256,6 @@ int PCB_VIEWER_TOOLS::MeasureTool( const TOOL_EVENT& aEvent ) break; } } - else if( evt->IsActivate() ) { if( originSet ) @@ -273,7 +272,6 @@ int PCB_VIEWER_TOOLS::MeasureTool( const TOOL_EVENT& aEvent ) break; } } - // click or drag starts else if( !originSet && ( evt->IsDrag( BUT_LEFT ) || evt->IsClick( BUT_LEFT ) ) ) { @@ -285,7 +283,6 @@ int PCB_VIEWER_TOOLS::MeasureTool( const TOOL_EVENT& aEvent ) originSet = true; } - // second click or mouse up after drag ends else if( originSet && ( evt->IsClick( BUT_LEFT ) || evt->IsMouseUp( BUT_LEFT ) ) ) { @@ -294,7 +291,6 @@ int PCB_VIEWER_TOOLS::MeasureTool( const TOOL_EVENT& aEvent ) controls.SetAutoPan( false ); controls.CaptureCursor( false ); } - // move or drag when origin set updates rules else if( originSet && ( evt->IsMotion() || evt->IsDrag( BUT_LEFT ) ) ) { @@ -304,9 +300,7 @@ int PCB_VIEWER_TOOLS::MeasureTool( const TOOL_EVENT& aEvent ) view.SetVisible( &ruler, true ); view.Update( &ruler, KIGFX::GEOMETRY ); } - - else if( evt->IsAction( &ACTIONS::toggleUnits ) - || evt->IsAction( &ACTIONS::updateUnits ) ) + else if( evt->IsAction( &ACTIONS::updateUnits ) ) { if( frame()->GetUserUnits() != units ) { @@ -315,15 +309,16 @@ int PCB_VIEWER_TOOLS::MeasureTool( const TOOL_EVENT& aEvent ) view.Update( &ruler, KIGFX::GEOMETRY ); canvas()->Refresh(); } + evt->SetPassEvent(); } - else if( evt->IsClick( BUT_RIGHT ) ) { m_menu.ShowContextMenu(); } - else + { evt->SetPassEvent(); + } } view.SetVisible( &ruler, false );