// private functions
// ----------------------------------------------------------------------------
-static inline GetScrollX(int x)
+static inline int GetScrollX(int x)
{
return (x + GRID_SCROLL_LINE_X - 1) / GRID_SCROLL_LINE_X;
}
-static inline GetScrollY(int y)
+static inline int GetScrollY(int y)
{
return (y + GRID_SCROLL_LINE_Y - 1) / GRID_SCROLL_LINE_Y;
}
// wxGridCellAttr
// ----------------------------------------------------------------------------
+void wxGridCellAttr::Init(wxGridCellAttr *attrDefault)
+{
+ m_nRef = 1;
+
+ m_isReadOnly = Unset;
+
+ m_renderer = NULL;
+ m_editor = NULL;
+
+ m_attrkind = wxGridCellAttr::Cell;
+
+ SetDefAttr(attrDefault);
+}
+
wxGridCellAttr *wxGridCellAttr::Clone() const
{
- wxGridCellAttr *attr = new wxGridCellAttr;
+ wxGridCellAttr *attr = new wxGridCellAttr(m_defGridAttr);
+
if ( HasTextColour() )
attr->SetTextColour(GetTextColour());
if ( HasBackgroundColour() )
attr->SetKind( m_attrkind );
- attr->SetDefAttr(m_defGridAttr);
-
return attr;
}
{
return m_colText;
}
- else if (m_defGridAttr != this)
+ else if (m_defGridAttr && m_defGridAttr != this)
{
return m_defGridAttr->GetTextColour();
}
{
if (HasBackgroundColour())
return m_colBack;
- else if (m_defGridAttr != this)
+ else if (m_defGridAttr && m_defGridAttr != this)
return m_defGridAttr->GetBackgroundColour();
else
{
{
if (HasFont())
return m_font;
- else if (m_defGridAttr != this)
+ else if (m_defGridAttr && m_defGridAttr != this)
return m_defGridAttr->GetFont();
else
{
if ( hAlign ) *hAlign = m_hAlign;
if ( vAlign ) *vAlign = m_vAlign;
}
- else if (m_defGridAttr != this)
+ else if (m_defGridAttr && m_defGridAttr != this)
m_defGridAttr->GetAlignment(hAlign, vAlign);
else
{
if ( !renderer )
{
- if ( this != m_defGridAttr )
+ if (m_defGridAttr && this != m_defGridAttr )
{
// if we still don't have one then use the grid default
// (no need for IncRef() here neither)
if ( !editor )
{
- if ( this != m_defGridAttr )
+ if ( m_defGridAttr && this != m_defGridAttr )
{
// if we still don't have one then use the grid default
// (no need for IncRef() here neither)
m_cellEditCtrlEnabled = FALSE;
- m_defaultCellAttr = new wxGridCellAttr;
- m_defaultCellAttr->SetDefAttr(m_defaultCellAttr);
+ m_defaultCellAttr = new wxGridCellAttr(m_defaultCellAttr);
// Set default cell attributes
m_defaultCellAttr->SetKind(wxGridCellAttr::Default);
m_defaultCellAttr->SetFont(GetFont());
m_defaultCellAttr->SetAlignment(wxALIGN_LEFT, wxALIGN_TOP);
m_defaultCellAttr->SetTextColour(
- wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOWTEXT));
+ wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
m_defaultCellAttr->SetBackgroundColour(
- wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW));
+ wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
m_defaultCellAttr->SetRenderer(new wxGridCellStringRenderer);
m_defaultCellAttr->SetEditor(new wxGridCellTextEditor);
m_selectingTopLeft = wxGridNoCellCoords;
m_selectingBottomRight = wxGridNoCellCoords;
- m_selectionBackground = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_HIGHLIGHT);
- m_selectionForeground = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
+ m_selectionBackground = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
+ m_selectionForeground = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
m_editable = TRUE; // default for whole grid
wxGridCellAttr *wxGrid::GetOrCreateCellAttr(int row, int col) const
{
wxGridCellAttr *attr = (wxGridCellAttr *)NULL;
- wxASSERT_MSG( m_table,
- _T("we may only be called if CanHaveAttributes() returned TRUE and then m_table should be !NULL") );
- attr = m_table->GetAttr(row, col, wxGridCellAttr::Cell );
- if ( !attr )
- {
- attr = new wxGridCellAttr;
+ wxCHECK_MSG( m_table, attr,
+ _T("we may only be called if CanHaveAttributes() returned TRUE and then m_table should be !NULL") );
+
+ attr = m_table->GetAttr(row, col, wxGridCellAttr::Cell);
+ if ( !attr )
+ {
+ attr = new wxGridCellAttr(m_defaultCellAttr);
+
+ // artificially inc the ref count to match DecRef() in caller
+ attr->IncRef();
+ m_table->SetAttr(attr, row, col);
+ }
- // artificially inc the ref count to match DecRef() in caller
- attr->IncRef();
- m_table->SetAttr(attr, row, col);
- }
- attr->SetDefAttr(m_defaultCellAttr);
return attr;
}