X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/78806f0c419475ec96eaaf9d657c689c64030681..055400c94e55d93025f64bc79c613c444261406b:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 8b077662cd..5283ba9954 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -25,7 +25,7 @@ #include "wx/listctrl.h" -#if ((!defined(__WXMSW__) && !defined(__WXMAC__)) || defined(__WXUNIVERSAL__)) +#if ((!defined(__WXMSW__) && !(defined(__WXMAC__) && wxOSX_USE_CARBON)) || defined(__WXUNIVERSAL__)) // if we have a native version, its implementation file does all this IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxListView, wxListCtrl) @@ -51,6 +51,8 @@ #ifdef __WXMAC__ #include "wx/osx/private.h" + // for themeing support + #include #endif @@ -616,7 +618,7 @@ public: void OnPaint( wxPaintEvent &event ); void OnChildFocus(wxChildFocusEvent& event); - + void DrawImage( int index, wxDC *dc, int x, int y ); void GetImageSize( int index, int &width, int &height ) const; int GetTextLength( const wxString &s ) const; @@ -1412,7 +1414,7 @@ bool wxListLineData::SetAttributes(wxDC *dc, #ifdef __WXMAC__ { if (m_owner->HasFocus() -#if !defined(__WXUNIVERSAL__) +#if !defined(__WXUNIVERSAL__) && wxOSX_USE_CARBON && IsControlActive( (ControlRef)m_owner->GetHandle() ) #endif ) @@ -1476,7 +1478,7 @@ void wxListLineData::Draw( wxDC *dc ) { int flags = wxCONTROL_SELECTED; if (m_owner->HasFocus() -#if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) +#if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) && wxOSX_USE_CARBON && IsControlActive( (ControlRef)m_owner->GetHandle() ) #endif ) @@ -1698,7 +1700,7 @@ END_EVENT_TABLE() void wxListHeaderWindow::Init() { - m_currentCursor = (wxCursor *) NULL; + m_currentCursor = NULL; m_isDragging = false; m_dirty = false; } @@ -1707,8 +1709,8 @@ wxListHeaderWindow::wxListHeaderWindow() { Init(); - m_owner = (wxListMainWindow *) NULL; - m_resizeCursor = (wxCursor *) NULL; + m_owner = NULL; + m_resizeCursor = NULL; } wxListHeaderWindow::wxListHeaderWindow( wxWindow *win, @@ -1897,6 +1899,19 @@ void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) x += wCol; } + + // Fill in what's missing to the right of the columns, otherwise we will + // leave an unpainted area when columns are removed (and it looks better) + if ( x < w ) + { + wxRendererNative::Get().DrawHeaderButton + ( + this, + dc, + wxRect(x, HEADER_OFFSET_Y, w - x, h), + 0 + ); + } } void wxListHeaderWindow::DrawCurrent() @@ -2262,8 +2277,8 @@ void wxListMainWindow::Init() m_headerWidth = m_lineHeight = 0; - m_small_image_list = (wxImageList *) NULL; - m_normal_image_list = (wxImageList *) NULL; + m_small_image_list = NULL; + m_normal_image_list = NULL; m_small_spacing = 30; m_normal_spacing = 40; @@ -2287,7 +2302,7 @@ wxListMainWindow::wxListMainWindow() Init(); m_highlightBrush = - m_highlightUnfocusedBrush = (wxBrush *) NULL; + m_highlightUnfocusedBrush = NULL; } wxListMainWindow::wxListMainWindow( wxWindow *parent, @@ -4866,12 +4881,7 @@ void wxListMainWindow::SortItems( wxListCtrlCompare fn, long data ) void wxListMainWindow::OnScroll(wxScrollWinEvent& event) { - // FIXME -#if ( defined(__WXGTK__) || defined(__WXMAC__) ) && !defined(__WXUNIVERSAL__) - wxScrolledCanvas::OnScroll(event); -#else HandleOnScroll( event ); -#endif // update our idea of which lines are shown when we redraw the window the // next time @@ -4948,16 +4958,16 @@ END_EVENT_TABLE() wxGenericListCtrl::wxGenericListCtrl() { - m_imageListNormal = (wxImageList *) NULL; - m_imageListSmall = (wxImageList *) NULL; - m_imageListState = (wxImageList *) NULL; + m_imageListNormal = NULL; + m_imageListSmall = NULL; + m_imageListState = NULL; m_ownsImageListNormal = m_ownsImageListSmall = m_ownsImageListState = false; - m_mainWin = (wxListMainWindow*) NULL; - m_headerWin = (wxListHeaderWindow*) NULL; + m_mainWin = NULL; + m_headerWin = NULL; m_headerHeight = 0; } @@ -5020,20 +5030,19 @@ bool wxGenericListCtrl::Create(wxWindow *parent, { m_imageListNormal = m_imageListSmall = - m_imageListState = (wxImageList *) NULL; + m_imageListState = NULL; m_ownsImageListNormal = m_ownsImageListSmall = m_ownsImageListState = false; - m_mainWin = (wxListMainWindow*) NULL; - m_headerWin = (wxListHeaderWindow*) NULL; + m_mainWin = NULL; + m_headerWin = NULL; m_headerHeight = 0; - if ( !(style & wxLC_MASK_TYPE) ) - { - style = style | wxLC_LIST; - } + // just like in other ports, an assert will fail if the user doesn't give any type style: + wxASSERT_MSG( (style & wxLC_MASK_TYPE), + _T("wxListCtrl style should have exactly one mode bit set") ); if ( !wxControl::Create( parent, id, pos, size, style, validator, name ) ) return false; @@ -5051,7 +5060,11 @@ bool wxGenericListCtrl::Create(wxWindow *parent, if ( GetWindowVariant() == wxWINDOW_VARIANT_NORMAL ) { wxFont font; +#if wxOSX_USE_ATSU_TEXT font.MacCreateFromThemeFont( kThemeViewsFont ); +#else + font.MacCreateFromUIFont( kCTFontViewsFontType ); +#endif SetFont( font ); } #endif @@ -5064,7 +5077,11 @@ bool wxGenericListCtrl::Create(wxWindow *parent, if (m_headerWin) { wxFont font; +#if wxOSX_USE_ATSU_TEXT font.MacCreateFromThemeFont( kThemeSmallSystemFont ); +#else + font.MacCreateFromUIFont( kCTFontSystemFontType ); +#endif m_headerWin->SetFont( font ); CalculateAndSetHeaderHeight(); } @@ -5429,7 +5446,7 @@ wxImageList *wxGenericListCtrl::GetImageList(int which) const else if (which == wxIMAGE_LIST_STATE) return m_imageListState; - return (wxImageList *) NULL; + return NULL; } void wxGenericListCtrl::SetImageList( wxImageList *imageList, int which ) @@ -5746,7 +5763,7 @@ wxGenericListCtrl::GetClassDefaultAttributes(wxWindowVariant variant) #else wxUnusedVar(variant); wxVisualAttributes attr; - attr.colFg = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); + attr.colFg = wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOXTEXT); attr.colBg = wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX); attr.font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); return attr;