Fix default attribute wxGridCellAttr::GetNonDefaultAlignment()

This function is not supposed to overwrite the given alignment values
unless the alignment is specifically set for the given cell, but it
always overwrote them when called on m_defaultCellAttr, i.e. the
attribute used by the cells that don't have any special attribute.

This meant that custom attributes had to be set (or, more efficiently, a
custom attribute provider returning non-null attributes for all cells
had to be used) previously just to make the right alignment used by
default by number or date renderers work.

Fix this by ignoring the values set in the default attribute in this
function.

Also add a unit test (which required adding a special helper class just
to allow testing wxGrid::GetCellAttr() used by the renderers) that used
to fail but passes now.
This commit is contained in:
Vadim Zeitlin
2019-11-04 00:35:32 +01:00
parent fe35ddd34b
commit 19844d27ac
2 changed files with 46 additions and 2 deletions

View File

@@ -579,6 +579,11 @@ void wxGridCellAttr::GetAlignment(int *hAlign, int *vAlign) const
void wxGridCellAttr::GetNonDefaultAlignment(int *hAlign, int *vAlign) const
{
// Default attribute can only have default alignment, so don't return it
// from this function.
if ( this == m_defGridAttr )
return;
if ( hAlign && m_hAlign != wxALIGN_INVALID )
*hAlign = m_hAlign;