X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0396d31b576ce6bc9441e42293dfb0c26130eac7..dab61ed75fbb71b1fb3aab86a56f2f1a6b5d1e50:/src/generic/treectlg.cpp diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index 2e88883895..c1cd97fdfb 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -45,11 +45,6 @@ #include "wx/mac/private.h" #endif -#ifdef __WXGTK20__ - #include "wx/gtk/private.h" - #include "wx/gtk/win_gtk.h" -#endif - // ----------------------------------------------------------------------------- // array types // ----------------------------------------------------------------------------- @@ -759,13 +754,6 @@ void wxGenericTreeCtrl::Init() m_indent = 15; m_spacing = 18; -#ifdef __WXMAC__ - // OS X sel item highlight color differs from text highlight color, which is - // what wxSYS_COLOUR_HIGHLIGHT returns. - RGBColor hilight; - GetThemeBrushAsColor(kThemeBrushAlternatePrimaryHighlightColor, 32, true, &hilight); - m_hilightBrush = new wxBrush( wxColour(hilight.red, hilight.green, hilight.blue ), wxSOLID ); -#else m_hilightBrush = new wxBrush ( wxSystemSettings::GetColour @@ -774,14 +762,7 @@ void wxGenericTreeCtrl::Init() ), wxSOLID ); -#endif -#ifdef __WXMAC__ - // on Mac, this color also differs from the wxSYS_COLOUR_BTNSHADOW, enough to be noticable. - // I don't know if BTNSHADOW is appropriate in other contexts, so I'm just changing it here. - GetThemeBrushAsColor(kThemeBrushSecondaryHighlightColor, 32, true, &hilight); - m_hilightUnfocusedBrush = new wxBrush( wxColour(hilight.red, hilight.green, hilight.blue ), wxSOLID ); -#else m_hilightUnfocusedBrush = new wxBrush ( wxSystemSettings::GetColour @@ -790,7 +771,7 @@ void wxGenericTreeCtrl::Init() ), wxSOLID ); -#endif + m_imageListButtons = NULL; m_ownsImageListButtons = false; @@ -2241,7 +2222,7 @@ void wxGenericTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc) x=0; GetVirtualSize(&w, &h); wxRect rect( x, item->GetY()+offset, w, total_h-offset); -#ifndef __WXGTK20__ +#if !defined(__WXGTK20__) && !defined(__WXMAC__) dc.DrawRectangle(rect); #else if (!item->IsSelected()) @@ -2250,25 +2231,12 @@ void wxGenericTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc) } else { - CalcScrolledPosition( rect.x, rect.y, &rect.x, &rect.y ); - - gtk_paint_flat_box( m_widget->style, - GTK_PIZZA(m_wxwindow)->bin_window, - GTK_STATE_SELECTED, - GTK_SHADOW_NONE, - NULL, - m_wxwindow, - "cell_even", - rect.x, rect.y, rect.width, rect.height ); - + int flags = wxCONTROL_SELECTED; + if (m_hasFocus) + flags |= wxCONTROL_FOCUSED; if ((item == m_current) && (m_hasFocus)) - gtk_paint_focus( m_widget->style, - GTK_PIZZA(m_wxwindow)->bin_window, - GTK_STATE_SELECTED, - NULL, - m_wxwindow, - "treeview", - rect.x, rect.y, rect.width, rect.height ); + flags |= wxCONTROL_CURRENT; + wxRendererNative::Get().DrawItemSelectionRect( this, dc, rect, flags ); } #endif } @@ -2281,31 +2249,18 @@ void wxGenericTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc) // background colour. wxRect rect( item->GetX() + image_w - 2, item->GetY()+offset, item->GetWidth() - image_w + 2, total_h-offset ); -#ifndef __WXGTK20__ +#if !defined(__WXGTK20__) && !defined(__WXMAC__) dc.DrawRectangle( rect ); #else - CalcScrolledPosition( rect.x, rect.y, &rect.x, &rect.y ); rect.x -= 1; rect.width += 2; - gtk_paint_flat_box( m_widget->style, - GTK_PIZZA(m_wxwindow)->bin_window, - GTK_STATE_SELECTED, - GTK_SHADOW_NONE, - NULL, - m_wxwindow, - "cell_even", - rect.x, rect.y, rect.width, rect.height ); - + int flags = wxCONTROL_SELECTED; + if (m_hasFocus) + flags |= wxCONTROL_FOCUSED; if ((item == m_current) && (m_hasFocus)) - gtk_paint_focus( m_widget->style, - GTK_PIZZA(m_wxwindow)->bin_window, - GTK_STATE_SELECTED, - NULL, - m_wxwindow, - "treeview", - rect.x, rect.y, rect.width, rect.height ); - + flags |= wxCONTROL_CURRENT; + wxRendererNative::Get().DrawItemSelectionRect( this, dc, rect, flags ); #endif } // On GTK+ 2, drawing a 'normal' background is wrong for themes that @@ -2315,7 +2270,7 @@ void wxGenericTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc) { wxRect rect( item->GetX()-2, item->GetY()+offset, item->GetWidth()+2, total_h-offset ); -#ifndef __WXGTK20__ +#if !defined(__WXGTK20__) && !defined(__WXMAC__) dc.DrawRectangle( rect ); #else if ( attr && attr->HasBackgroundColour() ) @@ -2324,27 +2279,15 @@ void wxGenericTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc) } else { - CalcScrolledPosition( rect.x, rect.y, &rect.x, &rect.y ); rect.x -= 1; rect.width += 2; - - gtk_paint_flat_box( m_widget->style, - GTK_PIZZA(m_wxwindow)->bin_window, - GTK_STATE_SELECTED, - GTK_SHADOW_NONE, - NULL, - m_wxwindow, - "cell_even", - rect.x, rect.y, rect.width, rect.height ); - + + int flags = wxCONTROL_SELECTED; + if (m_hasFocus) + flags |= wxCONTROL_FOCUSED; if ((item == m_current) && (m_hasFocus)) - gtk_paint_focus( m_widget->style, - GTK_PIZZA(m_wxwindow)->bin_window, - GTK_STATE_SELECTED, - NULL, - m_wxwindow, - "treeview", - rect.x, rect.y, rect.width, rect.height ); + flags |= wxCONTROL_CURRENT; + wxRendererNative::Get().DrawItemSelectionRect( this, dc, rect, flags ); } #endif } @@ -3704,4 +3647,14 @@ void wxGenericTreeCtrl::DoDirtyProcessing() AdjustMyScrollbars(); } +wxSize wxGenericTreeCtrl::DoGetBestSize() const +{ + wxSize size = wxTreeCtrlBase::DoGetBestSize(); + + // The generic control seems to have an implicit border + size.IncBy(4, 4); + + return size; +} + #endif // wxUSE_TREECTRL