Send the autosize column event for grid native header columns

Send wxEVT_GRID_COL_AUTO_SIZE on double clicking on a separator line of
the grid native header to allow override default behaviour.
This commit is contained in:
Ilya Sinitsyn 2019-09-30 23:36:31 +07:00 committed by Vadim Zeitlin
parent 6ed0443d2f
commit 8971321542
3 changed files with 16 additions and 11 deletions

View File

@ -2404,6 +2404,8 @@ private:
wxGridColLabelWindow* colLabelWin); wxGridColLabelWindow* colLabelWin);
void ProcessCornerLabelMouseEvent(wxMouseEvent& event); void ProcessCornerLabelMouseEvent(wxMouseEvent& event);
void HandleColumnAutosize(int col, const wxMouseEvent& event);
void DoColHeaderClick(int col); void DoColHeaderClick(int col);
void DoStartResizeCol(int col); void DoStartResizeCol(int col);

View File

@ -191,11 +191,9 @@ private:
} }
// override to implement column auto sizing // override to implement column auto sizing
virtual bool UpdateColumnWidthToFit(unsigned int idx, int widthTitle) wxOVERRIDE virtual bool UpdateColumnWidthToFit(unsigned int idx, int WXUNUSED(widthTitle)) wxOVERRIDE
{ {
// TODO: currently grid doesn't support computing the column best width GetOwner()->HandleColumnAutosize(idx, GetDummyMouseEvent());
// from its contents so we just use the best label width as is
GetOwner()->SetColSize(idx, widthTitle);
return true; return true;
} }

View File

@ -3874,13 +3874,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event, wxGridColLabelWindo
} }
else else
{ {
// adjust column width depending on label text HandleColumnAutosize(colEdge, event);
//
// TODO: generate RESIZING event, see #10754
if ( !SendGridSizeEvent(wxEVT_GRID_COL_AUTO_SIZE, -1, colEdge, event) )
AutoSizeColLabelSize( colEdge );
SendGridSizeEvent(wxEVT_GRID_COL_SIZE, -1, colEdge, event);
ChangeCursorMode(WXGRID_CURSOR_SELECT_CELL, colLabelWin); ChangeCursorMode(WXGRID_CURSOR_SELECT_CELL, colLabelWin);
m_dragLastPos = -1; m_dragLastPos = -1;
@ -4023,6 +4017,17 @@ void wxGrid::ProcessCornerLabelMouseEvent( wxMouseEvent& event )
} }
} }
void wxGrid::HandleColumnAutosize(int col, const wxMouseEvent& event)
{
// adjust column width depending on label text
//
// TODO: generate RESIZING event, see #10754
if ( !SendGridSizeEvent(wxEVT_GRID_COL_AUTO_SIZE, -1, col, event) )
AutoSizeColLabelSize(col);
SendGridSizeEvent(wxEVT_GRID_COL_SIZE, -1, col, event);
}
void wxGrid::CancelMouseCapture() void wxGrid::CancelMouseCapture()
{ {
// cancel operation currently in progress, whatever it is // cancel operation currently in progress, whatever it is