diff --git a/common/dialogs/panel_setup_netclasses.cpp b/common/dialogs/panel_setup_netclasses.cpp
index 02c9a50b6c..9f973c13fa 100644
--- a/common/dialogs/panel_setup_netclasses.cpp
+++ b/common/dialogs/panel_setup_netclasses.cpp
@@ -174,7 +174,9 @@ PANEL_SETUP_NETCLASSES::PANEL_SETUP_NETCLASSES( PAGED_DIALOG* aParent, NETCLASSE
m_removeButton->SetBitmap( KiBitmap( trash_xpm ) );
// wxFormBuilder doesn't include this event...
- m_netclassGrid->Connect( wxEVT_GRID_CELL_CHANGING, wxGridEventHandler( PANEL_SETUP_NETCLASSES::OnNetclassGridCellChanging ), NULL, this );
+ m_netclassGrid->Connect( wxEVT_GRID_CELL_CHANGING,
+ wxGridEventHandler( PANEL_SETUP_NETCLASSES::OnNetclassGridCellChanging ),
+ NULL, this );
m_netclassGrid->EndBatch();
m_membershipGrid->EndBatch();
@@ -190,7 +192,9 @@ PANEL_SETUP_NETCLASSES::~PANEL_SETUP_NETCLASSES()
m_netclassGrid->PopEventHandler( true );
m_membershipGrid->PopEventHandler( true );
- m_netclassGrid->Disconnect( wxEVT_GRID_CELL_CHANGING, wxGridEventHandler( PANEL_SETUP_NETCLASSES::OnNetclassGridCellChanging ), NULL, this );
+ m_netclassGrid->Disconnect( wxEVT_GRID_CELL_CHANGING,
+ wxGridEventHandler( PANEL_SETUP_NETCLASSES::OnNetclassGridCellChanging ),
+ NULL, this );
}
@@ -528,6 +532,24 @@ void PANEL_SETUP_NETCLASSES::AdjustMembershipGridColumns( int aWidth )
}
+void PANEL_SETUP_NETCLASSES::onmembershipPanelSize( wxSizeEvent& event )
+{
+ // When a class name choice widget is selected (activated), in
+ // wxGrid m_membershipGrid, resizing its wxGrid parent is not taken in account
+ // by the widget until it is deselected and stay in the old position.
+ // So we deselect it if this is the case
+ // Note also this is made here, not in OnSizeMembershipGrid because on Linux
+ // there are a lot of wxSizeEvent send to m_membershipGrid when opening a choice widget
+ int c_row = m_membershipGrid->GetGridCursorRow();
+ int c_col = m_membershipGrid->GetGridCursorCol();
+
+ if( c_row >= 0 && c_col == 1 ) // this means the class name choice widget is selected (opened)
+ m_membershipGrid->SetGridCursor( c_row, 0 ); // Close it
+
+ event.Skip();
+}
+
+
void PANEL_SETUP_NETCLASSES::OnSizeMembershipGrid( wxSizeEvent& event )
{
AdjustMembershipGridColumns( event.GetSize().GetX() );
diff --git a/common/dialogs/panel_setup_netclasses.h b/common/dialogs/panel_setup_netclasses.h
index 5cf4468377..17aebc987c 100644
--- a/common/dialogs/panel_setup_netclasses.h
+++ b/common/dialogs/panel_setup_netclasses.h
@@ -47,7 +47,8 @@ private:
void OnAddNetclassClick( wxCommandEvent& event ) override;
void OnRemoveNetclassClick( wxCommandEvent& event ) override;
void OnSizeNetclassGrid( wxSizeEvent& event ) override;
- void OnSizeMembershipGrid( wxSizeEvent& event ) override;
+ void OnSizeMembershipGrid( wxSizeEvent& event ) override;
+ void onmembershipPanelSize( wxSizeEvent& event ) override;
void OnUpdateUI( wxUpdateUIEvent &event ) override;
void OnNetclassGridCellChanging( wxGridEvent& event );
void OnShowAll( wxCommandEvent& event ) override { doApplyFilters( true ); }
diff --git a/common/dialogs/panel_setup_netclasses_base.cpp b/common/dialogs/panel_setup_netclasses_base.cpp
index 6d38d64709..1b3960abb5 100644
--- a/common/dialogs/panel_setup_netclasses_base.cpp
+++ b/common/dialogs/panel_setup_netclasses_base.cpp
@@ -241,6 +241,7 @@ PANEL_SETUP_NETCLASSES_BASE::PANEL_SETUP_NETCLASSES_BASE( wxWindow* parent, wxWi
m_netclassGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnSizeNetclassGrid ), NULL, this );
m_addButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnAddNetclassClick ), NULL, this );
m_removeButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnRemoveNetclassClick ), NULL, this );
+ m_membershipPane->Connect( wxEVT_SIZE, wxSizeEventHandler( PANEL_SETUP_NETCLASSES_BASE::onmembershipPanelSize ), NULL, this );
m_showAllButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnShowAll ), NULL, this );
m_filterNetsButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnApplyFilters ), NULL, this );
m_assignAllButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnAssignAll ), NULL, this );
@@ -255,6 +256,7 @@ PANEL_SETUP_NETCLASSES_BASE::~PANEL_SETUP_NETCLASSES_BASE()
m_netclassGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnSizeNetclassGrid ), NULL, this );
m_addButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnAddNetclassClick ), NULL, this );
m_removeButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnRemoveNetclassClick ), NULL, this );
+ m_membershipPane->Disconnect( wxEVT_SIZE, wxSizeEventHandler( PANEL_SETUP_NETCLASSES_BASE::onmembershipPanelSize ), NULL, this );
m_showAllButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnShowAll ), NULL, this );
m_filterNetsButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnApplyFilters ), NULL, this );
m_assignAllButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_SETUP_NETCLASSES_BASE::OnAssignAll ), NULL, this );
diff --git a/common/dialogs/panel_setup_netclasses_base.fbp b/common/dialogs/panel_setup_netclasses_base.fbp
index f072b3a029..26107372ac 100644
--- a/common/dialogs/panel_setup_netclasses_base.fbp
+++ b/common/dialogs/panel_setup_netclasses_base.fbp
@@ -441,6 +441,7 @@
wxTAB_TRAVERSAL
+ onmembershipPanelSize