The column resizing code in wxGrid didn't take account of the fact that the
column positions and indices could be different. Correct it by inserting calls
to wxGrid::GetColAt() and GetColPos() in a new wxGridOperations::GetLineBefore()
method.
Closes #11984.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66137
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
- Added wxToolbook XRC handler (Andrea Zanellato).
- Added wxDocManager::FindTemplate() (troelsk).
- Return bool, not void, from wxImage::ConvertAlphaToMask() (troelsk).
- Added wxToolbook XRC handler (Andrea Zanellato).
- Added wxDocManager::FindTemplate() (troelsk).
- Return bool, not void, from wxImage::ConvertAlphaToMask() (troelsk).
+- Fixed resizing columns in wxGrid when they were reordered.
//
// NB: currently this is always identity for the rows as reordering is only
// implemented for the lines
//
// NB: currently this is always identity for the rows as reordering is only
// implemented for the lines
- virtual int GetLineAt(const wxGrid *grid, int line) const = 0;
+ virtual int GetLineAt(const wxGrid *grid, int pos) const = 0;
+ // Return the index of the line just before the given one.
+ virtual int GetLineBefore(const wxGrid* grid, int line) const = 0;
// Get the row or column label window
virtual wxWindow *GetHeaderWindow(wxGrid *grid) const = 0;
// Get the row or column label window
virtual wxWindow *GetHeaderWindow(wxGrid *grid) const = 0;
virtual int GetLineAt(const wxGrid * WXUNUSED(grid), int line) const
{ return line; } // TODO: implement row reordering
virtual int GetLineAt(const wxGrid * WXUNUSED(grid), int line) const
{ return line; } // TODO: implement row reordering
+ virtual int GetLineBefore(const wxGrid* WXUNUSED(grid), int line) const
+ { return line ? line - 1 : line; }
+
virtual wxWindow *GetHeaderWindow(wxGrid *grid) const
{ return grid->GetGridRowLabelWindow(); }
virtual int GetHeaderWindowSize(wxGrid *grid) const
virtual wxWindow *GetHeaderWindow(wxGrid *grid) const
{ return grid->GetGridRowLabelWindow(); }
virtual int GetHeaderWindowSize(wxGrid *grid) const
virtual int GetLineAt(const wxGrid *grid, int line) const
{ return grid->GetColAt(line); }
virtual int GetLineAt(const wxGrid *grid, int line) const
{ return grid->GetColAt(line); }
+ virtual int GetLineBefore(const wxGrid* grid, int line) const
+ { return grid->GetColAt(wxMax(0, grid->GetColPos(line) - 1)); }
+
virtual wxWindow *GetHeaderWindow(wxGrid *grid) const
{ return grid->GetGridColLabelWindow(); }
virtual int GetHeaderWindowSize(wxGrid *grid) const
virtual wxWindow *GetHeaderWindow(wxGrid *grid) const
{ return grid->GetGridColLabelWindow(); }
virtual int GetHeaderWindowSize(wxGrid *grid) const
else if ( line > 0 &&
pos - oper.GetLineStartPos(this,
line) < WXGRID_LABEL_EDGE_ZONE )
else if ( line > 0 &&
pos - oper.GetLineStartPos(this,
line) < WXGRID_LABEL_EDGE_ZONE )
+ {
+ return oper.GetLineBefore(this, line);
+ }