]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/treectrl.cpp
BIG glitch.
[wxWidgets.git] / src / generic / treectrl.cpp
index 8c9e480741aa51428a60977d55f42af032443e0c..4602d32e8300527033b11c418814adb40db4305e 100644 (file)
@@ -1036,6 +1036,7 @@ void wxTreeCtrl::SetImageList(wxImageList *imageList)
    for(int i = 0; i < n ; i++)
    {
       m_imageListNormal->GetSize(i, width, height);
+      height += height/5;  //20% extra spacing
       if(height > m_lineHeight) m_lineHeight = height;
    }
 }
@@ -1110,13 +1111,16 @@ void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
     }
 
     int total_h = (image_h > text_h) ? image_h : text_h;
-    dc.DrawRectangle( item->GetX()-2, item->GetY()-2, image_w+text_w+4, total_h+4 );
+    if(m_lineHeight > total_h) total_h = m_lineHeight;
+    
+    dc.DrawRectangle( item->GetX()-2, item->GetY(), image_w+text_w+2, total_h );
 
     if ((item->IsExpanded()) && (item->GetSelectedImage() != -1))
     {
         dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, total_h );
         m_imageListNormal->Draw( item->GetSelectedImage(), dc,
-                                 item->GetX(), item->GetY()-1,
+                                 item->GetX(),
+                                 item->GetY() +((total_h > image_h)?((total_h-image_h)/2):0),
                                  wxIMAGELIST_DRAW_TRANSPARENT );
         dc.DestroyClippingRegion();
     }
@@ -1124,14 +1128,15 @@ void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
     {
         dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, total_h );
         m_imageListNormal->Draw( item->GetImage(), dc,
-                                 item->GetX(), item->GetY()-1,
+                                 item->GetX(),
+                                 item->GetY() +((total_h > image_h)?((total_h-image_h)/2):0),
                                  wxIMAGELIST_DRAW_TRANSPARENT );
         dc.DestroyClippingRegion();
     }
 
     dc.SetBackgroundMode(wxTRANSPARENT);
     dc.DrawText( item->GetText(), image_w + item->GetX(), item->GetY()
-                 + (total_h > text_h)? (total_h - text_h)/2 : 0);
+                 + ((total_h > text_h) ? (total_h - text_h)/2 : 0));
 
     // restore normal font for bold items
     if (fontOld.Ok())
@@ -1145,7 +1150,7 @@ void wxTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level, int &
     int horizX = level*m_indent;
 
     item->SetX( horizX+33 );
-    item->SetY( y-m_lineHeight/3 );
+    item->SetY( y-m_lineHeight/2 );
     item->SetHeight( m_lineHeight );
 
     item->SetCross( horizX+15, y );
@@ -1519,7 +1524,7 @@ void wxTreeCtrl::CalculateLevel( wxGenericTreeItem *item, wxDC &dc, int level, i
     int horizX = level*m_indent;
 
     item->SetX( horizX+33 );
-    item->SetY( y-m_lineHeight/3-2 );
+    item->SetY( y-m_lineHeight/2 );
     item->SetHeight( m_lineHeight );
 
     if ( !item->IsExpanded() )