X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c7789014106c9269b0f4ecc1a3071b14f351d3f..7ddb15416407390de67cc26b04e91ea99a521f57:/src/generic/collpaneg.cpp diff --git a/src/generic/collpaneg.cpp b/src/generic/collpaneg.cpp index 5a971e99a9..b04b142f51 100644 --- a/src/generic/collpaneg.cpp +++ b/src/generic/collpaneg.cpp @@ -16,6 +16,11 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + #include "wx/defs.h" #if wxUSE_COLLPANE && wxUSE_BUTTON && wxUSE_STATLINE @@ -45,23 +50,17 @@ const char wxCollapsiblePaneNameStr[] = "collapsiblePane"; // wxGenericCollapsiblePane //----------------------------------------------------------------------------- -wxDEFINE_EVENT( wxEVT_COMMAND_COLLPANE_CHANGED, wxCollapsiblePaneEvent ) +wxDEFINE_EVENT( wxEVT_COLLAPSIBLEPANE_CHANGED, wxCollapsiblePaneEvent ); IMPLEMENT_DYNAMIC_CLASS(wxGenericCollapsiblePane, wxControl) IMPLEMENT_DYNAMIC_CLASS(wxCollapsiblePaneEvent, wxCommandEvent) BEGIN_EVENT_TABLE(wxGenericCollapsiblePane, wxControl) EVT_BUTTON(wxID_ANY, wxGenericCollapsiblePane::OnButton) EVT_SIZE(wxGenericCollapsiblePane::OnSize) - - WX_EVENT_TABLE_CONTROL_CONTAINER(wxGenericCollapsiblePane) END_EVENT_TABLE() -WX_DELEGATE_TO_CONTROL_CONTAINER(wxGenericCollapsiblePane, wxControl) - void wxGenericCollapsiblePane::Init() { - WX_INIT_CONTROL_CONTAINER(); - m_pButton = NULL; m_pPane = NULL; m_pStaticLine = NULL; @@ -82,24 +81,22 @@ bool wxGenericCollapsiblePane::Create(wxWindow *parent, m_strLabel = label; + // sizer containing the expand button and possibly a static line + m_sz = new wxBoxSizer(wxHORIZONTAL); + #if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) - // on Mac we use the disclosure triangle - // we need a light gray line above and below, lets approximate with the frame + // on Mac we use the special disclosure triangle button m_pStaticLine = NULL; - m_pButton = new wxDisclosureTriangle( this, wxID_ANY, GetBtnLabel(), - wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER ); - m_pButton->SetBackgroundColour( wxColour( 221, 226, 239 ) ); - m_sz = new wxBoxSizer(wxHORIZONTAL); - // m_sz->Add(4,4); where shall we put it? - m_sz->Add( m_pButton, 1); + m_pButton = new wxDisclosureTriangle(this, wxID_ANY, GetBtnLabel()); + m_sz->Add(m_pButton); #else // create children and lay them out using a wxBoxSizer // (so that we automatically get RTL features) m_pButton = new wxButton(this, wxID_ANY, GetBtnLabel(), wxPoint(0, 0), wxDefaultSize, wxBU_EXACTFIT); m_pStaticLine = new wxStaticLine(this, wxID_ANY); + // on other platforms we put the static line and the button horizontally - m_sz = new wxBoxSizer(wxHORIZONTAL); m_sz->Add(m_pButton, 0, wxLEFT|wxTOP|wxBOTTOM, GetBorder()); m_sz->Add(m_pStaticLine, 1, wxALIGN_CENTER|wxLEFT|wxRIGHT, GetBorder()); #endif @@ -112,7 +109,7 @@ bool wxGenericCollapsiblePane::Create(wxWindow *parent, // do not set sz as our sizers since we handle the pane window without using sizers m_pPane = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, - wxTAB_TRAVERSAL|wxNO_BORDER); + wxTAB_TRAVERSAL|wxNO_BORDER, wxT("wxCollapsiblePanePane") ); // start as collapsed: m_pPane->Hide(); @@ -160,12 +157,12 @@ wxString wxGenericCollapsiblePane::GetBtnLabel() const void wxGenericCollapsiblePane::OnStateChange(const wxSize& sz) { // minimal size has priority over the best size so set here our min size - SetMinSize(sz); +// SetMinSize(sz); SetSize(sz); if (this->HasFlag(wxCP_NO_TLW_RESIZE)) { - // the user asked to explicitely handle the resizing itself... + // the user asked to explicitly handle the resizing itself... return; } @@ -193,6 +190,8 @@ void wxGenericCollapsiblePane::Collapse(bool collapse) if ( IsCollapsed() == collapse ) return; + InvalidateBestSize(); + // update our state m_pPane->Show(!collapse);