]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/treectlg.cpp
compilation fix
[wxWidgets.git] / src / generic / treectlg.cpp
index 0b23a9cd099b7ba0603327ba41cef08f039f8b3b..89e0197b8bc47836cce9b69132c36e4baedf775c 100644 (file)
@@ -55,6 +55,54 @@ static const int NO_IMAGE = -1;
 
 #define PIXELS_PER_UNIT 10
 
+// ----------------------------------------------------------------------------
+// Aqua arrows
+// ----------------------------------------------------------------------------
+
+/* XPM */
+static const 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 const 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
 // -----------------------------------------------------------------------------
@@ -320,7 +368,7 @@ void wxTreeTextCtrl::OnChar( wxKeyEvent &event )
 
         if (!wxPendingDelete.Member(this))
             wxPendingDelete.Append(this);
-            
+
         m_finished = TRUE;
         m_owner->SetFocus(); // This doesn't work. TODO.
 
@@ -376,7 +424,7 @@ void wxTreeTextCtrl::OnKillFocus( wxFocusEvent &event )
 
     (*m_accept) = TRUE;
     (*m_res) = GetValue();
-    
+
     if ((*m_res) != m_startValue)
         m_owner->OnRenameAccept();
 }
@@ -621,7 +669,7 @@ void wxGenericTreeCtrl::Init()
 
     m_hilightBrush = new wxBrush
                          (
-                            wxSystemSettings::GetSystemColour
+                            wxSystemSettings::GetColour
                             (
                                 wxSYS_COLOUR_HIGHLIGHT
                             ),
@@ -630,7 +678,7 @@ void wxGenericTreeCtrl::Init()
 
     m_hilightUnfocusedBrush = new wxBrush
                               (
-                                 wxSystemSettings::GetSystemColour
+                                 wxSystemSettings::GetColour
                                  (
                                      wxSYS_COLOUR_BTNSHADOW
                                  ),
@@ -649,7 +697,7 @@ void wxGenericTreeCtrl::Init()
     m_renameTimer = new wxTreeRenameTimer( this );
     m_lastOnSame = FALSE;
 
-    m_normalFont = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT );
+    m_normalFont = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
     m_boldFont = wxFont( m_normalFont.GetPointSize(),
                          m_normalFont.GetFamily(),
                          m_normalFont.GetStyle(),
@@ -668,7 +716,7 @@ bool wxGenericTreeCtrl::Create(wxWindow *parent,
 #ifdef __WXMAC__
     int major,minor;
     wxGetOsVersion( &major, &minor );
-    
+
     if (style & wxTR_HAS_BUTTONS) style |= wxTR_MAC_BUTTONS;
     if (style & wxTR_HAS_BUTTONS) style &= ~wxTR_HAS_BUTTONS;
     style &= ~wxTR_LINES_AT_ROOT;
@@ -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 );
@@ -696,7 +754,7 @@ bool wxGenericTreeCtrl::Create(wxWindow *parent,
     SetValidator( validator );
 #endif
 
-    SetBackgroundColour( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_LISTBOX ) );
+    SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_LISTBOX ) );
 
 //  m_dottedPen = wxPen( "grey", 0, wxDOT );  too slow under XFree86
     m_dottedPen = wxPen( wxT("grey"), 0, 0 );
@@ -709,6 +767,9 @@ wxGenericTreeCtrl::~wxGenericTreeCtrl()
     delete m_hilightBrush;
     delete m_hilightUnfocusedBrush;
 
+    if (m_arrowRight) delete m_arrowRight;
+    if (m_arrowDown) delete m_arrowDown;
+
     DeleteAllItems();
 
     delete m_renameTimer;
@@ -728,13 +789,13 @@ size_t wxGenericTreeCtrl::GetCount() const
 
 void wxGenericTreeCtrl::SetIndent(unsigned int indent)
 {
-    m_indent = indent;
+    m_indent = (unsigned short) indent;
     m_dirty = TRUE;
 }
 
 void wxGenericTreeCtrl::SetSpacing(unsigned int spacing)
 {
-    m_spacing = spacing;
+    m_spacing = (unsigned short) spacing;
     m_dirty = TRUE;
 }
 
@@ -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 !
@@ -1985,7 +2053,7 @@ void wxGenericTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level
         wxColour colText;
         if ( item->IsSelected() )
         {
-            colText = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
+            colText = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
         }
         else
         {
@@ -1993,7 +2061,7 @@ void wxGenericTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level
             if (attr && attr->HasTextColour())
                 colText = attr->GetTextColour();
             else
-                colText = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOWTEXT);
+                colText = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
         }
 
         // prepare to draw
@@ -2047,36 +2115,19 @@ void wxGenericTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level
             else if (HasFlag(wxTR_TWIST_BUTTONS))
             {
                 // 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))
             {