diff --git a/src/ShuttleGui.cpp b/src/ShuttleGui.cpp index 72bb0bfba..42d9d1388 100644 --- a/src/ShuttleGui.cpp +++ b/src/ShuttleGui.cpp @@ -120,21 +120,22 @@ for registering for changes. #include "widgets/WindowAccessible.h" #endif -ShuttleGuiBase::ShuttleGuiBase(wxWindow * pParent, teShuttleMode ShuttleMode ) +ShuttleGuiBase::ShuttleGuiBase( + wxWindow * pParent, teShuttleMode ShuttleMode, bool vertical, wxSize minSize ) : mpDlg{ pParent } { wxASSERT( (pParent != NULL ) || ( ShuttleMode != eIsCreating)); mpbOptionalFlag = nullptr; mpParent = pParent; mShuttleMode = ShuttleMode; - Init(); + Init( vertical, minSize ); } ShuttleGuiBase::~ShuttleGuiBase() { } -void ShuttleGuiBase::Init() +void ShuttleGuiBase::Init(bool vertical, wxSize minSize) { mpShuttle = NULL; mpSizer = NULL; @@ -172,10 +173,11 @@ void ShuttleGuiBase::Init() if( !mpSizer ) { - mpParent->SetSizer(mpSizer = safenew wxBoxSizer(wxVERTICAL)); + mpParent->SetSizer( + mpSizer = safenew wxBoxSizer(vertical ? wxVERTICAL : wxHORIZONTAL)); } PushSizer(); - mpSizer->SetMinSize(250,100); + mpSizer->SetMinSize(minSize); } void ShuttleGuiBase::ResetId() @@ -2198,13 +2200,14 @@ void SetIfCreated( wxStaticText *&Var, wxStaticText * Val ) #include "../extnpanel-src/GuiWaveTrack.h" #endif -ShuttleGui::ShuttleGui(wxWindow * pParent, teShuttleMode ShuttleMode) : - ShuttleGuiBase( pParent, ShuttleMode ) +ShuttleGui::ShuttleGui( + wxWindow * pParent, teShuttleMode ShuttleMode, bool vertical, wxSize minSize) + : ShuttleGuiBase( pParent, ShuttleMode, vertical, minSize ) { if( ShuttleMode == eIsCreatingFromPrefs ) { mShuttleMode = eIsCreating; - Init(); // Wasn't fully done in base constructor because it is only done when eIsCreating is set. + Init( vertical, minSize ); // Wasn't fully done in base constructor because it is only done when eIsCreating is set. } else if( ShuttleMode == eIsSavingToPrefs ) { diff --git a/src/ShuttleGui.h b/src/ShuttleGui.h index 9f047f7d8..59a167e44 100644 --- a/src/ShuttleGui.h +++ b/src/ShuttleGui.h @@ -256,9 +256,14 @@ struct Item { class AUDACITY_DLL_API ShuttleGuiBase /* not final */ { public: - ShuttleGuiBase(wxWindow * pParent,teShuttleMode ShuttleMode); + ShuttleGuiBase( + wxWindow * pParent, + teShuttleMode ShuttleMode, + bool vertical, // Choose layout direction of topmost level sizer + wxSize minSize + ); virtual ~ShuttleGuiBase(); - void Init(); + void Init( bool vertical, wxSize minSize ); void ResetId(); //-- Add functions. These only add a widget or 2. @@ -596,7 +601,11 @@ AUDACITY_DLL_API std::unique_ptr CreateStdButtonSizer( wxWindow *parent class AUDACITY_DLL_API ShuttleGui /* not final */ : public ShuttleGuiBase { public: - ShuttleGui(wxWindow * pParent,teShuttleMode ShuttleMode); + ShuttleGui( + wxWindow * pParent, teShuttleMode ShuttleMode, + bool vertical = true, // Choose layout direction of topmost level sizer + wxSize minSize = { 250, 100 } + ); ~ShuttleGui(void); public: ShuttleGui & Optional( bool & bVar );