handle actions of the columns popup menu in wxHeaderCtrl itself (but the derived class must implement UpdateColumnVisibility()); also renamed wxHD_DRAGDROP to wxHD_ALLOW_REORDER as it will be possible to reorder columns interactively using a customization dialog and not just by dragging them soon

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-12-15 22:42:37 +00:00
parent c2ee27612a
commit 613de0e89e
6 changed files with 116 additions and 53 deletions

View File

@@ -1746,7 +1746,8 @@ private:
int col = m_txtColShowHide->GetCol();
if ( col != -1 )
{
m_grid->SetColSize(col, event.GetId() == wxID_ADD ? -1 : 0);
m_grid->SetColSize(col,
event.GetId() == wxID_ADD ? wxGRID_AUTOSIZE : 0);
UpdateOrderAndVisibility();
}
@@ -1787,6 +1788,16 @@ private:
event.Skip();
}
void OnGridColSize(wxGridSizeEvent& event)
{
// we only catch this event to react to the user showing or hiding this
// column using the header control menu and not because we're
// interested in column resizing
UpdateOrderAndVisibility();
event.Skip();
}
void OnIdle(wxIdleEvent& event)
{
if ( m_shouldUpdateOrder )
@@ -1798,20 +1809,6 @@ private:
event.Skip();
}
void OnColRightClick(wxHeaderCtrlEvent&)
{
int col = m_grid->GetGridColHeader()->ShowColumnsMenu("Columns:");
if ( col == wxID_NONE )
return;
if ( m_grid->IsColShown(col) )
m_grid->HideCol(col);
else
m_grid->ShowCol(col);
UpdateOrderAndVisibility();
}
void UpdateOrderAndVisibility()
{
wxString s;
@@ -1873,6 +1870,7 @@ BEGIN_EVENT_TABLE(TabularGridFrame, wxFrame)
EVT_GRID_COL_SORT(TabularGridFrame::OnGridColSort)
EVT_GRID_COL_MOVE(TabularGridFrame::OnGridColMove)
EVT_GRID_COL_SIZE(TabularGridFrame::OnGridColSize)
EVT_IDLE(TabularGridFrame::OnIdle)
END_EVENT_TABLE()
@@ -1895,14 +1893,6 @@ TabularGridFrame::TabularGridFrame()
m_grid->UseNativeColHeader();
m_grid->HideRowLabels();
m_grid->GetGridColHeader()->Connect
(
wxEVT_COMMAND_HEADER_RIGHT_CLICK,
wxHeaderCtrlEventHandler(TabularGridFrame::OnColRightClick),
NULL,
this
);
// add it and the other controls to the frame
wxSizer * const sizerTop = new wxBoxSizer(wxVERTICAL);
sizerTop->Add(m_grid, wxSizerFlags(1).Expand().Border());