From 71417fbe3bb56121a99a070c43f84a404de3c1af Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Wed, 7 May 2025 23:28:19 -0400 Subject: [PATCH] API: Use action wrapper for setting grid origin Fixes https://gitlab.com/kicad/code/kicad-python/-/issues/47 --- pcbnew/api/api_handler_pcb.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/pcbnew/api/api_handler_pcb.cpp b/pcbnew/api/api_handler_pcb.cpp index e469596ab1..332d777195 100644 --- a/pcbnew/api/api_handler_pcb.cpp +++ b/pcbnew/api/api_handler_pcb.cpp @@ -934,15 +934,24 @@ HANDLER_RESULT API_HANDLER_PCB::handleSetBoardOrigin( return tl::unexpected( documentValidation.error() ); } - BOARD_DESIGN_SETTINGS& settings = frame()->GetBoard()->GetDesignSettings(); VECTOR2I origin = UnpackVector2( aCtx.Request.origin() ); switch( aCtx.Request.type() ) { case BOT_GRID: - settings.SetGridOrigin( origin ); - frame()->Refresh(); + { + PCB_EDIT_FRAME* f = frame(); + + frame()->CallAfter( [f, origin]() + { + // gridSetOrigin takes ownership and frees this + VECTOR2D* dorigin = new VECTOR2D( origin ); + TOOL_MANAGER* mgr = f->GetToolManager(); + mgr->RunAction( PCB_ACTIONS::gridSetOrigin, dorigin ); + f->Refresh(); + } ); break; + } case BOT_DRILL: {