diff --git a/common/widgets/paged_dialog.cpp b/common/widgets/paged_dialog.cpp index 5cf0a0cfbc..f021cea112 100644 --- a/common/widgets/paged_dialog.cpp +++ b/common/widgets/paged_dialog.cpp @@ -114,6 +114,9 @@ PAGED_DIALOG::PAGED_DIALOG( wxWindow* aParent, const wxString& aTitle, bool aSho void PAGED_DIALOG::finishInitialization() { + for( size_t i = 1; i < m_treebook->GetPageCount(); ++i ) + m_macHack.push_back( true ); + // For some reason adding page labels to the treeCtrl doesn't invalidate its bestSize // cache so we have to do it by hand m_treebook->GetTreeCtrl()->InvalidateBestSize(); @@ -373,22 +376,33 @@ void PAGED_DIALOG::onCharHook( wxKeyEvent& aEvent ) void PAGED_DIALOG::onPageChanged( wxBookCtrlEvent& event ) { - int page = event.GetSelection(); + size_t page = event.GetSelection(); // Use the first sub-page when a tree level node is selected. - if( m_treebook->GetCurrentPage()->GetChildren().IsEmpty() ) + if( m_treebook->GetCurrentPage()->GetChildren().IsEmpty() + && page + 1 < m_treebook->GetPageCount() ) { - unsigned next = page + 1; - - if( next < m_treebook->GetPageCount() ) - m_treebook->ChangeSelection( next ); + m_treebook->ChangeSelection( ++page ); } UpdateResetButton( page ); - wxSizeEvent evt( wxDefaultSize ); +#ifdef __WXMAC__ + // Work around an OSX wxWidgets issue where the wxGrid children don't get placed correctly + // until the first resize event + if( page < m_macHack.size() && m_macHack[ page ] ) + { + wxSize pageSize = m_treebook->GetPage( page )->GetSize(); + pageSize.x -= 5; + pageSize.y += 2; + m_treebook->GetPage( page )->SetSize( pageSize ); + m_macHack[ page ] = false; + } +#else + wxSizeEvent evt( wxDefaultSize ); wxQueueEvent( m_treebook, evt.Clone() ); +#endif } diff --git a/eeschema/dialogs/panel_setup_formatting_base.cpp b/eeschema/dialogs/panel_setup_formatting_base.cpp index 49a8eb363a..162319e381 100644 --- a/eeschema/dialogs/panel_setup_formatting_base.cpp +++ b/eeschema/dialogs/panel_setup_formatting_base.cpp @@ -49,8 +49,8 @@ PANEL_SETUP_FORMATTING_BASE::PANEL_SETUP_FORMATTING_BASE( wxWindow* parent, wxWi wxFlexGridSizer* fgSizer2; fgSizer2 = new wxFlexGridSizer( 0, 3, 5, 5 ); fgSizer2->AddGrowableCol( 1 ); - fgSizer2->SetFlexibleDirection( wxBOTH ); - fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + fgSizer2->SetFlexibleDirection( wxHORIZONTAL ); + fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_NONE ); m_textSizeLabel = new wxStaticText( sbSizer4->GetStaticBox(), wxID_ANY, _("Default text size:"), wxDefaultPosition, wxDefaultSize, 0 ); m_textSizeLabel->Wrap( -1 ); @@ -146,7 +146,7 @@ PANEL_SETUP_FORMATTING_BASE::PANEL_SETUP_FORMATTING_BASE( wxWindow* parent, wxWi int m_choiceJunctionDotSizeNChoices = sizeof( m_choiceJunctionDotSizeChoices ) / sizeof( wxString ); m_choiceJunctionDotSize = new wxChoice( sbSizer2->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceJunctionDotSizeNChoices, m_choiceJunctionDotSizeChoices, 0 ); m_choiceJunctionDotSize->SetSelection( 3 ); - bSizer61->Add( m_choiceJunctionDotSize, 1, wxEXPAND|wxRIGHT, 5 ); + bSizer61->Add( m_choiceJunctionDotSize, 1, wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 ); sbSizer2->Add( bSizer61, 0, wxEXPAND|wxBOTTOM|wxRIGHT, 5 ); diff --git a/eeschema/dialogs/panel_setup_formatting_base.fbp b/eeschema/dialogs/panel_setup_formatting_base.fbp index fabc904787..c5cc66cfbb 100644 --- a/eeschema/dialogs/panel_setup_formatting_base.fbp +++ b/eeschema/dialogs/panel_setup_formatting_base.fbp @@ -234,13 +234,13 @@ 1 3 - wxBOTH + wxHORIZONTAL 1 5 fgSizer2 - wxFLEX_GROWMODE_SPECIFIED + wxFLEX_GROWMODE_NONE none 0 5 @@ -1294,7 +1294,7 @@ 5 - wxEXPAND|wxRIGHT + wxRIGHT|wxALIGN_CENTER_VERTICAL 1 1 diff --git a/include/widgets/paged_dialog.h b/include/widgets/paged_dialog.h index 6b75b5e259..80aa4ae5f8 100644 --- a/include/widgets/paged_dialog.h +++ b/include/widgets/paged_dialog.h @@ -70,6 +70,8 @@ private: wxString m_title; wxBoxSizer* m_buttonsSizer; + + std::vector m_macHack; };