From: Rodrigo G. <rjg...@gm...> - 2008-10-16 15:37:16
|
This patch just move 10 items back or after current selected item when pressing page down or page up. The only "bad" thing is that 10 is a magic number, I don't know how to know how many items are shown in the listbox. Thanks Rodrigo Index: cc_box.cpp =================================================================== --- cc_box.cpp (revision 2294) +++ cc_box.cpp (working copy) @@ -209,6 +209,53 @@ } } +void CCBox::NextPage() + if (m_selectedItem != wxNOT_FOUND) { + if (m_selectedItem + 1 < m_listCtrl->GetItemCount()) { +#ifdef __WXMAC__ + // unselect current item + m_listCtrl->Select(m_selectedItem, false); +#endif + m_selectedItem += 10; + // select next item + SelectItem(m_selectedItem); + } else { +#ifdef __WXMAC__ + // unselect current item + m_listCtrl->Select(m_selectedItem, false); +#endif + m_selectedItem = m_listCtrl->GetItemCount() - 1; + // select next item + SelectItem(m_selectedItem); + } + } +} + +void CCBox::PreviousPage() +{ + if (m_selectedItem != wxNOT_FOUND) { + if (m_selectedItem - 10 >= 0) { +#ifdef __WXMAC__ + // unselect current item + m_listCtrl->Select(m_selectedItem, false); +#endif + m_selectedItem -= 10; + + // select previous item + SelectItem(m_selectedItem); + } else { +#ifdef __WXMAC__ + // unselect current item + m_listCtrl->Select(m_selectedItem, false); +#endif + m_selectedItem = 0; + + // select previous item + SelectItem(m_selectedItem); + } + } +} + void CCBox::SelectItem(long item) { m_listCtrl->Select(item); Index: cc_box.h =================================================================== --- cc_box.h (revision 2294) +++ cc_box.h (working copy) @@ -80,6 +80,8 @@ void SelectWord(const wxString &word); void Next(); void Previous(); + void NextPage(); + void PreviousPage(); //Setters void SetAutoHide(const bool& autoHide) { Index: cl_editor.cpp =================================================================== --- cl_editor.cpp (revision 2294) +++ cl_editor.cpp (working copy) @@ -1802,6 +1802,12 @@ case WXK_DOWN: m_ccBox->Next(); return; + case WXK_PAGEUP: + m_ccBox->PreviousPage(); + return; + case WXK_PAGEDOWN: + m_ccBox->NextPage(); + return; case WXK_BACK: { if (event.ControlDown()) { |