From 36fd62ccdc880bda25827200309d7ee61df53ba0 Mon Sep 17 00:00:00 2001
From: Jeff Young <jeff@rokeby.ie>
Date: Sun, 14 Nov 2021 13:10:24 +0000
Subject: [PATCH] Another round of beautification changes for PCM.

Fixes https://gitlab.com/kicad/code/kicad/issues/9616
---
 common/settings/common_settings.cpp           |   3 +
 include/settings/common_settings.h            |   7 +
 kicad/pcm/dialogs/dialog_pcm_base.cpp         |   4 +-
 kicad/pcm/dialogs/dialog_pcm_base.fbp         |   4 +-
 kicad/pcm/dialogs/panel_package.cpp           |  28 ++
 kicad/pcm/dialogs/panel_package.h             |  18 +-
 kicad/pcm/dialogs/panel_packages_view.cpp     |  17 +-
 .../pcm/dialogs/panel_packages_view_base.cpp  |  23 +-
 .../pcm/dialogs/panel_packages_view_base.fbp  | 281 +++++-------------
 kicad/pcm/dialogs/panel_packages_view_base.h  |   6 +-
 10 files changed, 157 insertions(+), 234 deletions(-)

diff --git a/common/settings/common_settings.cpp b/common/settings/common_settings.cpp
index abce46d6a3..468587affa 100644
--- a/common/settings/common_settings.cpp
+++ b/common/settings/common_settings.cpp
@@ -321,6 +321,9 @@ COMMON_SETTINGS::COMMON_SETTINGS() :
     m_params.emplace_back( new PARAM<int>( "netclass_panel.sash_pos",
             &m_NetclassPanel.sash_pos, 160 ) );
 
+    m_params.emplace_back( new PARAM<int>( "package_manager.sash_pos",
+            &m_PackageManager.sash_pos, 380 ) );
+
     registerMigration( 0, 1, std::bind( &COMMON_SETTINGS::migrateSchema0to1, this ) );
     registerMigration( 1, 2, std::bind( &COMMON_SETTINGS::migrateSchema1to2, this ) );
 }
diff --git a/include/settings/common_settings.h b/include/settings/common_settings.h
index 709f700f53..491461df91 100644
--- a/include/settings/common_settings.h
+++ b/include/settings/common_settings.h
@@ -130,6 +130,11 @@ public:
         int sash_pos;
     };
 
+    struct PACKAGE_MANAGER
+    {
+        int sash_pos;
+    };
+
     COMMON_SETTINGS();
 
     virtual ~COMMON_SETTINGS() {}
@@ -163,6 +168,8 @@ public:
     DO_NOT_SHOW_AGAIN m_DoNotShowAgain;
 
     NETCLASS_PANEL m_NetclassPanel;
+
+    PACKAGE_MANAGER m_PackageManager;
 };
 
 #endif
