#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)
#ifdef __WXMAC__
#include "wx/osx/private.h"
+ // for themeing support
+ #include <Carbon/Carbon.h>
#endif
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;
#ifdef __WXMAC__
{
if (m_owner->HasFocus()
-#if !defined(__WXUNIVERSAL__)
+#if !defined(__WXUNIVERSAL__) && wxOSX_USE_CARBON
&& IsControlActive( (ControlRef)m_owner->GetHandle() )
#endif
)
{
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
)
void wxListHeaderWindow::Init()
{
- m_currentCursor = (wxCursor *) NULL;
+ m_currentCursor = NULL;
m_isDragging = false;
m_dirty = false;
}
{
Init();
- m_owner = (wxListMainWindow *) NULL;
- m_resizeCursor = (wxCursor *) NULL;
+ m_owner = NULL;
+ m_resizeCursor = NULL;
}
wxListHeaderWindow::wxListHeaderWindow( wxWindow *win,
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()
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;
Init();
m_highlightBrush =
- m_highlightUnfocusedBrush = (wxBrush *) NULL;
+ m_highlightUnfocusedBrush = NULL;
}
wxListMainWindow::wxListMainWindow( wxWindow *parent,
}
}
-void wxListMainWindow::OnChildFocus(wxChildFocusEvent& event)
+void wxListMainWindow::OnChildFocus(wxChildFocusEvent& WXUNUSED(event))
{
- // do nothing
+ // Do nothing here. This prevents the default handler in wxScrolledWindow
+ // from needlessly scrolling the window when the edit control is
+ // dismissed. See ticket #9563.
}
void wxListMainWindow::SendNotify( size_t line,
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
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;
}
{
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;
if ( GetWindowVariant() == wxWINDOW_VARIANT_NORMAL )
{
wxFont font;
+#if wxOSX_USE_ATSU_TEXT
font.MacCreateFromThemeFont( kThemeViewsFont );
+#else
+ font.MacCreateFromUIFont( kCTFontViewsFontType );
+#endif
SetFont( font );
}
#endif
if (m_headerWin)
{
wxFont font;
+#if wxOSX_USE_ATSU_TEXT
font.MacCreateFromThemeFont( kThemeSmallSystemFont );
+#else
+ font.MacCreateFromUIFont( kCTFontSystemFontType );
+#endif
m_headerWin->SetFont( font );
CalculateAndSetHeaderHeight();
}
else if (which == wxIMAGE_LIST_STATE)
return m_imageListState;
- return (wxImageList *) NULL;
+ return NULL;
}
void wxGenericListCtrl::SetImageList( wxImageList *imageList, int which )
#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;