]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/treectlg.cpp
Core wxPython (non-contrib) now fully works with Unicode!
[wxWidgets.git] / src / generic / treectlg.cpp
index 89e0197b8bc47836cce9b69132c36e4baedf775c..2b2808ae7b2ab52883ff58795cc5b7e20b79b372 100644 (file)
@@ -741,9 +741,9 @@ bool wxGenericTreeCtrl::Create(wxWindow *parent,
     wxScrolledWindow::Create( parent, id, pos, size,
                               style|wxHSCROLL|wxVSCROLL, name );
 
-        // If the tree display has no buttons, but does have
-        // connecting lines, we can use a narrower layout.
-        // It may not be a good idea to force this...
+    // If the tree display has no buttons, but does have
+    // connecting lines, we can use a narrower layout.
+    // It may not be a good idea to force this...
     if (!HasButtons() && !HasFlag(wxTR_NO_LINES))
     {
         m_indent= 10;
@@ -754,7 +754,8 @@ bool wxGenericTreeCtrl::Create(wxWindow *parent,
     SetValidator( validator );
 #endif
 
-    SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_LISTBOX ) );
+    SetForegroundColour( wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT) );
+    SetBackgroundColour( wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX) );
 
 //  m_dottedPen = wxPen( "grey", 0, wxDOT );  too slow under XFree86
     m_dottedPen = wxPen( wxT("grey"), 0, 0 );
@@ -2061,7 +2062,7 @@ void wxGenericTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level
             if (attr && attr->HasTextColour())
                 colText = attr->GetTextColour();
             else
-                colText = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
+                colText = GetForegroundColour();
         }
 
         // prepare to draw
@@ -2895,7 +2896,10 @@ void wxGenericTreeCtrl::CalculateSize( wxGenericTreeItem *item, wxDC &dc )
     wxCoord text_w = 0;
     wxCoord text_h = 0;
 
-    if (item->IsBold())
+    wxTreeItemAttr *attr = item->GetAttributes();
+    if ( attr && attr->HasFont() )
+        dc.SetFont(attr->GetFont());
+    else if ( item->IsBold() )
         dc.SetFont(m_boldFont);
 
     dc.GetTextExtent( item->GetText(), &text_w, &text_h );
@@ -2992,17 +2996,15 @@ void wxGenericTreeCtrl::RefreshSubtree(wxGenericTreeItem *item)
     wxClientDC dc(this);
     PrepareDC(dc);
 
-    int cw = 0;
-    int ch = 0;
-    GetClientSize( &cw, &ch );
+    wxRect client = GetClientRect();
 
     wxRect rect;
-    rect.x = dc.LogicalToDeviceX( 0 );
-    rect.width = cw;
-    rect.y = dc.LogicalToDeviceY( item->GetY() );
-    rect.height = ch;
+    rect.x = dc.LogicalToDeviceX(-client.x);
+    rect.width = client.width;
+    rect.y = dc.LogicalToDeviceY(-client.y + item->GetY());
+    rect.height = client.height;
 
-    Refresh( TRUE, &rect );
+    Refresh(TRUE, &rect);
 
     AdjustMyScrollbars();
 }
@@ -3012,19 +3014,17 @@ void wxGenericTreeCtrl::RefreshLine( wxGenericTreeItem *item )
     if (m_dirty) return;
 
     wxClientDC dc(this);
-    PrepareDC( dc );
+    PrepareDC(dc);
 
-    int cw = 0;
-    int ch = 0;
-    GetClientSize( &cw, &ch );
+    wxRect client = GetClientRect();
 
     wxRect rect;
-    rect.x = dc.LogicalToDeviceX( 0 );
-    rect.y = dc.LogicalToDeviceY( item->GetY() );
-    rect.width = cw;
+    rect.x = dc.LogicalToDeviceX(-client.x);
+    rect.y = dc.LogicalToDeviceY(-client.y + item->GetY());
+    rect.width = client.width;
     rect.height = GetLineHeight(item); //dc.GetCharHeight() + 6;
 
-    Refresh( TRUE, &rect );
+    Refresh(TRUE, &rect);
 }
 
 void wxGenericTreeCtrl::RefreshSelected()