X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3a5910cbe95603698b984cc6d8d41bbe7e2f89d9..a83b5b74c365705144f9359d4527e4b2d073f569:/src/common/sizer.cpp diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp index e22859979b..a91079626d 100644 --- a/src/common/sizer.cpp +++ b/src/common/sizer.cpp @@ -388,7 +388,14 @@ void wxSizerItem::DeleteWindows() break; case Item_Window: + //We are deleting the window from this sizer - normally + //the window destroys the sizer associated with it, + //which might destroy this, which we don't want + m_window->SetContainingSizer(NULL); m_window->Destroy(); + //Putting this after the switch will result in a spacer + //not being deleted properly on destruction + m_kind = Item_None; break; case Item_Sizer: @@ -400,7 +407,6 @@ void wxSizerItem::DeleteWindows() wxFAIL_MSG( _T("unexpected wxSizerItem::m_kind") ); } - m_kind = Item_None; } void wxSizerItem::Show( bool show ) @@ -1862,10 +1868,31 @@ void wxStdDialogButtonSizer::Realize() if (m_buttonAffirmative) Add((wxWindow*)m_buttonAffirmative, 0, wxALIGN_CENTRE | wxLEFT, 6); +#elif defined(__WXMSW__) + // Windows + + // right-justify buttons + Add(0, 0, 1, wxEXPAND, 0); + + if (m_buttonAffirmative){ + Add((wxWindow*)m_buttonAffirmative, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonAffirmative->ConvertDialogToPixels(wxSize(2, 0)).x); + } + + if (m_buttonNegative){ + Add((wxWindow*)m_buttonNegative, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonNegative->ConvertDialogToPixels(wxSize(2, 0)).x); + } + + if (m_buttonCancel){ + Add((wxWindow*)m_buttonCancel, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonCancel->ConvertDialogToPixels(wxSize(2, 0)).x); + } + if (m_buttonApply) + Add((wxWindow*)m_buttonApply, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonApply->ConvertDialogToPixels(wxSize(2, 0)).x); + + if (m_buttonHelp) + Add((wxWindow*)m_buttonHelp, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonHelp->ConvertDialogToPixels(wxSize(2, 0)).x); #else - // do the same thing for GTK1 and Windows platforms - // and assume any platform not accounted for here will use - // Windows style + // GTK+1 and any other platform + // Add(0, 0, 0, wxLEFT, 5); // Not sure what this was for but it unbalances the dialog if (m_buttonHelp) Add((wxWindow*)m_buttonHelp, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonHelp->ConvertDialogToPixels(wxSize(4, 0)).x);