diff --git a/pcbnew/dialogs/dialog_select_net_from_list.cpp b/pcbnew/dialogs/dialog_select_net_from_list.cpp
index a04c22977c..40cdcdfd3b 100644
--- a/pcbnew/dialogs/dialog_select_net_from_list.cpp
+++ b/pcbnew/dialogs/dialog_select_net_from_list.cpp
@@ -67,10 +67,15 @@ public:
private:
void onCellClick( wxGridEvent& event ) override;
void onFilterChange( wxCommandEvent& event ) override;
+ void onColumnResize( wxGridSizeEvent& event ) override;
+ void onSelectCell( wxGridEvent& event ) override;
+ void updateSize( wxSizeEvent& event ) override;
+ void setColumnSize();
void buildNetsList();
wxString m_selection;
+ int m_firstWidth;
bool m_wasSelected;
BOARD* m_brd;
PCB_EDIT_FRAME* m_frame;
@@ -98,12 +103,14 @@ DIALOG_SELECT_NET_FROM_LIST::DIALOG_SELECT_NET_FROM_LIST( PCB_EDIT_FRAME* aParen
// Choose selection mode
m_netsListGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
-
buildNetsList();
m_sdbSizerOK->SetDefault();
GetSizer()->SetSizeHints( this );
Center();
+
+ m_firstWidth = m_netsListGrid->GetColumnWidth( 0 );
+ setColumnSize();
}
@@ -194,6 +201,13 @@ void DIALOG_SELECT_NET_FROM_LIST::HighlightNet( bool aEnabled, const wxString& a
}
}
+void DIALOG_SELECT_NET_FROM_LIST::setColumnSize()
+{
+ auto size = m_netsListGrid->GetGridWindow()->GetSize();
+
+ m_netsListGrid->SetColumnWidth( 0, m_firstWidth );
+ m_netsListGrid->SetColumnWidth( 1, size.x - m_firstWidth );
+}
DIALOG_SELECT_NET_FROM_LIST::~DIALOG_SELECT_NET_FROM_LIST()
{
@@ -206,9 +220,38 @@ void DIALOG_SELECT_NET_FROM_LIST::onFilterChange( wxCommandEvent& event )
}
+void DIALOG_SELECT_NET_FROM_LIST::updateSize( wxSizeEvent& event )
+{
+ setColumnSize();
+ this->Refresh();
+ event.Skip();
+}
+
+
+void DIALOG_SELECT_NET_FROM_LIST::onColumnResize( wxGridSizeEvent& event )
+{
+ m_firstWidth = m_netsListGrid->GetColumnWidth( 0 );
+ setColumnSize();
+}
+
+
+void DIALOG_SELECT_NET_FROM_LIST::onSelectCell( wxGridEvent& event )
+{
+
+ int selected_row = event.GetRow();
+ m_selection = m_netsListGrid->GetCellValue( selected_row, COL_NETNAME );
+
+ // Select the full row when clicking on any cell off the row
+ m_netsListGrid->SelectRow( selected_row, false );
+
+ HighlightNet( true, m_selection );
+}
+
+
void DIALOG_SELECT_NET_FROM_LIST::onCellClick( wxGridEvent& event )
{
int selected_row = event.GetRow();
+
m_selection = m_netsListGrid->GetCellValue( selected_row, COL_NETNAME );
m_wasSelected = true;
diff --git a/pcbnew/dialogs/dialog_select_net_from_list_base.cpp b/pcbnew/dialogs/dialog_select_net_from_list_base.cpp
index 3359f6dc27..db946298ad 100644
--- a/pcbnew/dialogs/dialog_select_net_from_list_base.cpp
+++ b/pcbnew/dialogs/dialog_select_net_from_list_base.cpp
@@ -46,8 +46,8 @@ DIALOG_SELECT_NET_FROM_LIST_BASE::DIALOG_SELECT_NET_FROM_LIST_BASE( wxWindow* pa
m_netsListGrid->SetMargins( 0, 0 );
// Columns
- m_netsListGrid->SetColSize( 0, 325 );
- m_netsListGrid->SetColSize( 1, 100 );
+ m_netsListGrid->SetColSize( 0, 300 );
+ m_netsListGrid->SetColSize( 1, 130 );
m_netsListGrid->EnableDragColMove( false );
m_netsListGrid->EnableDragColSize( true );
m_netsListGrid->SetColLabelSize( 20 );
@@ -89,16 +89,22 @@ DIALOG_SELECT_NET_FROM_LIST_BASE::DIALOG_SELECT_NET_FROM_LIST_BASE( wxWindow* pa
this->Centre( wxBOTH );
// Connect Events
+ this->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::updateSize ) );
m_textCtrlFilter->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_cbShowZeroPad->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_netsListGrid->Connect( wxEVT_GRID_CELL_LEFT_CLICK, wxGridEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onCellClick ), NULL, this );
+ m_netsListGrid->Connect( wxEVT_GRID_COL_SIZE, wxGridSizeEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onColumnResize ), NULL, this );
+ m_netsListGrid->Connect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onSelectCell ), NULL, this );
}
DIALOG_SELECT_NET_FROM_LIST_BASE::~DIALOG_SELECT_NET_FROM_LIST_BASE()
{
// Disconnect Events
+ this->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::updateSize ) );
m_textCtrlFilter->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_cbShowZeroPad->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_netsListGrid->Disconnect( wxEVT_GRID_CELL_LEFT_CLICK, wxGridEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onCellClick ), NULL, this );
+ m_netsListGrid->Disconnect( wxEVT_GRID_COL_SIZE, wxGridSizeEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onColumnResize ), NULL, this );
+ m_netsListGrid->Disconnect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onSelectCell ), NULL, this );
}
diff --git a/pcbnew/dialogs/dialog_select_net_from_list_base.fbp b/pcbnew/dialogs/dialog_select_net_from_list_base.fbp
index aac7ea8572..73ec71578f 100644
--- a/pcbnew/dialogs/dialog_select_net_from_list_base.fbp
+++ b/pcbnew/dialogs/dialog_select_net_from_list_base.fbp
@@ -87,18 +87,18 @@
-
+ updateSize
-