diff --git a/pcbnew/dialogs/dialog_graphic_item_properties.cpp b/pcbnew/dialogs/dialog_graphic_item_properties.cpp index b93859b15d..931db18d48 100644 --- a/pcbnew/dialogs/dialog_graphic_item_properties.cpp +++ b/pcbnew/dialogs/dialog_graphic_item_properties.cpp @@ -66,10 +66,16 @@ private: void onLayerSelection( wxCommandEvent& event ) override; void startCtrlOnTextEnter( wxCommandEvent& event ) override; void endCtrlOnTextEnter( wxCommandEvent& event ) override; + void startOnTextEnter( wxCommandEvent& event ) override; + void startOnKillFocus( wxFocusEvent& event ) override; + void endOnTextEnter( wxCommandEvent& event ) override; + void endOnKillFocus( wxFocusEvent& event ) override; void segmentOnTextEnter( wxCommandEvent& event ) override; + void segmentOnKillFocus( wxFocusEvent& event ) override; void rectangleOnTextEnter( wxCommandEvent& event ) override; + void rectangleOnKillFocus( wxFocusEvent& event ) override; bool Validate() override; @@ -119,7 +125,7 @@ DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES( PCB_BASE_EDIT_FR m_bezierCtrl2X( aParent, m_BezierPointC2XLabel, m_BezierC2X_Ctrl, m_BezierPointC2XUnit ), m_bezierCtrl2Y( aParent, m_BezierPointC2YLabel, m_BezierC2Y_Ctrl, m_BezierPointC2YUnit ), m_flipStartEnd( false ) -{ +{ // Configure display origin transforms m_startX.SetCoordType( ORIGIN_TRANSFORMS::ABS_X_COORD ); m_startY.SetCoordType( ORIGIN_TRANSFORMS::ABS_Y_COORD ); @@ -236,7 +242,7 @@ void DIALOG_GRAPHIC_ITEM_PROPERTIES::onFilledCheckbox( wxCommandEvent& event ) } } -void DIALOG_GRAPHIC_ITEM_PROPERTIES::startCtrlOnTextEnter( wxCommandEvent& event ) +void DIALOG_GRAPHIC_ITEM_PROPERTIES::startOnTextEnter( wxCommandEvent& event ) { switch( m_item->GetShape() ) { @@ -253,7 +259,25 @@ void DIALOG_GRAPHIC_ITEM_PROPERTIES::startCtrlOnTextEnter( wxCommandEvent& event } } -void DIALOG_GRAPHIC_ITEM_PROPERTIES::endCtrlOnTextEnter( wxCommandEvent& event ) +void DIALOG_GRAPHIC_ITEM_PROPERTIES::startOnKillFocus( wxFocusEvent& event ) +{ + switch( m_item->GetShape() ) + { + case SHAPE_T::SEGMENT: + TransferDataFromWindow(); + TransferDataToWindow(); + break; + case SHAPE_T::RECT: + TransferDataFromWindow(); + TransferDataToWindow(); + break; + default: break; + } + + event.Skip(); +} + +void DIALOG_GRAPHIC_ITEM_PROPERTIES::endOnTextEnter( wxCommandEvent& event ) { switch( m_item->GetShape() ) { @@ -270,18 +294,50 @@ void DIALOG_GRAPHIC_ITEM_PROPERTIES::endCtrlOnTextEnter( wxCommandEvent& event ) } } +void DIALOG_GRAPHIC_ITEM_PROPERTIES::endOnKillFocus( wxFocusEvent& event ) +{ + switch( m_item->GetShape() ) + { + case SHAPE_T::SEGMENT: + TransferDataFromWindow(); + TransferDataToWindow(); + break; + case SHAPE_T::RECT: + TransferDataFromWindow(); + TransferDataToWindow(); + break; + default: break; + } + + event.Skip(); +} + void DIALOG_GRAPHIC_ITEM_PROPERTIES::segmentOnTextEnter( wxCommandEvent& event ) { TransferDataFromWindow(); TransferDataToWindow(); } +void DIALOG_GRAPHIC_ITEM_PROPERTIES::segmentOnKillFocus( wxFocusEvent& event ) +{ + TransferDataFromWindow(); + TransferDataToWindow(); + event.Skip(); +} + void DIALOG_GRAPHIC_ITEM_PROPERTIES::rectangleOnTextEnter( wxCommandEvent& event ) { TransferDataFromWindow(); TransferDataToWindow(); } +void DIALOG_GRAPHIC_ITEM_PROPERTIES::rectangleOnKillFocus( wxFocusEvent& event ) +{ + TransferDataFromWindow(); + TransferDataToWindow(); + event.Skip(); +} + bool DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow() { if( !m_item ) diff --git a/pcbnew/dialogs/dialog_graphic_item_properties_base.cpp b/pcbnew/dialogs/dialog_graphic_item_properties_base.cpp index 9b56c4cb92..aa977b98ac 100644 --- a/pcbnew/dialogs/dialog_graphic_item_properties_base.cpp +++ b/pcbnew/dialogs/dialog_graphic_item_properties_base.cpp @@ -274,13 +274,21 @@ DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE( wxWind // Connect Events this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::OnClose ) ); this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::OnInitDlg ) ); - m_startXCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startCtrlOnTextEnter ), NULL, this ); - m_startYCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startCtrlOnTextEnter ), NULL, this ); - m_endXCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endCtrlOnTextEnter ), NULL, this ); - m_endYCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endCtrlOnTextEnter ), NULL, this ); + m_startXCtrl->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startOnKillFocus ), NULL, this ); + m_startXCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startOnTextEnter ), NULL, this ); + m_startYCtrl->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startOnKillFocus ), NULL, this ); + m_startYCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startOnTextEnter ), NULL, this ); + m_endXCtrl->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endOnKillFocus ), NULL, this ); + m_endXCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endOnTextEnter ), NULL, this ); + m_endYCtrl->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endOnKillFocus ), NULL, this ); + m_endYCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endOnTextEnter ), NULL, this ); + m_segmentLengthCtrl->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::segmentOnKillFocus ), NULL, this ); m_segmentLengthCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::segmentOnTextEnter ), NULL, this ); + m_segmentAngleCtrl->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::segmentOnKillFocus ), NULL, this ); m_segmentAngleCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::segmentOnTextEnter ), NULL, this ); + m_rectangleHeightCtrl->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::rectangleOnKillFocus ), NULL, this ); m_rectangleHeightCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::rectangleOnTextEnter ), NULL, this ); + m_rectangleWidthCtrl->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::rectangleOnKillFocus ), NULL, this ); m_rectangleWidthCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::rectangleOnTextEnter ), NULL, this ); m_filledCtrl->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::onFilledCheckbox ), NULL, this ); m_LayerSelectionCtrl->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::onLayerSelection ), NULL, this ); @@ -291,13 +299,21 @@ DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::~DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE() // Disconnect Events this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::OnClose ) ); this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::OnInitDlg ) ); - m_startXCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startCtrlOnTextEnter ), NULL, this ); - m_startYCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startCtrlOnTextEnter ), NULL, this ); - m_endXCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endCtrlOnTextEnter ), NULL, this ); - m_endYCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endCtrlOnTextEnter ), NULL, this ); + m_startXCtrl->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startOnKillFocus ), NULL, this ); + m_startXCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startOnTextEnter ), NULL, this ); + m_startYCtrl->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startOnKillFocus ), NULL, this ); + m_startYCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::startOnTextEnter ), NULL, this ); + m_endXCtrl->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endOnKillFocus ), NULL, this ); + m_endXCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endOnTextEnter ), NULL, this ); + m_endYCtrl->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endOnKillFocus ), NULL, this ); + m_endYCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::endOnTextEnter ), NULL, this ); + m_segmentLengthCtrl->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::segmentOnKillFocus ), NULL, this ); m_segmentLengthCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::segmentOnTextEnter ), NULL, this ); + m_segmentAngleCtrl->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::segmentOnKillFocus ), NULL, this ); m_segmentAngleCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::segmentOnTextEnter ), NULL, this ); + m_rectangleHeightCtrl->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::rectangleOnKillFocus ), NULL, this ); m_rectangleHeightCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::rectangleOnTextEnter ), NULL, this ); + m_rectangleWidthCtrl->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::rectangleOnKillFocus ), NULL, this ); m_rectangleWidthCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::rectangleOnTextEnter ), NULL, this ); m_filledCtrl->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::onFilledCheckbox ), NULL, this ); m_LayerSelectionCtrl->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE::onLayerSelection ), NULL, this ); diff --git a/pcbnew/dialogs/dialog_graphic_item_properties_base.fbp b/pcbnew/dialogs/dialog_graphic_item_properties_base.fbp index 8bd4a54895..8e44df92e8 100644 --- a/pcbnew/dialogs/dialog_graphic_item_properties_base.fbp +++ b/pcbnew/dialogs/dialog_graphic_item_properties_base.fbp @@ -284,7 +284,8 @@ - startCtrlOnTextEnter + startOnKillFocus + startOnTextEnter @@ -483,7 +484,8 @@ - startCtrlOnTextEnter + startOnKillFocus + startOnTextEnter @@ -747,7 +749,8 @@ - endCtrlOnTextEnter + endOnKillFocus + endOnTextEnter @@ -946,7 +949,8 @@ - endCtrlOnTextEnter + endOnKillFocus + endOnTextEnter @@ -2556,6 +2560,7 @@ + segmentOnKillFocus segmentOnTextEnter @@ -2752,6 +2757,7 @@ + segmentOnKillFocus segmentOnTextEnter @@ -2948,6 +2954,7 @@ + rectangleOnKillFocus rectangleOnTextEnter @@ -3144,6 +3151,7 @@ + rectangleOnKillFocus rectangleOnTextEnter diff --git a/pcbnew/dialogs/dialog_graphic_item_properties_base.h b/pcbnew/dialogs/dialog_graphic_item_properties_base.h index 1a9aee9008..77ca0ed4b8 100644 --- a/pcbnew/dialogs/dialog_graphic_item_properties_base.h +++ b/pcbnew/dialogs/dialog_graphic_item_properties_base.h @@ -101,9 +101,13 @@ class DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE : public DIALOG_SHIM // Virtual event handlers, override them in your derived class virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); } - virtual void startCtrlOnTextEnter( wxCommandEvent& event ) { event.Skip(); } - virtual void endCtrlOnTextEnter( wxCommandEvent& event ) { event.Skip(); } + virtual void startOnKillFocus( wxFocusEvent& event ) { event.Skip(); } + virtual void startOnTextEnter( wxCommandEvent& event ) { event.Skip(); } + virtual void endOnKillFocus( wxFocusEvent& event ) { event.Skip(); } + virtual void endOnTextEnter( wxCommandEvent& event ) { event.Skip(); } + virtual void segmentOnKillFocus( wxFocusEvent& event ) { event.Skip(); } virtual void segmentOnTextEnter( wxCommandEvent& event ) { event.Skip(); } + virtual void rectangleOnKillFocus( wxFocusEvent& event ) { event.Skip(); } virtual void rectangleOnTextEnter( wxCommandEvent& event ) { event.Skip(); } virtual void onFilledCheckbox( wxCommandEvent& event ) { event.Skip(); } virtual void onLayerSelection( wxCommandEvent& event ) { event.Skip(); }