X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c6f4913a7636367c7f3b677e3a30bbb4e50604e9..0926b2fcc257c89b29c3c0d0981566037e0fc903:/src/generic/treectlg.cpp diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index 0b23a9cd09..1994629da8 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -55,6 +55,54 @@ static const int NO_IMAGE = -1; #define PIXELS_PER_UNIT 10 +// ---------------------------------------------------------------------------- +// Aqua arrows +// ---------------------------------------------------------------------------- + + /* XPM */ + static char *aqua_arrow_right[] = { + /* columns rows colors chars-per-pixel */ + "13 11 4 1", + " c None", + "b c #C0C0C0", + "c c #707070", + "d c #A0A0A0", + /* pixels */ + " b ", + " ddb ", + " cccdb ", + " cccccd ", + " ccccccdb ", + " ccccccccd", + " ccccccdb ", + " cccccb ", + " cccdb ", + " ddb ", + " b " + }; + + /* XPM */ + static char *aqua_arrow_down[] = { + /* columns rows colors chars-per-pixel */ + "13 11 4 1", + " c None", + "b c #C0C0C0", + "c c #707070", + "d c #A0A0A0", + /* pixels */ + " ", + " ", + " bdcccccccdb ", + " dcccccccd ", + " bcccccccb ", + " dcccccd ", + " bcccccb ", + " bcccd ", + " dcd ", + " bcb ", + " d " + }; + // ----------------------------------------------------------------------------- // private classes // ----------------------------------------------------------------------------- @@ -679,6 +727,16 @@ bool wxGenericTreeCtrl::Create(wxWindow *parent, style |= wxTR_AQUA_BUTTONS; #endif + if (style & wxTR_AQUA_BUTTONS) + { + m_arrowRight = new wxBitmap( aqua_arrow_right ); + m_arrowDown = new wxBitmap( aqua_arrow_down ); + } + else + { + m_arrowRight = NULL; + m_arrowDown = NULL; + } wxScrolledWindow::Create( parent, id, pos, size, style|wxHSCROLL|wxVSCROLL, name ); @@ -708,6 +766,9 @@ wxGenericTreeCtrl::~wxGenericTreeCtrl() { delete m_hilightBrush; delete m_hilightUnfocusedBrush; + + if (m_arrowRight) delete m_arrowRight; + if (m_arrowDown) delete m_arrowDown; DeleteAllItems(); @@ -1140,6 +1201,11 @@ wxTreeItemId wxGenericTreeCtrl::AddRoot(const wxString& text, m_anchor = new wxGenericTreeItem((wxGenericTreeItem *)NULL, text, image, selImage, data); + if ( data != NULL ) + { + data->m_pItem = (long) m_anchor; + } + if (HasFlag(wxTR_HIDE_ROOT)) { // if root is hidden, make sure we can navigate @@ -1147,10 +1213,6 @@ wxTreeItemId wxGenericTreeCtrl::AddRoot(const wxString& text, m_anchor->SetHasPlus(); Expand(m_anchor); } - if ( data != NULL ) - { - data->m_pItem = (long) m_anchor; - } if (!HasFlag(wxTR_MULTIPLE)) { @@ -1416,7 +1478,13 @@ void wxGenericTreeCtrl::UnselectAllChildren(wxGenericTreeItem *item) void wxGenericTreeCtrl::UnselectAll() { - UnselectAllChildren((wxGenericTreeItem*) GetRootItem().m_pItem); + wxTreeItemId rootItem = GetRootItem(); + + // the tree might not have the root item at all + if ( rootItem ) + { + UnselectAllChildren((wxGenericTreeItem*) rootItem.m_pItem); + } } // Recursive function ! @@ -2048,35 +2116,18 @@ void wxGenericTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level { // draw the twisty button here - wxPoint button[3]; - dc.SetBrush(*m_hilightBrush); - if (HasFlag(wxTR_AQUA_BUTTONS)) { - dc.SetPen(*wxTRANSPARENT_PEN); - if (item->IsExpanded()) - { - button[0].x = x-6; - button[0].y = y_mid-2; - button[1].x = x+6; - button[1].y = y_mid-2; - button[2].x = x; - button[2].y = y_mid+7; - } + dc.DrawBitmap( *m_arrowDown, x-5, y_mid-6, TRUE ); else - { - button[0].y = y_mid-6; - button[0].x = x-2; - button[1].y = y_mid+6; - button[1].x = x-2; - button[2].y = y_mid; - button[2].x = x+7; - } + dc.DrawBitmap( *m_arrowRight, x-5, y_mid-6, TRUE ); } else { + dc.SetBrush(*m_hilightBrush); dc.SetPen(*wxBLACK_PEN); + wxPoint button[3]; if (item->IsExpanded()) { @@ -2096,10 +2147,9 @@ void wxGenericTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level button[2].y = y_mid; button[2].x = x+3; } + dc.DrawPolygon(3, button); + dc.SetPen(m_dottedPen); } - dc.DrawPolygon(3, button); - - dc.SetPen(m_dottedPen); } else // if (HasFlag(wxTR_HAS_BUTTONS)) {