From 21ee64d8f02839e09d82a5898879584092a4a33d Mon Sep 17 00:00:00 2001 From: Jeff Young <jeff@rokeby.ie> Date: Fri, 3 Jan 2025 18:31:34 +0000 Subject: [PATCH] (Slightly) better de-bouncing of grid cell editing. --- eeschema/eeschema_jobs_handler.cpp | 2 +- kicad/dialogs/panel_jobs.cpp | 18 ++++++++++++++++-- kicad/dialogs/panel_jobs.h | 1 + pcbnew/pcbnew_jobs_handler.cpp | 2 +- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/eeschema/eeschema_jobs_handler.cpp b/eeschema/eeschema_jobs_handler.cpp index 4aec776c16..fc79489686 100644 --- a/eeschema/eeschema_jobs_handler.cpp +++ b/eeschema/eeschema_jobs_handler.cpp @@ -152,7 +152,7 @@ EESCHEMA_JOBS_HANDLER::EESCHEMA_JOBS_HANDLER( KIWAY* aKiway ) : JOB_SCH_ERC* ercJob = dynamic_cast<JOB_SCH_ERC*>( job ); DIALOG_ERC_JOB_CONFIG dlg( aParent, ercJob ); - return dlg.ShowModal() == wxID_SAVE; + return dlg.ShowModal() == wxID_OK; } ); } diff --git a/kicad/dialogs/panel_jobs.cpp b/kicad/dialogs/panel_jobs.cpp index 336ec8f9bf..dd6e15fe10 100644 --- a/kicad/dialogs/panel_jobs.cpp +++ b/kicad/dialogs/panel_jobs.cpp @@ -575,7 +575,22 @@ bool JOBS_GRID_TRICKS::handleDoubleClick( wxGridEvent& aEvent ) if( col == 1 && row >= 0 && row < (int) m_parent->GetJobsFile()->GetJobs().size() ) { - m_parent->OpenJobOptionsForListItem( row ); + m_doubleClickRow = row; + m_grid->CancelPendingChanges(); + + CallAfter( + [this]() + { + // Yes, again. CancelShowEditorOnMouseUp() doesn't appear to be 100% + // reliable. + m_grid->CancelPendingChanges(); + int row = m_doubleClickRow; + m_doubleClickRow = -1; + + if( row >= 0 && row < (int) m_parent->GetJobsFile()->GetJobs().size() ) + m_parent->OpenJobOptionsForListItem( row ); + } ); + return true; } @@ -594,7 +609,6 @@ PANEL_JOBS::PANEL_JOBS( wxAuiNotebook* aParent, KICAD_MANAGER_FRAME* aFrame, m_jobsGrid->SetDefaultRowSize( m_jobsGrid->GetDefaultRowSize() + 4 ); m_jobsGrid->OverrideMinSize( 0.6, 0.3 ); - m_jobsGrid->SetSelectionMode( wxGrid::wxGridSelectRows ); // 'm' for margins m_jobsGrid->SetColSize( 0, GetTextExtent( wxT( "99m" ) ).x ); diff --git a/kicad/dialogs/panel_jobs.h b/kicad/dialogs/panel_jobs.h index 26fad3604b..b7aa332fbd 100644 --- a/kicad/dialogs/panel_jobs.h +++ b/kicad/dialogs/panel_jobs.h @@ -52,6 +52,7 @@ protected: protected: PANEL_JOBS* m_parent; + int m_doubleClickRow; }; diff --git a/pcbnew/pcbnew_jobs_handler.cpp b/pcbnew/pcbnew_jobs_handler.cpp index 439a63dc91..fb35256791 100644 --- a/pcbnew/pcbnew_jobs_handler.cpp +++ b/pcbnew/pcbnew_jobs_handler.cpp @@ -235,7 +235,7 @@ PCBNEW_JOBS_HANDLER::PCBNEW_JOBS_HANDLER( KIWAY* aKiway ) : { DIALOG_DRC_JOB_CONFIG dlg( aParent, dynamic_cast<JOB_PCB_DRC*>( job ) ); - return dlg.ShowModal() == wxID_SAVE; + return dlg.ShowModal() == wxID_OK; } ); Register( "ipc2581", std::bind( &PCBNEW_JOBS_HANDLER::JobExportIpc2581, this, std::placeholders::_1 ),