wxGrid* grid)
{
wxString value = Combo()->GetValue();
- bool changed = value != m_startValue;
+ if ( value == m_startValue )
+ return false;
- if ( changed )
- grid->GetTable()->SetValue(row, col, value);
+ grid->GetTable()->SetValue(row, col, value);
- m_startValue = wxEmptyString;
- if (m_allowOthers)
- Combo()->SetValue(m_startValue);
- else
- Combo()->SetSelection(0);
-
- return changed;
+ return true;
}
void wxGridCellChoiceEditor::Reset()
wxGridCellAttr *attrrow = m_data->m_rowAttrs.GetAttr(row);
wxGridCellAttr *attrcol = m_data->m_colAttrs.GetAttr(col);
- if((attrcell != attrrow) && (attrrow !=attrcol) && (attrcell != attrcol)){
- // Two or move are non NULL
+ if((attrcell != attrrow) && (attrrow != attrcol) && (attrcell != attrcol)){
+ // Two or more are non NULL
attr = new wxGridCellAttr;
attr->SetKind(wxGridCellAttr::Merged);
//m_data->m_mergeAttr.SetAttr(attr, row, col);
}
else
- {
+ {
// one or none is non null return it or null.
if(attrrow) attr = attrrow;
- if(attrcol) attr = attrcol;
- if(attrcell) attr = attrcell;
+ if(attrcol)
+ {
+ if(attr)
+ attr->DecRef();
+ attr = attrcol;
+ }
+ if(attrcell)
+ {
+ if(attr)
+ attr->DecRef();
+ attr = attrcell;
+ }
}
}
break;
attr = m_data->m_cellAttrs.GetAttr(row, col);
break;
case (wxGridCellAttr::Col):
- attr = m_data->m_colAttrs.GetAttr(col);
+ attr = m_data->m_colAttrs.GetAttr(col);
break;
case (wxGridCellAttr::Row):
- attr = m_data->m_rowAttrs.GetAttr(row);
+ attr = m_data->m_rowAttrs.GetAttr(row);
break;
default:
// unused as yet...
wxCONSTRUCTOR_5( wxGrid , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle )
/*
- TODO : Expose more information of a list's layout etc. via appropriate objects (à la NotebookPageInfo)
+ TODO : Expose more information of a list's layout etc. via appropriate objects (\81à la NotebookPageInfo)
*/
#else
IMPLEMENT_DYNAMIC_CLASS( wxGrid, wxScrolledWindow )
m_colMinWidths(GRID_HASH_SIZE),
m_rowMinHeights(GRID_HASH_SIZE)
{
- // Can't use SetBestFittingSize here to avoid a crash as CreateGrid hasn't
- // been called yet.
- SetMinSize(size);
Create();
+ SetBestFittingSize(size);
}
bool wxGrid::Create(wxWindow *parent, wxWindowID id,
m_colMinWidths = wxLongToLongHashMap(GRID_HASH_SIZE) ;
m_rowMinHeights = wxLongToLongHashMap(GRID_HASH_SIZE) ;
- // Can't use SetBestFittingSize here to avoid a crash as CreateGrid hasn't
- // been called yet.
- SetMinSize(size);
Create() ;
+ SetBestFittingSize(size);
return true;
}
m_defaultCellAttr->SetFont(font);
}
+
+// For editors and renderers the type registry takes precedence over the
+// default attr, so we need to register the new editor/renderer for the string
+// data type in order to make setting a default editor/renderer appear to
+// work correctly.
+
void wxGrid::SetDefaultRenderer(wxGridCellRenderer *renderer)
{
- m_defaultCellAttr->SetRenderer(renderer);
+ RegisterDataType(wxGRID_VALUE_STRING,
+ renderer,
+ GetDefaultEditorForType(wxGRID_VALUE_STRING));
}
void wxGrid::SetDefaultEditor(wxGridCellEditor *editor)
{
- m_defaultCellAttr->SetEditor(editor);
+ RegisterDataType(wxGRID_VALUE_STRING,
+ GetDefaultRendererForType(wxGRID_VALUE_STRING),
+ editor);
}
// ----------------------------------------------------------------------------
wxGridCellAttr *wxGrid::GetOrCreateCellAttr(int row, int col) const
{
wxGridCellAttr *attr = (wxGridCellAttr *)NULL;
+ bool canHave = ((wxGrid*)this)->CanHaveAttributes();
- wxCHECK_MSG( m_table, attr,
- _T("we may only be called if CanHaveAttributes() returned true and then m_table should be !NULL") );
+ wxCHECK_MSG( canHave, attr, _T("Cell attributes not allowed"));
+ wxCHECK_MSG( m_table, attr, _T("must have a table") );
attr = m_table->GetAttr(row, col, wxGridCellAttr::Cell);
if ( !attr )
// of the scrollbars, is there any magic incantaion for that?
int xpu, ypu;
GetScrollPixelsPerUnit(&xpu, &ypu);
- width += 1 + xpu - (width % xpu);
- height += 1 + ypu - (height % ypu);
+ if (xpu)
+ width += 1 + xpu - (width % xpu);
+ if (ypu)
+ height += 1 + ypu - (height % ypu);
// limit to 1/4 of the screen size
int maxwidth, maxheight;