Fix toggling the header in the generic wxListCtrl.
We need to update the lfags first before deciding whether we should create or destroy the header. Also add a test for toggling the header to the listctrl sample. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63637 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -150,13 +150,17 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
|||||||
EVT_MENU(LIST_FREEZE, MyFrame::OnFreeze)
|
EVT_MENU(LIST_FREEZE, MyFrame::OnFreeze)
|
||||||
EVT_MENU(LIST_THAW, MyFrame::OnThaw)
|
EVT_MENU(LIST_THAW, MyFrame::OnThaw)
|
||||||
EVT_MENU(LIST_TOGGLE_LINES, MyFrame::OnToggleLines)
|
EVT_MENU(LIST_TOGGLE_LINES, MyFrame::OnToggleLines)
|
||||||
|
EVT_MENU(LIST_TOGGLE_HEADER, MyFrame::OnToggleHeader)
|
||||||
#ifdef __WXOSX__
|
#ifdef __WXOSX__
|
||||||
EVT_MENU(LIST_MAC_USE_GENERIC, MyFrame::OnToggleMacUseGeneric)
|
EVT_MENU(LIST_MAC_USE_GENERIC, MyFrame::OnToggleMacUseGeneric)
|
||||||
#endif // __WXOSX__
|
#endif // __WXOSX__
|
||||||
EVT_MENU(LIST_FIND, MyFrame::OnFind)
|
EVT_MENU(LIST_FIND, MyFrame::OnFind)
|
||||||
|
|
||||||
EVT_UPDATE_UI(LIST_SHOW_COL_INFO, MyFrame::OnUpdateShowColInfo)
|
EVT_UPDATE_UI(LIST_SHOW_COL_INFO, MyFrame::OnUpdateUIEnableInReport)
|
||||||
|
EVT_UPDATE_UI(LIST_TOGGLE_HEADER, MyFrame::OnUpdateUIEnableInReport)
|
||||||
|
|
||||||
EVT_UPDATE_UI(LIST_TOGGLE_MULTI_SEL, MyFrame::OnUpdateToggleMultiSel)
|
EVT_UPDATE_UI(LIST_TOGGLE_MULTI_SEL, MyFrame::OnUpdateToggleMultiSel)
|
||||||
|
EVT_UPDATE_UI(LIST_TOGGLE_HEADER, MyFrame::OnUpdateToggleHeader)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
// My frame constructor
|
// My frame constructor
|
||||||
@@ -251,8 +255,11 @@ MyFrame::MyFrame(const wxChar *title)
|
|||||||
menuList->Append(LIST_THAW, wxT("Tha&w\tCtrl-W"));
|
menuList->Append(LIST_THAW, wxT("Tha&w\tCtrl-W"));
|
||||||
menuList->AppendSeparator();
|
menuList->AppendSeparator();
|
||||||
menuList->AppendCheckItem(LIST_TOGGLE_LINES, wxT("Toggle &lines\tCtrl-I"));
|
menuList->AppendCheckItem(LIST_TOGGLE_LINES, wxT("Toggle &lines\tCtrl-I"));
|
||||||
menuList->Append(LIST_TOGGLE_MULTI_SEL, wxT("&Multiple selection\tCtrl-M"),
|
menuList->AppendCheckItem(LIST_TOGGLE_MULTI_SEL,
|
||||||
wxT("Toggle multiple selection"), true);
|
wxT("&Multiple selection\tCtrl-M"));
|
||||||
|
menuList->Check(LIST_TOGGLE_MULTI_SEL, true);
|
||||||
|
menuList->AppendCheckItem(LIST_TOGGLE_HEADER, "Toggle &header\tCtrl-H");
|
||||||
|
menuList->Check(LIST_TOGGLE_HEADER, true);
|
||||||
|
|
||||||
wxMenu *menuCol = new wxMenu;
|
wxMenu *menuCol = new wxMenu;
|
||||||
menuCol->Append(LIST_SET_FG_COL, wxT("&Foreground colour..."));
|
menuCol->Append(LIST_SET_FG_COL, wxT("&Foreground colour..."));
|
||||||
@@ -354,6 +361,13 @@ void MyFrame::OnToggleLines(wxCommandEvent& event)
|
|||||||
m_listCtrl->SetSingleStyle(wxLC_HRULES | wxLC_VRULES, event.IsChecked());
|
m_listCtrl->SetSingleStyle(wxLC_HRULES | wxLC_VRULES, event.IsChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnToggleHeader(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
wxLogMessage("%s the header", event.IsChecked() ? "Showing" : "Hiding");
|
||||||
|
|
||||||
|
m_listCtrl->ToggleWindowStyle(wxLC_NO_HEADER);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __WXOSX__
|
#ifdef __WXOSX__
|
||||||
|
|
||||||
void MyFrame::OnToggleMacUseGeneric(wxCommandEvent& event)
|
void MyFrame::OnToggleMacUseGeneric(wxCommandEvent& event)
|
||||||
@@ -778,7 +792,7 @@ void MyFrame::OnShowColInfo(wxCommandEvent& WXUNUSED(event))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyFrame::OnUpdateShowColInfo(wxUpdateUIEvent& event)
|
void MyFrame::OnUpdateUIEnableInReport(wxUpdateUIEvent& event)
|
||||||
{
|
{
|
||||||
event.Enable( (m_listCtrl->GetWindowStyleFlag() & wxLC_REPORT) != 0 );
|
event.Enable( (m_listCtrl->GetWindowStyleFlag() & wxLC_REPORT) != 0 );
|
||||||
}
|
}
|
||||||
@@ -799,7 +813,12 @@ void MyFrame::OnToggleMultiSel(wxCommandEvent& WXUNUSED(event))
|
|||||||
|
|
||||||
void MyFrame::OnUpdateToggleMultiSel(wxUpdateUIEvent& event)
|
void MyFrame::OnUpdateToggleMultiSel(wxUpdateUIEvent& event)
|
||||||
{
|
{
|
||||||
event.Check((m_listCtrl->GetWindowStyleFlag() & wxLC_SINGLE_SEL) == 0);
|
event.Check(!m_listCtrl->HasFlag(wxLC_SINGLE_SEL));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnUpdateToggleHeader(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Check(!m_listCtrl->HasFlag(wxLC_NO_HEADER));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyFrame::OnSetFgColour(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::OnSetFgColour(wxCommandEvent& WXUNUSED(event))
|
||||||
|
@@ -146,13 +146,15 @@ protected:
|
|||||||
void OnFreeze(wxCommandEvent& event);
|
void OnFreeze(wxCommandEvent& event);
|
||||||
void OnThaw(wxCommandEvent& event);
|
void OnThaw(wxCommandEvent& event);
|
||||||
void OnToggleLines(wxCommandEvent& event);
|
void OnToggleLines(wxCommandEvent& event);
|
||||||
|
void OnToggleHeader(wxCommandEvent& event);
|
||||||
#ifdef __WXOSX__
|
#ifdef __WXOSX__
|
||||||
void OnToggleMacUseGeneric(wxCommandEvent& event);
|
void OnToggleMacUseGeneric(wxCommandEvent& event);
|
||||||
#endif // __WXOSX__
|
#endif // __WXOSX__
|
||||||
void OnFind(wxCommandEvent& event);
|
void OnFind(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnUpdateShowColInfo(wxUpdateUIEvent& event);
|
void OnUpdateUIEnableInReport(wxUpdateUIEvent& event);
|
||||||
void OnUpdateToggleMultiSel(wxUpdateUIEvent& event);
|
void OnUpdateToggleMultiSel(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateToggleHeader(wxUpdateUIEvent& event);
|
||||||
|
|
||||||
wxImageList *m_imageListNormal;
|
wxImageList *m_imageListNormal;
|
||||||
wxImageList *m_imageListSmall;
|
wxImageList *m_imageListSmall;
|
||||||
@@ -216,6 +218,7 @@ enum
|
|||||||
LIST_SET_FG_COL,
|
LIST_SET_FG_COL,
|
||||||
LIST_SET_BG_COL,
|
LIST_SET_BG_COL,
|
||||||
LIST_TOGGLE_MULTI_SEL,
|
LIST_TOGGLE_MULTI_SEL,
|
||||||
|
LIST_TOGGLE_HEADER,
|
||||||
LIST_TOGGLE_FIRST,
|
LIST_TOGGLE_FIRST,
|
||||||
LIST_SHOW_COL_INFO,
|
LIST_SHOW_COL_INFO,
|
||||||
LIST_SHOW_SEL_INFO,
|
LIST_SHOW_SEL_INFO,
|
||||||
|
@@ -4446,6 +4446,10 @@ void wxGenericListCtrl::SetSingleStyle( long style, bool add )
|
|||||||
|
|
||||||
void wxGenericListCtrl::SetWindowStyleFlag( long flag )
|
void wxGenericListCtrl::SetWindowStyleFlag( long flag )
|
||||||
{
|
{
|
||||||
|
// update the window style first so that the header is created or destroyed
|
||||||
|
// corresponding to the new style
|
||||||
|
wxWindow::SetWindowStyleFlag( flag );
|
||||||
|
|
||||||
if (m_mainWin)
|
if (m_mainWin)
|
||||||
{
|
{
|
||||||
// m_mainWin->DeleteEverything(); wxMSW doesn't do that
|
// m_mainWin->DeleteEverything(); wxMSW doesn't do that
|
||||||
@@ -4454,8 +4458,6 @@ void wxGenericListCtrl::SetWindowStyleFlag( long flag )
|
|||||||
|
|
||||||
GetSizer()->Layout();
|
GetSizer()->Layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
wxWindow::SetWindowStyleFlag( flag );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxGenericListCtrl::GetColumn(int col, wxListItem &item) const
|
bool wxGenericListCtrl::GetColumn(int col, wxListItem &item) const
|
||||||
|
Reference in New Issue
Block a user