Fix Search pane not remembering docking sizes and positions

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14120


(cherry picked from commit d94e9b31b1)
This commit is contained in:
CraftedNightmare 2023-05-18 22:03:33 +02:00 committed by Mark Roszko
parent 561441b48a
commit 7027d02f94
4 changed files with 41 additions and 3 deletions

View File

@ -341,12 +341,24 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
settings->m_AuiPanels.properties_panel_width, -1 ); settings->m_AuiPanels.properties_panel_width, -1 );
} }
if( settings->m_AuiPanels.search_panel_height > 0 ) if( settings->m_AuiPanels.search_panel_height > 0
&& ( settings->m_AuiPanels.search_panel_dock_direction == wxAUI_DOCK_TOP
|| settings->m_AuiPanels.search_panel_dock_direction == wxAUI_DOCK_BOTTOM ) )
{ {
wxAuiPaneInfo& searchPane = m_auimgr.GetPane( SearchPaneName() ); wxAuiPaneInfo& searchPane = m_auimgr.GetPane( SearchPaneName() );
searchPane.Direction( settings->m_AuiPanels.search_panel_dock_direction );
SetAuiPaneSize( m_auimgr, searchPane, -1, settings->m_AuiPanels.search_panel_height ); SetAuiPaneSize( m_auimgr, searchPane, -1, settings->m_AuiPanels.search_panel_height );
} }
else if( settings->m_AuiPanels.search_panel_width > 0
&& ( settings->m_AuiPanels.search_panel_dock_direction == wxAUI_DOCK_LEFT
|| settings->m_AuiPanels.search_panel_dock_direction == wxAUI_DOCK_RIGHT ) )
{
wxAuiPaneInfo& searchPane = m_auimgr.GetPane( SearchPaneName() );
searchPane.Direction( settings->m_AuiPanels.search_panel_dock_direction );
SetAuiPaneSize( m_auimgr, searchPane, settings->m_AuiPanels.search_panel_width, -1 );
}
m_appearancePanel->SetTabIndex( settings->m_AuiPanels.appearance_panel_tab ); m_appearancePanel->SetTabIndex( settings->m_AuiPanels.appearance_panel_tab );
} }
@ -1250,9 +1262,12 @@ void PCB_EDIT_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
} }
// ensure m_show_search is up to date (the pane can be closed) // ensure m_show_search is up to date (the pane can be closed)
m_show_search = m_auimgr.GetPane( SearchPaneName() ).IsShown(); wxAuiPaneInfo& searchPaneInfo = m_auimgr.GetPane( SearchPaneName() );
m_show_search = searchPaneInfo.IsShown();
cfg->m_AuiPanels.show_search = m_show_search; cfg->m_AuiPanels.show_search = m_show_search;
cfg->m_AuiPanels.search_panel_height = m_searchPane->GetSize().y; cfg->m_AuiPanels.search_panel_height = m_searchPane->GetSize().y;
cfg->m_AuiPanels.search_panel_width = m_searchPane->GetSize().x;
cfg->m_AuiPanels.search_panel_dock_direction = searchPaneInfo.dock_direction;
} }
} }

View File

@ -103,6 +103,12 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS()
m_params.emplace_back( new PARAM<int>( "aui.search_panel_height", m_params.emplace_back( new PARAM<int>( "aui.search_panel_height",
&m_AuiPanels.search_panel_height, -1 ) ); &m_AuiPanels.search_panel_height, -1 ) );
m_params.emplace_back( new PARAM<int>( "aui.search_panel_width",
&m_AuiPanels.search_panel_width, -1 ) );
m_params.emplace_back( new PARAM<int>( "aui.search_panel_dock_direction",
&m_AuiPanels.search_panel_dock_direction, -1 ) );
m_params.emplace_back( new PARAM<int>( "aui.appearance_panel_tab", m_params.emplace_back( new PARAM<int>( "aui.appearance_panel_tab",
&m_AuiPanels.appearance_panel_tab, 0, 0, 2 ) ); &m_AuiPanels.appearance_panel_tab, 0, 0, 2 ) );

View File

@ -139,6 +139,8 @@ public:
int properties_panel_width; int properties_panel_width;
float properties_splitter_proportion; float properties_splitter_proportion;
int search_panel_height; int search_panel_height;
int search_panel_width;
int search_panel_dock_direction;
bool show_layer_manager; bool show_layer_manager;
bool show_properties; bool show_properties;
bool show_search; bool show_search;

View File

@ -835,12 +835,27 @@ void PCB_EDIT_FRAME::ToggleSearch()
if( m_show_search ) if( m_show_search )
{ {
SetAuiPaneSize( m_auimgr, searchPaneInfo, -1, settings->m_AuiPanels.search_panel_height ); searchPaneInfo.Direction( settings->m_AuiPanels.search_panel_dock_direction );
if( settings->m_AuiPanels.search_panel_dock_direction == wxAUI_DOCK_TOP
|| settings->m_AuiPanels.search_panel_dock_direction == wxAUI_DOCK_BOTTOM )
{
SetAuiPaneSize( m_auimgr, searchPaneInfo,
-1, settings->m_AuiPanels.search_panel_height );
}
else if( settings->m_AuiPanels.search_panel_dock_direction == wxAUI_DOCK_LEFT
|| settings->m_AuiPanels.search_panel_dock_direction == wxAUI_DOCK_RIGHT )
{
SetAuiPaneSize( m_auimgr, searchPaneInfo,
settings->m_AuiPanels.search_panel_width, -1 );
}
m_searchPane->FocusSearch(); m_searchPane->FocusSearch();
} }
else else
{ {
settings->m_AuiPanels.search_panel_height = m_searchPane->GetSize().y; settings->m_AuiPanels.search_panel_height = m_searchPane->GetSize().y;
settings->m_AuiPanels.search_panel_width = m_searchPane->GetSize().x;
settings->m_AuiPanels.search_panel_dock_direction = searchPaneInfo.dock_direction;
m_auimgr.Update(); m_auimgr.Update();
} }
} }