diff --git a/pcbnew/pcb_edit_frame.cpp b/pcbnew/pcb_edit_frame.cpp index 068fcdd6d8..8d1f9fba46 100644 --- a/pcbnew/pcb_edit_frame.cpp +++ b/pcbnew/pcb_edit_frame.cpp @@ -351,12 +351,24 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) : 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() ); + searchPane.Direction( settings->m_AuiPanels.search_panel_dock_direction ); 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 ); } @@ -1301,9 +1313,12 @@ void PCB_EDIT_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg ) } // 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.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; } } diff --git a/pcbnew/pcbnew_settings.cpp b/pcbnew/pcbnew_settings.cpp index 1901e87fd1..919e5b1dd6 100644 --- a/pcbnew/pcbnew_settings.cpp +++ b/pcbnew/pcbnew_settings.cpp @@ -103,6 +103,12 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS() m_params.emplace_back( new PARAM( "aui.search_panel_height", &m_AuiPanels.search_panel_height, -1 ) ); + m_params.emplace_back( new PARAM( "aui.search_panel_width", + &m_AuiPanels.search_panel_width, -1 ) ); + + m_params.emplace_back( new PARAM( "aui.search_panel_dock_direction", + &m_AuiPanels.search_panel_dock_direction, -1 ) ); + m_params.emplace_back( new PARAM( "aui.appearance_panel_tab", &m_AuiPanels.appearance_panel_tab, 0, 0, 2 ) ); diff --git a/pcbnew/pcbnew_settings.h b/pcbnew/pcbnew_settings.h index e579b54f18..61a913d451 100644 --- a/pcbnew/pcbnew_settings.h +++ b/pcbnew/pcbnew_settings.h @@ -140,6 +140,8 @@ public: int properties_panel_width; float properties_splitter_proportion; int search_panel_height; + int search_panel_width; + int search_panel_dock_direction; bool show_layer_manager; bool show_properties; bool show_search; diff --git a/pcbnew/toolbars_pcb_editor.cpp b/pcbnew/toolbars_pcb_editor.cpp index 78757faeaa..386c6c5f6e 100644 --- a/pcbnew/toolbars_pcb_editor.cpp +++ b/pcbnew/toolbars_pcb_editor.cpp @@ -809,12 +809,27 @@ void PCB_EDIT_FRAME::ToggleSearch() 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(); } else { 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(); } }