X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b181a50500ea8a32a967dfba2a6efa7105d6bc4c..6929fe3af8c307d7ff46e73a88edbedc39731d09:/src/common/sizer.cpp?ds=sidebyside diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp index d2e78491b5..98086b6804 100644 --- a/src/common/sizer.cpp +++ b/src/common/sizer.cpp @@ -21,11 +21,17 @@ #pragma hdrstop #endif +#ifndef WX_PRECOMP + #include "wx/string.h" + #include "wx/intl.h" +#endif // WX_PRECOMP + #include "wx/sizer.h" #include "wx/utils.h" #include "wx/statbox.h" #include "wx/settings.h" #include "wx/listimpl.cpp" +#include "wx/intl.h" #if WXWIN_COMPATIBILITY_2_4 #include "wx/notebook.h" #endif @@ -44,7 +50,9 @@ IMPLEMENT_CLASS(wxBoxSizer, wxSizer) #if wxUSE_STATBOX IMPLEMENT_CLASS(wxStaticBoxSizer, wxBoxSizer) #endif +#if wxUSE_BUTTON IMPLEMENT_CLASS(wxStdDialogButtonSizer, wxBoxSizer) +#endif WX_DEFINE_EXPORTED_LIST( wxSizerItemList ); @@ -1123,9 +1131,11 @@ void wxFlexGridSizer::RecalcSizes() SetItemBounds( node->GetData(), x, y, w, h); } - y = y + m_rowHeights[r] + m_vgap; + if (m_rowHeights[r] != -1) + y = y + m_rowHeights[r] + m_vgap; } - x = x + m_colWidths[c] + m_hgap; + if (m_colWidths[c] != -1) + x = x + m_colWidths[c] + m_hgap; } } @@ -1179,12 +1189,16 @@ wxSize wxFlexGridSizer::CalcMin() int width = 0; for (int col = 0; col < ncols; col++) if ( m_colWidths[ col ] != -1 ) - width += m_colWidths[ col ] + ( col == ncols-1 ? 0 : m_hgap ); + width += m_colWidths[ col ] + m_hgap; + if (width > 0) + width -= m_hgap; int height = 0; for (int row = 0; row < nrows; row++) if ( m_rowHeights[ row ] != -1 ) - height += m_rowHeights[ row ] + ( row == nrows-1 ? 0 : m_vgap ); + height += m_rowHeights[ row ] + m_vgap; + if (height > 0) + height -= m_vgap; m_calculatedMinSize = wxSize( width, height ); return m_calculatedMinSize; @@ -1641,16 +1655,18 @@ void wxStaticBoxSizer::ShowItems( bool show ) #endif // wxUSE_STATBOX +#if wxUSE_BUTTON + wxStdDialogButtonSizer::wxStdDialogButtonSizer() : wxBoxSizer(wxHORIZONTAL) { bool is_pda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA); - // If we have a PDA screen, put yes/no button over + // If we have a PDA screen, put yes/no button over // all other buttons, otherwise on the left side. if (is_pda) m_orient = wxVERTICAL; - + m_buttonAffirmative = NULL; m_buttonApply = NULL; m_buttonNegative = NULL; @@ -1704,61 +1720,61 @@ void wxStdDialogButtonSizer::Finalise() #ifdef __WXMAC__ Add(0, 0, 0, wxLEFT, 6); if (m_buttonHelp) - Add((wxWindow*)m_buttonHelp, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, 6); - + Add((wxWindow*)m_buttonHelp, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, 6); + if (m_buttonNegative){ // HIG POLICE BULLETIN - destructive buttons need extra padding // 24 pixels on either side Add((wxWindow*)m_buttonNegative, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, 12); } - + // extra whitespace between help/negative and cancel/ok buttons - Add(0, 0, 1, wxEXPAND, 0); - + Add(0, 0, 1, wxEXPAND, 0); + if (m_buttonCancel){ Add((wxWindow*)m_buttonCancel, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, 6); // Cancel or help should be default // m_buttonCancel->SetDefaultButton(); } - - // Ugh, Mac doesn't really have apply dialogs, so I'll just + + // Ugh, Mac doesn't really have apply dialogs, so I'll just // figure the best place is between Cancel and OK if (m_buttonApply) Add((wxWindow*)m_buttonApply, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, 6); - + if (m_buttonAffirmative){ Add((wxWindow*)m_buttonAffirmative, 0, wxALIGN_CENTRE | wxLEFT, 6); - + if (m_buttonAffirmative->GetId() == wxID_SAVE){ // these buttons have set labels under Mac so we should use them m_buttonAffirmative->SetLabel(_("Save")); m_buttonNegative->SetLabel(_("Don't Save")); } } - + // Extra space around and at the right Add(12, 24); #elif defined(__WXGTK20__) Add(0, 0, 0, wxLEFT, 9); if (m_buttonHelp) - Add((wxWindow*)m_buttonHelp, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, 3); - + Add((wxWindow*)m_buttonHelp, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, 3); + // extra whitespace between help and cancel/ok buttons - Add(0, 0, 1, wxEXPAND, 0); - + Add(0, 0, 1, wxEXPAND, 0); + if (m_buttonNegative){ Add((wxWindow*)m_buttonNegative, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, 3); } - + if (m_buttonCancel){ Add((wxWindow*)m_buttonCancel, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, 3); // Cancel or help should be default // m_buttonCancel->SetDefaultButton(); } - + if (m_buttonApply) Add((wxWindow*)m_buttonApply, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, 3); - + if (m_buttonAffirmative) Add((wxWindow*)m_buttonAffirmative, 0, wxALIGN_CENTRE | wxLEFT, 6); #else @@ -1767,31 +1783,33 @@ void wxStdDialogButtonSizer::Finalise() // Windows style Add(0, 0, 0, wxLEFT, 9); if (m_buttonHelp) - Add((wxWindow*)m_buttonHelp, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonHelp->ConvertDialogToPixels(wxSize(4, 0)).x); - + Add((wxWindow*)m_buttonHelp, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonHelp->ConvertDialogToPixels(wxSize(4, 0)).x); + // extra whitespace between help and cancel/ok buttons - Add(0, 0, 1, wxEXPAND, 0); + Add(0, 0, 1, wxEXPAND, 0); if (m_buttonApply) Add((wxWindow*)m_buttonApply, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonApply->ConvertDialogToPixels(wxSize(4, 0)).x); - + if (m_buttonAffirmative){ Add((wxWindow*)m_buttonAffirmative, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonAffirmative->ConvertDialogToPixels(wxSize(4, 0)).x); } - + if (m_buttonNegative){ Add((wxWindow*)m_buttonNegative, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonNegative->ConvertDialogToPixels(wxSize(4, 0)).x); } - + if (m_buttonCancel){ Add((wxWindow*)m_buttonCancel, 0, wxALIGN_CENTRE | wxLEFT, m_buttonCancel->ConvertDialogToPixels(wxSize(4, 0)).x); // Cancel or help should be default // m_buttonCancel->SetDefaultButton(); } - + #endif } +#endif // wxUSE_BUTTON + #if WXWIN_COMPATIBILITY_2_4 // ----------------------------------------------------------------------------