Fix event order bugs in Sim Model Editor dialog.
onParamGridChanged was firing before CommitPendingChanges which meant the edited value didn't get saved if the editor was still open when OK was clicked.
This commit is contained in:
parent
321de57d7c
commit
8324c0b0cc
|
@ -1199,9 +1199,14 @@ void DIALOG_SIM_MODEL<T_symbol, T_field>::onTypeChoice( wxCommandEvent& aEvent )
|
|||
|
||||
|
||||
template <typename T_symbol, typename T_field>
|
||||
void DIALOG_SIM_MODEL<T_symbol, T_field>::onParamGridChanged( wxPropertyGridEvent& aEvent )
|
||||
void DIALOG_SIM_MODEL<T_symbol, T_field>::onPageChanging( wxBookCtrlEvent& event )
|
||||
{
|
||||
updateWidgets();
|
||||
// This should have been done in wxPGTextCtrlEditor::OnTextCtrlEvent(), but something must
|
||||
// be clearing it before we get here, resulting in CommitChangesFromEditor() doing nothing
|
||||
m_paramGrid->GetGrid()->EditorsValueWasModified();
|
||||
m_paramGrid->GetGrid()->CommitChangesFromEditor();
|
||||
|
||||
updateModelCodeTab();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ private:
|
|||
void onIbisModelComboboxTextEnter( wxCommandEvent& event ) override;
|
||||
void onDeviceTypeChoice( wxCommandEvent& aEvent ) override;
|
||||
void onTypeChoice( wxCommandEvent& aEvent ) override;
|
||||
void onParamGridChanged( wxPropertyGridEvent& aEvent ) override;
|
||||
void onPageChanging( wxNotebookEvent& event ) override;
|
||||
void onPinAssignmentsGridCellChange( wxGridEvent& aEvent ) override;
|
||||
void onPinAssignmentsGridSize( wxSizeEvent& aEvent ) override;
|
||||
void onSaveInValueCheckbox( wxCommandEvent& aEvent ) override;
|
||||
|
|
|
@ -312,7 +312,7 @@ DIALOG_SIM_MODEL_BASE::DIALOG_SIM_MODEL_BASE( wxWindow* parent, wxWindowID id, c
|
|||
m_deviceTypeChoice->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_SIM_MODEL_BASE::onDeviceTypeChoiceUpdate ), NULL, this );
|
||||
m_staticTextSpiceType->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_SIM_MODEL_BASE::onTypeLabelUpdate ), NULL, this );
|
||||
m_typeChoice->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_SIM_MODEL_BASE::onTypeChoice ), NULL, this );
|
||||
m_paramGridMgr->Connect( wxEVT_PG_CHANGED, wxPropertyGridEventHandler( DIALOG_SIM_MODEL_BASE::onParamGridChanged ), NULL, this );
|
||||
m_modelNotebook->Connect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, wxNotebookEventHandler( DIALOG_SIM_MODEL_BASE::onPageChanging ), NULL, this );
|
||||
m_paramGridMgr->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_SIM_MODEL_BASE::onSizeParamGrid ), NULL, this );
|
||||
m_saveInValueCheckbox->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SIM_MODEL_BASE::onSaveInValueCheckbox ), NULL, this );
|
||||
m_pinAssignmentsGrid->Connect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_SIM_MODEL_BASE::onPinAssignmentsGridCellChange ), NULL, this );
|
||||
|
@ -349,7 +349,7 @@ DIALOG_SIM_MODEL_BASE::~DIALOG_SIM_MODEL_BASE()
|
|||
m_deviceTypeChoice->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_SIM_MODEL_BASE::onDeviceTypeChoiceUpdate ), NULL, this );
|
||||
m_staticTextSpiceType->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_SIM_MODEL_BASE::onTypeLabelUpdate ), NULL, this );
|
||||
m_typeChoice->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_SIM_MODEL_BASE::onTypeChoice ), NULL, this );
|
||||
m_paramGridMgr->Disconnect( wxEVT_PG_CHANGED, wxPropertyGridEventHandler( DIALOG_SIM_MODEL_BASE::onParamGridChanged ), NULL, this );
|
||||
m_modelNotebook->Disconnect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, wxNotebookEventHandler( DIALOG_SIM_MODEL_BASE::onPageChanging ), NULL, this );
|
||||
m_paramGridMgr->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_SIM_MODEL_BASE::onSizeParamGrid ), NULL, this );
|
||||
m_saveInValueCheckbox->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SIM_MODEL_BASE::onSaveInValueCheckbox ), NULL, this );
|
||||
m_pinAssignmentsGrid->Disconnect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_SIM_MODEL_BASE::onPinAssignmentsGridCellChange ), NULL, this );
|
||||
|
|
|
@ -1393,6 +1393,7 @@
|
|||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnNotebookPageChanging">onPageChanging</event>
|
||||
<object class="notebookpage" expanded="1">
|
||||
<property name="bitmap"></property>
|
||||
<property name="label">Parameters</property>
|
||||
|
@ -1511,7 +1512,6 @@
|
|||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnPropertyGridChanged">onParamGridChanged</event>
|
||||
<event name="OnSize">onSizeParamGrid</event>
|
||||
<object class="propGridPage" expanded="0">
|
||||
<property name="bitmap"></property>
|
||||
|
|
|
@ -108,7 +108,7 @@ class DIALOG_SIM_MODEL_BASE : public DIALOG_SHIM
|
|||
virtual void onDeviceTypeChoiceUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void onTypeLabelUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void onTypeChoice( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void onParamGridChanged( wxPropertyGridEvent& event ) { event.Skip(); }
|
||||
virtual void onPageChanging( wxNotebookEvent& event ) { event.Skip(); }
|
||||
virtual void onSizeParamGrid( wxSizeEvent& event ) { event.Skip(); }
|
||||
virtual void onSaveInValueCheckbox( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void onPinAssignmentsGridCellChange( wxGridEvent& event ) { event.Skip(); }
|
||||
|
|
|
@ -170,9 +170,6 @@ bool SIM_STRING_PROPERTY::StringToValue( wxVariant& aVariant, const wxString& aT
|
|||
else
|
||||
evaledText = aText;
|
||||
|
||||
wxString baseParamValue = m_model.GetBaseParam( m_paramIndex ).value->ToString();
|
||||
aVariant = evaledText;
|
||||
|
||||
m_model.SetParamValue( m_paramIndex, std::string( evaledText.ToUTF8() ) );
|
||||
aVariant = GetParam().value->ToString();
|
||||
|
||||
|
|
Loading…
Reference in New Issue