From 9ba1e9277338bb571eacf504dfbafc4258ccfbfb Mon Sep 17 00:00:00 2001 From: Wayne Stambaugh Date: Tue, 31 Dec 2024 14:36:15 -0500 Subject: [PATCH] Fix template selector GTK scroll bar issue. Fixes https://gitlab.com/kicad/code/kicad/-/issues/19436 --- .../dialogs/dialog_template_selector_base.cpp | 22 ++++++------ .../dialogs/dialog_template_selector_base.fbp | 34 +++++++++---------- kicad/dialogs/dialog_template_selector_base.h | 10 +++--- 3 files changed, 32 insertions(+), 34 deletions(-) diff --git a/kicad/dialogs/dialog_template_selector_base.cpp b/kicad/dialogs/dialog_template_selector_base.cpp index 003fcb97f6..b4f72a51ea 100644 --- a/kicad/dialogs/dialog_template_selector_base.cpp +++ b/kicad/dialogs/dialog_template_selector_base.cpp @@ -23,7 +23,7 @@ DIALOG_TEMPLATE_SELECTOR_BASE::DIALOG_TEMPLATE_SELECTOR_BASE( wxWindow* parent, m_staticTextTpath = new wxStaticText( this, wxID_ANY, _("Folder:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextTpath->Wrap( -1 ); - bsizerTemplateSelector->Add( m_staticTextTpath, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); + bsizerTemplateSelector->Add( m_staticTextTpath, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); m_tcTemplatePath = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); bsizerTemplateSelector->Add( m_tcTemplatePath, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT, 2 ); @@ -32,21 +32,19 @@ DIALOG_TEMPLATE_SELECTOR_BASE::DIALOG_TEMPLATE_SELECTOR_BASE( wxWindow* parent, bsizerTemplateSelector->Add( m_browseButton, 0, wxTOP|wxBOTTOM|wxRIGHT, 5 ); m_reloadButton = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); - bsizerTemplateSelector->Add( m_reloadButton, 0, wxALL, 5 ); + bsizerTemplateSelector->Add( m_reloadButton, 0, wxBOTTOM|wxTOP, 5 ); - bmainSizer->Add( bsizerTemplateSelector, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + bmainSizer->Add( bsizerTemplateSelector, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_notebook->SetMinSize( wxSize( -1,185 ) ); - - bmainSizer->Add( m_notebook, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + bmainSizer->Add( m_notebook, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 ); m_htmlWin = new HTML_WINDOW( this, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxHW_SCROLLBAR_AUTO ); m_htmlWin->SetMinSize( wxSize( 400,100 ) ); - bmainSizer->Add( m_htmlWin, 1, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 12 ); + bmainSizer->Add( m_htmlWin, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 ); m_sdbSizer = new wxStdDialogButtonSizer(); m_sdbSizerOK = new wxButton( this, wxID_OK ); @@ -60,6 +58,7 @@ DIALOG_TEMPLATE_SELECTOR_BASE::DIALOG_TEMPLATE_SELECTOR_BASE( wxWindow* parent, this->SetSizer( bmainSizer ); this->Layout(); + bmainSizer->Fit( this ); this->Centre( wxBOTH ); @@ -85,18 +84,19 @@ TEMPLATE_SELECTION_PANEL_BASE::TEMPLATE_SELECTION_PANEL_BASE( wxWindow* parent, m_SizerBase = new wxBoxSizer( wxHORIZONTAL ); m_scrolledWindow = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxALWAYS_SHOW_SB|wxHSCROLL ); - m_scrolledWindow->SetScrollRate( 100, 5 ); + m_scrolledWindow->SetScrollRate( 25, 5 ); m_SizerChoice = new wxBoxSizer( wxHORIZONTAL ); m_scrolledWindow->SetSizer( m_SizerChoice ); m_scrolledWindow->Layout(); m_SizerChoice->Fit( m_scrolledWindow ); - m_SizerBase->Add( m_scrolledWindow, 1, wxEXPAND, 5 ); + m_SizerBase->Add( m_scrolledWindow, 1, wxBOTTOM|wxEXPAND, 10 ); this->SetSizer( m_SizerBase ); this->Layout(); + m_SizerBase->Fit( this ); } TEMPLATE_SELECTION_PANEL_BASE::~TEMPLATE_SELECTION_PANEL_BASE() @@ -105,9 +105,6 @@ TEMPLATE_SELECTION_PANEL_BASE::~TEMPLATE_SELECTION_PANEL_BASE() TEMPLATE_WIDGET_BASE::TEMPLATE_WIDGET_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) { - this->SetMinSize( wxSize( 108,-1 ) ); - this->SetMaxSize( wxSize( 108,-1 ) ); - wxBoxSizer* bSizerMain; bSizerMain = new wxBoxSizer( wxVERTICAL ); @@ -123,6 +120,7 @@ TEMPLATE_WIDGET_BASE::TEMPLATE_WIDGET_BASE( wxWindow* parent, wxWindowID id, con this->SetSizer( bSizerMain ); this->Layout(); + bSizerMain->Fit( this ); } TEMPLATE_WIDGET_BASE::~TEMPLATE_WIDGET_BASE() diff --git a/kicad/dialogs/dialog_template_selector_base.fbp b/kicad/dialogs/dialog_template_selector_base.fbp index f7dfbe1c1b..ecd96c1db0 100644 --- a/kicad/dialogs/dialog_template_selector_base.fbp +++ b/kicad/dialogs/dialog_template_selector_base.fbp @@ -50,7 +50,7 @@ -1,-1 DIALOG_TEMPLATE_SELECTOR_BASE - 600,499 + -1,-1 wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER DIALOG_SHIM; dialog_shim.h Project Template Selector @@ -66,7 +66,7 @@ none 5 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT + wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP 0 @@ -75,7 +75,7 @@ none 5 - wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT + wxALIGN_CENTER_VERTICAL|wxRIGHT 0 1 @@ -277,7 +277,7 @@ 5 - wxALL + wxBOTTOM|wxTOP 0 1 @@ -354,7 +354,7 @@ 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT 0 1 @@ -391,7 +391,7 @@ -1,-1 0 - -1,185 + -1,-1 1 m_notebook 1 @@ -414,8 +414,8 @@ - 12 - wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 5 + wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT 1 1 @@ -457,7 +457,7 @@ 1 - protected + public 1 Resizable @@ -510,7 +510,7 @@ -1,-1 TEMPLATE_SELECTION_PANEL_BASE - 258,140 + -1,-1 0 @@ -523,8 +523,8 @@ wxHORIZONTAL public - 5 - wxEXPAND + 10 + wxBOTTOM|wxEXPAND 1 1 @@ -570,7 +570,7 @@ 1 Resizable - 100 + 25 5 1 @@ -584,7 +584,7 @@ m_SizerChoice wxHORIZONTAL - protected + public @@ -603,11 +603,11 @@ 0 wxID_ANY - 108,-1 - 108,-1 + -1,-1 + -1,-1 TEMPLATE_WIDGET_BASE - 108,-1 + -1,-1 0 diff --git a/kicad/dialogs/dialog_template_selector_base.h b/kicad/dialogs/dialog_template_selector_base.h index 1ba3998f3c..6764925035 100644 --- a/kicad/dialogs/dialog_template_selector_base.h +++ b/kicad/dialogs/dialog_template_selector_base.h @@ -49,7 +49,6 @@ class DIALOG_TEMPLATE_SELECTOR_BASE : public DIALOG_SHIM STD_BITMAP_BUTTON* m_browseButton; STD_BITMAP_BUTTON* m_reloadButton; wxNotebook* m_notebook; - HTML_WINDOW* m_htmlWin; wxStdDialogButtonSizer* m_sdbSizer; wxButton* m_sdbSizerOK; wxButton* m_sdbSizerCancel; @@ -62,8 +61,9 @@ class DIALOG_TEMPLATE_SELECTOR_BASE : public DIALOG_SHIM public: + HTML_WINDOW* m_htmlWin; - DIALOG_TEMPLATE_SELECTOR_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Project Template Selector"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 600,499 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + DIALOG_TEMPLATE_SELECTOR_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Project Template Selector"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); ~DIALOG_TEMPLATE_SELECTOR_BASE(); @@ -77,13 +77,13 @@ class TEMPLATE_SELECTION_PANEL_BASE : public wxPanel private: protected: - wxBoxSizer* m_SizerChoice; public: wxBoxSizer* m_SizerBase; wxScrolledWindow* m_scrolledWindow; + wxBoxSizer* m_SizerChoice; - TEMPLATE_SELECTION_PANEL_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 258,140 ), long style = wxTAB_TRAVERSAL|wxBORDER_NONE, const wxString& name = wxEmptyString ); + TEMPLATE_SELECTION_PANEL_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL|wxBORDER_NONE, const wxString& name = wxEmptyString ); ~TEMPLATE_SELECTION_PANEL_BASE(); @@ -102,7 +102,7 @@ class TEMPLATE_WIDGET_BASE : public wxPanel public: - TEMPLATE_WIDGET_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 108,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); + TEMPLATE_WIDGET_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); ~TEMPLATE_WIDGET_BASE();