// Author: Francesco Montorsi
// Modified By:
// Created: 8/10/2006
-// Id: $Id$
// Copyright: (c) Francesco Montorsi
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// 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
// 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;
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
// 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();
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;
}
if ( IsCollapsed() == collapse )
return;
+ InvalidateBestSize();
+
// update our state
m_pPane->Show(!collapse);