diff --git a/kicad/pcm/dialogs/dialog_pcm_base.cpp b/kicad/pcm/dialogs/dialog_pcm_base.cpp
index 003e2d1108..15eabab0a9 100644
--- a/kicad/pcm/dialogs/dialog_pcm_base.cpp
+++ b/kicad/pcm/dialogs/dialog_pcm_base.cpp
@@ -44,7 +44,7 @@ DIALOG_PCM_BASE::DIALOG_PCM_BASE( wxWindow* parent, wxWindowID id, const wxStrin
 	m_contentNotebook->SetMinSize( wxSize( 900,400 ) );
 
 
-	bSizer4->Add( m_contentNotebook, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
+	bSizer4->Add( m_contentNotebook, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 3 );
 
 
 	m_panelRepository->SetSizer( bSizer4 );
@@ -149,7 +149,7 @@ DIALOG_PCM_BASE::DIALOG_PCM_BASE( wxWindow* parent, wxWindowID id, const wxStrin
 	m_BottomSizer->Add( m_sdbSizer1, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
 
 
-	m_MainSizer->Add( m_BottomSizer, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
+	m_MainSizer->Add( m_BottomSizer, 0, wxEXPAND|wxLEFT, 5 );
 
 
 	this->SetSizer( m_MainSizer );
diff --git a/kicad/pcm/dialogs/dialog_pcm_base.fbp b/kicad/pcm/dialogs/dialog_pcm_base.fbp
index e0f89fb129..de84304bf9 100644
--- a/kicad/pcm/dialogs/dialog_pcm_base.fbp
+++ b/kicad/pcm/dialogs/dialog_pcm_base.fbp
@@ -334,7 +334,7 @@
                                                 </object>
                                             </object>
                                             <object class="sizeritem" expanded="1">
-                                                <property name="border">5</property>
+                                                <property name="border">3</property>
                                                 <property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
                                                 <property name="proportion">1</property>
                                                 <object class="wxNotebook" expanded="1">
@@ -710,7 +710,7 @@
                 </object>
                 <object class="sizeritem" expanded="1">
                     <property name="border">5</property>
-                    <property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
+                    <property name="flag">wxEXPAND|wxLEFT</property>
                     <property name="proportion">0</property>
                     <object class="wxBoxSizer" expanded="1">
                         <property name="minimum_size"></property>
diff --git a/kicad/pcm/dialogs/panel_package.cpp b/kicad/pcm/dialogs/panel_package.cpp
index 470ba134fd..c8c13d636d 100644
--- a/kicad/pcm/dialogs/panel_package.cpp
+++ b/kicad/pcm/dialogs/panel_package.cpp
@@ -189,3 +189,31 @@ wxString PANEL_PACKAGE::GetPreferredVersion() const
 
     return ver_it->version;
 }
+
+
+RIGHT_BORDERED_PANEL::RIGHT_BORDERED_PANEL( wxWindow* parent, wxWindowID id, const wxPoint& pos,
+                                            const wxSize& size, long style, const wxString& name ) :
+        wxPanel( parent, id, pos, size, style, name )
+{
+    this->Connect( wxEVT_PAINT, wxPaintEventHandler( RIGHT_BORDERED_PANEL::OnPaint ) );
+}
+
+
+RIGHT_BORDERED_PANEL::~RIGHT_BORDERED_PANEL()
+{
+	this->Disconnect( wxEVT_PAINT, wxPaintEventHandler( RIGHT_BORDERED_PANEL::OnPaint ) );
+}
+
+
+void RIGHT_BORDERED_PANEL::OnPaint( wxPaintEvent& event )
+{
+    wxRect    rect( wxPoint( 0, 0 ), GetClientSize() );
+    wxPaintDC dc( this );
+
+    dc.SetBrush( wxSystemSettings::GetColour( wxSYS_COLOUR_FRAMEBK ) );
+    dc.SetPen( wxPen( wxSystemSettings::GetColour( wxSYS_COLOUR_ACTIVEBORDER ), 1 ) );
+
+    dc.DrawLine( rect.GetRight(), rect.GetTop(), rect.GetRight(), rect.GetBottom() );
+}
+
+
diff --git a/kicad/pcm/dialogs/panel_package.h b/kicad/pcm/dialogs/panel_package.h
index e320622e4b..a3bc0d8e8a 100644
--- a/kicad/pcm/dialogs/panel_package.h
+++ b/kicad/pcm/dialogs/panel_package.h
@@ -81,7 +81,9 @@ public:
     const PACKAGE_VIEW_DATA& GetPackageData() const { return m_data; };
 
 private:
-    void                  OnPaint( wxPaintEvent& event ) override;
+    void OnPaint( wxPaintEvent& event ) override;
+
+private:
     std::function<void()> m_selectCallback;
     bool                  m_selected = false;
     const ActionCallback& m_actionCallback;
@@ -90,4 +92,18 @@ private:
 };
 
 
+class RIGHT_BORDERED_PANEL : public wxPanel
+{
+public:
+    RIGHT_BORDERED_PANEL( wxWindow* parent, wxWindowID id = wxID_ANY,
+                          const wxPoint& pos = wxDefaultPosition,
+                          const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL,
+                          const wxString& name = wxEmptyString );
+
+    ~RIGHT_BORDERED_PANEL();
+
+private:
+    void OnPaint( wxPaintEvent& event );
+};
+
 #endif // PANEL_PACKAGE_H_
diff --git a/kicad/pcm/dialogs/panel_packages_view.cpp b/kicad/pcm/dialogs/panel_packages_view.cpp
index 400ec1f61a..dceb873fd7 100644
--- a/kicad/pcm/dialogs/panel_packages_view.cpp
+++ b/kicad/pcm/dialogs/panel_packages_view.cpp
@@ -23,6 +23,7 @@
 #include <kicad_settings.h>
 #include <pgm_base.h>
 #include <settings/settings_manager.h>
+#include <settings/common_settings.h>
 #include <widgets/wx_splitter_window.h>
 #include <string_utils.h>
 #include <html_window.h>
@@ -58,7 +59,6 @@ PANEL_PACKAGES_VIEW::PANEL_PACKAGES_VIEW( wxWindow*
     m_splitter1->Connect( wxEVT_IDLE, wxIdleEventHandler( PANEL_PACKAGES_VIEW::SetSashOnIdle ),
                           NULL, this );
 
-    m_initSashPos = 380;
     m_splitter1->SetPaneMinimums( 350, 450 );
 
 #ifdef __WXGTK__
@@ -87,8 +87,10 @@ PANEL_PACKAGES_VIEW::PANEL_PACKAGES_VIEW( wxWindow*
     // Most likely should be changed to wxGridSelectNone once WxWidgets>=3.1.5 is mandatory.
     m_gridVersions->SetSelectionMode( WX_GRID::wxGridSelectRows );
 
-    m_packageListWindow->SetBackgroundColour( wxStaticText::GetClassDefaultAttributes().colBg );
-    m_infoScrollWindow->SetBackgroundColour( wxStaticText::GetClassDefaultAttributes().colBg );
+    wxColor background = wxStaticText::GetClassDefaultAttributes().colBg;
+    m_panelList->SetBackgroundColour( background );
+    m_packageListWindow->SetBackgroundColour( background );
+    m_infoScrollWindow->SetBackgroundColour( background );
     m_infoScrollWindow->EnableScrolling( false, true );
 
     ClearData();
@@ -97,6 +99,9 @@ PANEL_PACKAGES_VIEW::PANEL_PACKAGES_VIEW( wxWindow*
 
 PANEL_PACKAGES_VIEW::~PANEL_PACKAGES_VIEW()
 {
+    COMMON_SETTINGS* cfg = Pgm().GetCommonSettings();
+    cfg->m_PackageManager.sash_pos = m_splitter1->GetSashPosition();
+
     m_gridVersions->PopEventHandler( true );
 }
 
@@ -676,7 +681,11 @@ void PANEL_PACKAGES_VIEW::OnInfoMouseWheel( wxMouseEvent& event )
 
 void PANEL_PACKAGES_VIEW::SetSashOnIdle( wxIdleEvent& aEvent )
 {
-	m_splitter1->SetSashPosition( m_initSashPos );
+    COMMON_SETTINGS* cfg = Pgm().GetCommonSettings();
+    m_splitter1->SetSashPosition( cfg->m_PackageManager.sash_pos );
+
+    m_packageListWindow->FitInside();
+
 	m_splitter1->Disconnect( wxEVT_IDLE, wxIdleEventHandler( PANEL_PACKAGES_VIEW::SetSashOnIdle ),
                              NULL, this );
 }
diff --git a/kicad/pcm/dialogs/panel_packages_view_base.cpp b/kicad/pcm/dialogs/panel_packages_view_base.cpp
index 9b794c4c16..178713dced 100644
--- a/kicad/pcm/dialogs/panel_packages_view_base.cpp
+++ b/kicad/pcm/dialogs/panel_packages_view_base.cpp
@@ -6,6 +6,7 @@
 ///////////////////////////////////////////////////////////////////////////
 
 #include "html_window.h"
+#include "panel_package.h"
 
 #include "panel_packages_view_base.h"
 
@@ -17,22 +18,19 @@ PANEL_PACKAGES_VIEW_BASE::PANEL_PACKAGES_VIEW_BASE( wxWindow* parent, wxWindowID
 	bSizer1 = new wxBoxSizer( wxVERTICAL );
 
 	m_splitter1 = new WX_SPLITTER_WINDOW( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3DSASH|wxSP_LIVE_UPDATE );
-	m_splitter1->SetSashGravity( 0.2 );
+	m_splitter1->SetSashGravity( 0.25 );
 	m_splitter1->Connect( wxEVT_IDLE, wxIdleEventHandler( PANEL_PACKAGES_VIEW_BASE::m_splitter1OnIdle ), NULL, this );
 
-	m_panelList = new wxPanel( m_splitter1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+	m_panelList = new RIGHT_BORDERED_PANEL( m_splitter1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE|wxTAB_TRAVERSAL );
 	wxBoxSizer* bPanelListSizer;
-	bPanelListSizer = new wxBoxSizer( wxHORIZONTAL );
-
-	wxBoxSizer* bColumnSizer;
-	bColumnSizer = new wxBoxSizer( wxVERTICAL );
+	bPanelListSizer = new wxBoxSizer( wxVERTICAL );
 
 	m_searchCtrl = new wxSearchCtrl( m_panelList, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 	#ifndef __WXMAC__
 	m_searchCtrl->ShowSearchButton( true );
 	#endif
 	m_searchCtrl->ShowCancelButton( false );
-	bColumnSizer->Add( m_searchCtrl, 0, wxEXPAND|wxBOTTOM, 5 );
+	bPanelListSizer->Add( m_searchCtrl, 0, wxEXPAND|wxALL, 5 );
 
 	m_packageListWindow = new wxScrolledWindow( m_panelList, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE|wxFULL_REPAINT_ON_RESIZE|wxVSCROLL );
 	m_packageListWindow->SetScrollRate( 5, 5 );
@@ -43,13 +41,7 @@ PANEL_PACKAGES_VIEW_BASE::PANEL_PACKAGES_VIEW_BASE( wxWindow* parent, wxWindowID
 	m_packageListWindow->SetSizer( bSizer2 );
 	m_packageListWindow->Layout();
 	bSizer2->Fit( m_packageListWindow );
-	bColumnSizer->Add( m_packageListWindow, 1, wxEXPAND, 5 );
-
-
-	bPanelListSizer->Add( bColumnSizer, 1, wxEXPAND|wxALL, 5 );
-
-	m_staticline2 = new wxStaticLine( m_panelList, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
-	bPanelListSizer->Add( m_staticline2, 0, wxEXPAND|wxBOTTOM, 5 );
+	bPanelListSizer->Add( m_packageListWindow, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
 
 	m_panelList->SetSizer( bPanelListSizer );
@@ -59,9 +51,6 @@ PANEL_PACKAGES_VIEW_BASE::PANEL_PACKAGES_VIEW_BASE( wxWindow* parent, wxWindowID
 	wxBoxSizer* bPanelDetailsSizer;
 	bPanelDetailsSizer = new wxBoxSizer( wxHORIZONTAL );
 
-	m_staticline1 = new wxStaticLine( m_panelDetails, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
-	bPanelDetailsSizer->Add( m_staticline1, 0, wxEXPAND|wxBOTTOM, 5 );
-
 	m_infoScrollWindow = new wxScrolledWindow( m_panelDetails, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL );
 	m_infoScrollWindow->SetScrollRate( 5, 5 );
 	m_infoScrollWindow->SetMinSize( wxSize( 480,-1 ) );
diff --git a/kicad/pcm/dialogs/panel_packages_view_base.fbp b/kicad/pcm/dialogs/panel_packages_view_base.fbp
index 46cc260dae..018855c68f 100644
--- a/kicad/pcm/dialogs/panel_packages_view_base.fbp
+++ b/kicad/pcm/dialogs/panel_packages_view_base.fbp
@@ -102,7 +102,7 @@
                         <property name="pin_button">1</property>
                         <property name="pos"></property>
                         <property name="resize">Resizable</property>
-                        <property name="sashgravity">0.2</property>
+                        <property name="sashgravity">0.25</property>
                         <property name="sashpos">0</property>
                         <property name="sashsize">-1</property>
                         <property name="show">1</property>
@@ -161,163 +161,87 @@
                                 <property name="resize">Resizable</property>
                                 <property name="show">1</property>
                                 <property name="size"></property>
-                                <property name="subclass">; ; forward_declare</property>
+                                <property name="subclass">RIGHT_BORDERED_PANEL; panel_package.h; forward_declare</property>
                                 <property name="toolbar_pane">0</property>
                                 <property name="tooltip"></property>
                                 <property name="window_extra_style"></property>
                                 <property name="window_name"></property>
-                                <property name="window_style">wxTAB_TRAVERSAL</property>
+                                <property name="window_style">wxBORDER_NONE|wxTAB_TRAVERSAL</property>
                                 <object class="wxBoxSizer" expanded="1">
                                     <property name="minimum_size"></property>
                                     <property name="name">bPanelListSizer</property>
-                                    <property name="orient">wxHORIZONTAL</property>
+                                    <property name="orient">wxVERTICAL</property>
                                     <property name="permission">none</property>
                                     <object class="sizeritem" expanded="1">
                                         <property name="border">5</property>
                                         <property name="flag">wxEXPAND|wxALL</property>
-                                        <property name="proportion">1</property>
-                                        <object class="wxBoxSizer" expanded="1">
+                                        <property name="proportion">0</property>
+                                        <object class="wxSearchCtrl" expanded="1">
+                                            <property name="BottomDockable">1</property>
+                                            <property name="LeftDockable">1</property>
+                                            <property name="RightDockable">1</property>
+                                            <property name="TopDockable">1</property>
+                                            <property name="aui_layer"></property>
+                                            <property name="aui_name"></property>
+                                            <property name="aui_position"></property>
+                                            <property name="aui_row"></property>
+                                            <property name="best_size"></property>
+                                            <property name="bg"></property>
+                                            <property name="cancel_button">0</property>
+                                            <property name="caption"></property>
+                                            <property name="caption_visible">1</property>
+                                            <property name="center_pane">0</property>
+                                            <property name="close_button">1</property>
+                                            <property name="context_help"></property>
+                                            <property name="context_menu">1</property>
+                                            <property name="default_pane">0</property>
+                                            <property name="dock">Dock</property>
+                                            <property name="dock_fixed">0</property>
+                                            <property name="docking">Left</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="floatable">1</property>
+                                            <property name="font"></property>
+                                            <property name="gripper">0</property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="max_size"></property>
+                                            <property name="maximize_button">0</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="min_size"></property>
+                                            <property name="minimize_button">0</property>
                                             <property name="minimum_size"></property>
-                                            <property name="name">bColumnSizer</property>
-                                            <property name="orient">wxVERTICAL</property>
-                                            <property name="permission">none</property>
-                                            <object class="sizeritem" expanded="1">
-                                                <property name="border">5</property>
-                                                <property name="flag">wxEXPAND|wxBOTTOM</property>
-                                                <property name="proportion">0</property>
-                                                <object class="wxSearchCtrl" expanded="1">
-                                                    <property name="BottomDockable">1</property>
-                                                    <property name="LeftDockable">1</property>
-                                                    <property name="RightDockable">1</property>
-                                                    <property name="TopDockable">1</property>
-                                                    <property name="aui_layer"></property>
-                                                    <property name="aui_name"></property>
-                                                    <property name="aui_position"></property>
-                                                    <property name="aui_row"></property>
-                                                    <property name="best_size"></property>
-                                                    <property name="bg"></property>
-                                                    <property name="cancel_button">0</property>
-                                                    <property name="caption"></property>
-                                                    <property name="caption_visible">1</property>
-                                                    <property name="center_pane">0</property>
-                                                    <property name="close_button">1</property>
-                                                    <property name="context_help"></property>
-                                                    <property name="context_menu">1</property>
-                                                    <property name="default_pane">0</property>
-                                                    <property name="dock">Dock</property>
-                                                    <property name="dock_fixed">0</property>
-                                                    <property name="docking">Left</property>
-                                                    <property name="enabled">1</property>
-                                                    <property name="fg"></property>
-                                                    <property name="floatable">1</property>
-                                                    <property name="font"></property>
-                                                    <property name="gripper">0</property>
-                                                    <property name="hidden">0</property>
-                                                    <property name="id">wxID_ANY</property>
-                                                    <property name="max_size"></property>
-                                                    <property name="maximize_button">0</property>
-                                                    <property name="maximum_size"></property>
-                                                    <property name="min_size"></property>
-                                                    <property name="minimize_button">0</property>
-                                                    <property name="minimum_size"></property>
-                                                    <property name="moveable">1</property>
-                                                    <property name="name">m_searchCtrl</property>
-                                                    <property name="pane_border">1</property>
-                                                    <property name="pane_position"></property>
-                                                    <property name="pane_size"></property>
-                                                    <property name="permission">protected</property>
-                                                    <property name="pin_button">1</property>
-                                                    <property name="pos"></property>
-                                                    <property name="resize">Resizable</property>
-                                                    <property name="search_button">1</property>
-                                                    <property name="show">1</property>
-                                                    <property name="size"></property>
-                                                    <property name="style"></property>
-                                                    <property name="subclass">; ; forward_declare</property>
-                                                    <property name="toolbar_pane">0</property>
-                                                    <property name="tooltip"></property>
-                                                    <property name="validator_data_type"></property>
-                                                    <property name="validator_style">wxFILTER_NONE</property>
-                                                    <property name="validator_type">wxDefaultValidator</property>
-                                                    <property name="validator_variable"></property>
-                                                    <property name="value"></property>
-                                                    <property name="window_extra_style"></property>
-                                                    <property name="window_name"></property>
-                                                    <property name="window_style"></property>
-                                                </object>
-                                            </object>
-                                            <object class="sizeritem" expanded="1">
-                                                <property name="border">5</property>
-                                                <property name="flag">wxEXPAND</property>
-                                                <property name="proportion">1</property>
-                                                <object class="wxScrolledWindow" expanded="1">
-                                                    <property name="BottomDockable">1</property>
-                                                    <property name="LeftDockable">1</property>
-                                                    <property name="RightDockable">1</property>
-                                                    <property name="TopDockable">1</property>
-                                                    <property name="aui_layer"></property>
-                                                    <property name="aui_name"></property>
-                                                    <property name="aui_position"></property>
-                                                    <property name="aui_row"></property>
-                                                    <property name="best_size"></property>
-                                                    <property name="bg"></property>
-                                                    <property name="caption"></property>
-                                                    <property name="caption_visible">1</property>
-                                                    <property name="center_pane">0</property>
-                                                    <property name="close_button">1</property>
-                                                    <property name="context_help"></property>
-                                                    <property name="context_menu">1</property>
-                                                    <property name="default_pane">0</property>
-                                                    <property name="dock">Dock</property>
-                                                    <property name="dock_fixed">0</property>
-                                                    <property name="docking">Left</property>
-                                                    <property name="enabled">1</property>
-                                                    <property name="fg"></property>
-                                                    <property name="floatable">1</property>
-                                                    <property name="font"></property>
-                                                    <property name="gripper">0</property>
-                                                    <property name="hidden">0</property>
-                                                    <property name="id">wxID_ANY</property>
-                                                    <property name="max_size"></property>
-                                                    <property name="maximize_button">0</property>
-                                                    <property name="maximum_size"></property>
-                                                    <property name="min_size"></property>
-                                                    <property name="minimize_button">0</property>
-                                                    <property name="minimum_size">-1,-1</property>
-                                                    <property name="moveable">1</property>
-                                                    <property name="name">m_packageListWindow</property>
-                                                    <property name="pane_border">1</property>
-                                                    <property name="pane_position"></property>
-                                                    <property name="pane_size"></property>
-                                                    <property name="permission">protected</property>
-                                                    <property name="pin_button">1</property>
-                                                    <property name="pos"></property>
-                                                    <property name="resize">Resizable</property>
-                                                    <property name="scroll_rate_x">5</property>
-                                                    <property name="scroll_rate_y">5</property>
-                                                    <property name="show">1</property>
-                                                    <property name="size"></property>
-                                                    <property name="subclass">; ; forward_declare</property>
-                                                    <property name="toolbar_pane">0</property>
-                                                    <property name="tooltip"></property>
-                                                    <property name="window_extra_style"></property>
-                                                    <property name="window_name"></property>
-                                                    <property name="window_style">wxBORDER_NONE|wxFULL_REPAINT_ON_RESIZE|wxVSCROLL</property>
-                                                    <object class="wxBoxSizer" expanded="1">
-                                                        <property name="minimum_size"></property>
-                                                        <property name="name">bSizer2</property>
-                                                        <property name="orient">wxVERTICAL</property>
-                                                        <property name="permission">none</property>
-                                                    </object>
-                                                </object>
-                                            </object>
+                                            <property name="moveable">1</property>
+                                            <property name="name">m_searchCtrl</property>
+                                            <property name="pane_border">1</property>
+                                            <property name="pane_position"></property>
+                                            <property name="pane_size"></property>
+                                            <property name="permission">protected</property>
+                                            <property name="pin_button">1</property>
+                                            <property name="pos"></property>
+                                            <property name="resize">Resizable</property>
+                                            <property name="search_button">1</property>
+                                            <property name="show">1</property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass">; ; forward_declare</property>
+                                            <property name="toolbar_pane">0</property>
+                                            <property name="tooltip"></property>
+                                            <property name="validator_data_type"></property>
+                                            <property name="validator_style">wxFILTER_NONE</property>
+                                            <property name="validator_type">wxDefaultValidator</property>
+                                            <property name="validator_variable"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
                                         </object>
                                     </object>
                                     <object class="sizeritem" expanded="1">
                                         <property name="border">5</property>
-                                        <property name="flag">wxEXPAND|wxBOTTOM</property>
-                                        <property name="proportion">0</property>
-                                        <object class="wxStaticLine" expanded="1">
+                                        <property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">1</property>
+                                        <object class="wxScrolledWindow" expanded="1">
                                             <property name="BottomDockable">1</property>
                                             <property name="LeftDockable">1</property>
                                             <property name="RightDockable">1</property>
@@ -350,9 +274,9 @@
                                             <property name="maximum_size"></property>
                                             <property name="min_size"></property>
                                             <property name="minimize_button">0</property>
-                                            <property name="minimum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
                                             <property name="moveable">1</property>
-                                            <property name="name">m_staticline2</property>
+                                            <property name="name">m_packageListWindow</property>
                                             <property name="pane_border">1</property>
                                             <property name="pane_position"></property>
                                             <property name="pane_size"></property>
@@ -360,15 +284,22 @@
                                             <property name="pin_button">1</property>
                                             <property name="pos"></property>
                                             <property name="resize">Resizable</property>
+                                            <property name="scroll_rate_x">5</property>
+                                            <property name="scroll_rate_y">5</property>
                                             <property name="show">1</property>
                                             <property name="size"></property>
-                                            <property name="style">wxLI_VERTICAL</property>
                                             <property name="subclass">; ; forward_declare</property>
                                             <property name="toolbar_pane">0</property>
                                             <property name="tooltip"></property>
                                             <property name="window_extra_style"></property>
                                             <property name="window_name"></property>
-                                            <property name="window_style"></property>
+                                            <property name="window_style">wxBORDER_NONE|wxFULL_REPAINT_ON_RESIZE|wxVSCROLL</property>
+                                            <object class="wxBoxSizer" expanded="1">
+                                                <property name="minimum_size"></property>
+                                                <property name="name">bSizer2</property>
+                                                <property name="orient">wxVERTICAL</property>
+                                                <property name="permission">none</property>
+                                            </object>
                                         </object>
                                     </object>
                                 </object>
@@ -431,64 +362,6 @@
                                     <property name="name">bPanelDetailsSizer</property>
                                     <property name="orient">wxHORIZONTAL</property>
                                     <property name="permission">none</property>
-                                    <object class="sizeritem" expanded="1">
-                                        <property name="border">5</property>
-                                        <property name="flag">wxEXPAND|wxBOTTOM</property>
-                                        <property name="proportion">0</property>
-                                        <object class="wxStaticLine" expanded="1">
-                                            <property name="BottomDockable">1</property>
-                                            <property name="LeftDockable">1</property>
-                                            <property name="RightDockable">1</property>
-                                            <property name="TopDockable">1</property>
-                                            <property name="aui_layer"></property>
-                                            <property name="aui_name"></property>
-                                            <property name="aui_position"></property>
-                                            <property name="aui_row"></property>
-                                            <property name="best_size"></property>
-                                            <property name="bg"></property>
-                                            <property name="caption"></property>
-                                            <property name="caption_visible">1</property>
-                                            <property name="center_pane">0</property>
-                                            <property name="close_button">1</property>
-                                            <property name="context_help"></property>
-                                            <property name="context_menu">1</property>
-                                            <property name="default_pane">0</property>
-                                            <property name="dock">Dock</property>
-                                            <property name="dock_fixed">0</property>
-                                            <property name="docking">Left</property>
-                                            <property name="enabled">1</property>
-                                            <property name="fg"></property>
-                                            <property name="floatable">1</property>
-                                            <property name="font"></property>
-                                            <property name="gripper">0</property>
-                                            <property name="hidden">0</property>
-                                            <property name="id">wxID_ANY</property>
-                                            <property name="max_size"></property>
-                                            <property name="maximize_button">0</property>
-                                            <property name="maximum_size"></property>
-                                            <property name="min_size"></property>
-                                            <property name="minimize_button">0</property>
-                                            <property name="minimum_size"></property>
-                                            <property name="moveable">1</property>
-                                            <property name="name">m_staticline1</property>
-                                            <property name="pane_border">1</property>
-                                            <property name="pane_position"></property>
-                                            <property name="pane_size"></property>
-                                            <property name="permission">protected</property>
-                                            <property name="pin_button">1</property>
-                                            <property name="pos"></property>
-                                            <property name="resize">Resizable</property>
-                                            <property name="show">1</property>
-                                            <property name="size"></property>
-                                            <property name="style">wxLI_VERTICAL</property>
-                                            <property name="subclass">; ; forward_declare</property>
-                                            <property name="toolbar_pane">0</property>
-                                            <property name="tooltip"></property>
-                                            <property name="window_extra_style"></property>
-                                            <property name="window_name"></property>
-                                            <property name="window_style"></property>
-                                        </object>
-                                    </object>
                                     <object class="sizeritem" expanded="1">
                                         <property name="border">5</property>
                                         <property name="flag">wxEXPAND</property>
diff --git a/kicad/pcm/dialogs/panel_packages_view_base.h b/kicad/pcm/dialogs/panel_packages_view_base.h
index 570f693d83..4e96b82cf2 100644
--- a/kicad/pcm/dialogs/panel_packages_view_base.h
+++ b/kicad/pcm/dialogs/panel_packages_view_base.h
@@ -11,6 +11,7 @@
 #include <wx/xrc/xmlres.h>
 #include <wx/intl.h>
 class HTML_WINDOW;
+class RIGHT_BORDERED_PANEL;
 
 #include "widgets/wx_grid.h"
 #include "widgets/wx_splitter_window.h"
@@ -22,7 +23,6 @@ class HTML_WINDOW;
 #include <wx/settings.h>
 #include <wx/sizer.h>
 #include <wx/scrolwin.h>
-#include <wx/statline.h>
 #include <wx/panel.h>
 #include <wx/html/htmlwin.h>
 #include <wx/grid.h>
@@ -45,12 +45,10 @@ class PANEL_PACKAGES_VIEW_BASE : public wxPanel
 
 	protected:
 		WX_SPLITTER_WINDOW* m_splitter1;
-		wxPanel* m_panelList;
+		RIGHT_BORDERED_PANEL* m_panelList;
 		wxSearchCtrl* m_searchCtrl;
 		wxScrolledWindow* m_packageListWindow;
-		wxStaticLine* m_staticline2;
 		wxPanel* m_panelDetails;
-		wxStaticLine* m_staticline1;
 		wxScrolledWindow* m_infoScrollWindow;
 		HTML_WINDOW* m_infoText;
 		wxBoxSizer* m_sizerVersions;