Merge branch 'grid-align'
Fix value returned from wxGridCellAttr::GetNonDefaultAlignment() for the default attribute. See https://github.com/wxWidgets/wxWidgets/pull/1636
This commit is contained in:
@@ -565,15 +565,21 @@ GridFrame::GridFrame()
|
|||||||
grid->SetCellAlignment(3, 9, wxALIGN_CENTRE, wxALIGN_TOP);
|
grid->SetCellAlignment(3, 9, wxALIGN_CENTRE, wxALIGN_TOP);
|
||||||
grid->SetCellValue(3, 10, "<- This numeric cell should be centred");
|
grid->SetCellValue(3, 10, "<- This numeric cell should be centred");
|
||||||
|
|
||||||
|
grid->SetCellValue(0, 13, "Localized date\ncolumn");
|
||||||
grid->SetColFormatDate(13); // Localized by default.
|
grid->SetColFormatDate(13); // Localized by default.
|
||||||
|
grid->SetCellValue(1, 13, "Today");
|
||||||
|
grid->SetCellValue(0, 14, "ISO 8601 date\ncolumn");
|
||||||
grid->SetColFormatDate(14, "%Y-%m-%d"); // ISO 8601 date format.
|
grid->SetColFormatDate(14, "%Y-%m-%d"); // ISO 8601 date format.
|
||||||
|
grid->SetCellValue(1, 14, "Tomorrow");
|
||||||
|
|
||||||
grid->SetCellValue(7, 0, "Today");
|
grid->SetCellValue(13, 0, "Date cell:");
|
||||||
grid->SetCellRenderer(7, 0, new wxGridCellDateRenderer);
|
grid->SetCellValue(13, 1, "Today");
|
||||||
grid->SetCellEditor(7, 0, new wxGridCellDateEditor);
|
grid->SetCellRenderer(13, 1, new wxGridCellDateRenderer);
|
||||||
grid->SetCellValue(8, 0, "Tomorrow");
|
grid->SetCellEditor(13, 1, new wxGridCellDateEditor);
|
||||||
grid->SetCellRenderer(8, 0, new wxGridCellDateRenderer("%Y-%m-%d"));
|
grid->SetCellValue(14, 0, "ISO date cell:");
|
||||||
grid->SetCellEditor(8, 0, new wxGridCellDateEditor);
|
grid->SetCellValue(14, 1, "Tomorrow");
|
||||||
|
grid->SetCellRenderer(14, 1, new wxGridCellDateRenderer("%Y-%m-%d"));
|
||||||
|
grid->SetCellEditor(14, 1, new wxGridCellDateEditor);
|
||||||
|
|
||||||
const wxString choices[] =
|
const wxString choices[] =
|
||||||
{
|
{
|
||||||
|
@@ -579,6 +579,11 @@ void wxGridCellAttr::GetAlignment(int *hAlign, int *vAlign) const
|
|||||||
|
|
||||||
void wxGridCellAttr::GetNonDefaultAlignment(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 )
|
if ( hAlign && m_hAlign != wxALIGN_INVALID )
|
||||||
*hAlign = m_hAlign;
|
*hAlign = m_hAlign;
|
||||||
|
|
||||||
|
@@ -31,6 +31,28 @@
|
|||||||
|
|
||||||
#include "waitforpaint.h"
|
#include "waitforpaint.h"
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
// Derive a new class inheriting from wxGrid just to get access to its
|
||||||
|
// protected GetCellAttr(). This is not pretty, but we don't have any other way
|
||||||
|
// of testing this function.
|
||||||
|
class TestableGrid : public wxGrid
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit TestableGrid(wxWindow* parent)
|
||||||
|
: wxGrid(parent, wxID_ANY)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
wxGridCellAttr* CallGetCellAttr(int row, int col) const
|
||||||
|
{
|
||||||
|
return GetCellAttr(row, col);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
class GridTestCase : public CppUnit::TestCase
|
class GridTestCase : public CppUnit::TestCase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -60,6 +82,7 @@ private:
|
|||||||
CPPUNIT_TEST( Labels );
|
CPPUNIT_TEST( Labels );
|
||||||
CPPUNIT_TEST( SelectionMode );
|
CPPUNIT_TEST( SelectionMode );
|
||||||
CPPUNIT_TEST( CellFormatting );
|
CPPUNIT_TEST( CellFormatting );
|
||||||
|
CPPUNIT_TEST( GetNonDefaultAlignment );
|
||||||
WXUISIM_TEST( Editable );
|
WXUISIM_TEST( Editable );
|
||||||
WXUISIM_TEST( ReadOnly );
|
WXUISIM_TEST( ReadOnly );
|
||||||
WXUISIM_TEST( ResizeScrolledHeader );
|
WXUISIM_TEST( ResizeScrolledHeader );
|
||||||
@@ -100,6 +123,7 @@ private:
|
|||||||
void Labels();
|
void Labels();
|
||||||
void SelectionMode();
|
void SelectionMode();
|
||||||
void CellFormatting();
|
void CellFormatting();
|
||||||
|
void GetNonDefaultAlignment();
|
||||||
void Editable();
|
void Editable();
|
||||||
void ReadOnly();
|
void ReadOnly();
|
||||||
void WindowAsEditorControl();
|
void WindowAsEditorControl();
|
||||||
@@ -127,7 +151,7 @@ private:
|
|||||||
static bool ms_nativeheader;
|
static bool ms_nativeheader;
|
||||||
static bool ms_nativelabels;
|
static bool ms_nativelabels;
|
||||||
|
|
||||||
wxGrid *m_grid;
|
TestableGrid *m_grid;
|
||||||
|
|
||||||
wxDECLARE_NO_COPY_CLASS(GridTestCase);
|
wxDECLARE_NO_COPY_CLASS(GridTestCase);
|
||||||
};
|
};
|
||||||
@@ -144,7 +168,7 @@ bool GridTestCase::ms_nativelabels = false;
|
|||||||
|
|
||||||
void GridTestCase::setUp()
|
void GridTestCase::setUp()
|
||||||
{
|
{
|
||||||
m_grid = new wxGrid(wxTheApp->GetTopWindow(), wxID_ANY);
|
m_grid = new TestableGrid(wxTheApp->GetTopWindow());
|
||||||
m_grid->CreateGrid(10, 2);
|
m_grid->CreateGrid(10, 2);
|
||||||
m_grid->SetSize(400, 200);
|
m_grid->SetSize(400, 200);
|
||||||
|
|
||||||
@@ -805,6 +829,21 @@ void GridTestCase::CellFormatting()
|
|||||||
CPPUNIT_ASSERT_EQUAL(*wxGREEN, m_grid->GetCellTextColour(0, 0));
|
CPPUNIT_ASSERT_EQUAL(*wxGREEN, m_grid->GetCellTextColour(0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GridTestCase::GetNonDefaultAlignment()
|
||||||
|
{
|
||||||
|
// GetNonDefaultAlignment() is used by several renderers having their own
|
||||||
|
// preferred alignment, so check that if we don't reset the alignment
|
||||||
|
// explicitly, it doesn't override the alignment used by default.
|
||||||
|
wxGridCellAttr* attr = NULL;
|
||||||
|
int align = wxALIGN_RIGHT;
|
||||||
|
|
||||||
|
attr = m_grid->CallGetCellAttr(0, 0);
|
||||||
|
REQUIRE( attr );
|
||||||
|
|
||||||
|
attr->GetNonDefaultAlignment(&align, NULL);
|
||||||
|
CHECK( align == wxALIGN_RIGHT );
|
||||||
|
}
|
||||||
|
|
||||||
void GridTestCase::Editable()
|
void GridTestCase::Editable()
|
||||||
{
|
{
|
||||||
#if wxUSE_UIACTIONSIMULATOR
|
#if wxUSE_UIACTIONSIMULATOR
|
||||||
|
Reference in New Issue
Block a user