// 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
// implementation
// ============================================================================
-const wxChar wxCollapsiblePaneNameStr[] = wxT("collapsiblePane");
+const char wxCollapsiblePaneNameStr[] = "collapsiblePane";
//-----------------------------------------------------------------------------
// wxGenericCollapsiblePane
//-----------------------------------------------------------------------------
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_COLLPANE_CHANGED)
+wxDEFINE_EVENT( wxEVT_COMMAND_COLLPANE_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;
-#ifdef __WXMAC__
- // on Mac we use the disclosure triangle
- // we need a light gray line above and below, lets approximate with the frame
- m_pStaticLine = NULL;
- m_pButton = new wxDisclosureTriangle( this, wxID_ANY, GetBtnLabel(),
- wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER );
- m_pButton->SetBackgroundColour( wxColour( 221, 226, 239 ) );
+ // sizer containing the expand button and possibly a static line
m_sz = new wxBoxSizer(wxHORIZONTAL);
- // m_sz->Add(4,4); where shall we put it?
- m_sz->Add( m_pButton, 1);
+
+#if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__)
+ // on Mac we use the special disclosure triangle button
+ m_pStaticLine = NULL;
+ 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();
{
if (m_pButton)
m_pButton->SetContainingSizer(NULL);
-
+
if (m_pStaticLine)
m_pStaticLine->SetContainingSizer(NULL);
-
+
// our sizer is not deleted automatically since we didn't use SetSizer()!
wxDELETE(m_sz);
}
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;
}
m_pPane->Show(!collapse);
// update button label
-#ifdef __WXMAC__
+#if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__)
m_pButton->SetOpen( !collapse );
#else
// NB: this must be done after updating our "state"