#include "wx/wxprec.h"
#ifdef __BORLANDC__
-#pragma hdrstop
+ #pragma hdrstop
#endif
#if wxUSE_LISTCTRL
#ifndef WX_PRECOMP
- #include "wx/app.h"
#include "wx/dynarray.h"
+ #include "wx/app.h"
#include "wx/dcscreen.h"
#include "wx/textctrl.h"
#endif
{
protected:
wxListMainWindow *m_owner;
- wxCursor *m_currentCursor;
+ const wxCursor *m_currentCursor;
wxCursor *m_resizeCursor;
bool m_isDragging;
wxPoint(rectLabel.x-4,rectLabel.y-4),
wxSize(rectLabel.width+11,rectLabel.height+8));
m_text->SetFocus();
-
+
m_text->PushEventHandler(this);
}
{
if ( !AcceptChanges() )
m_owner->OnRenameCancelled( m_itemEdited );
-
+
Finish();
}
// reset the selection and bail out
HighlightAll(false);
}
-
+
return;
}
return;
}
- switch (event.GetKeyCode())
+ // don't use m_linesPerPage directly as it might not be computed yet
+ const int pageSize = GetCountPerPage();
+ wxCHECK_RET( pageSize, _T("should have non zero page size") );
+
+ switch ( event.GetKeyCode() )
{
case WXK_UP:
if ( m_current > 0 )
case WXK_PAGEUP:
{
- // we get a floating point exception without this
- if (m_linesPerPage == 0)
- m_linesPerPage = 1;
-
- int steps = InReportView() ? m_linesPerPage - 1 : m_current % m_linesPerPage;
+ int steps = InReportView() ? pageSize - 1
+ : m_current % pageSize;
int index = m_current - steps;
if (index < 0)
case WXK_PAGEDOWN:
{
- // we get a floating point exception without this
- if (m_linesPerPage == 0)
- m_linesPerPage = 1;
-
int steps = InReportView()
- ? m_linesPerPage - 1
- : m_linesPerPage - (m_current % m_linesPerPage) - 1;
+ ? pageSize - 1
+ : pageSize - (m_current % pageSize) - 1;
size_t index = m_current + steps;
size_t count = GetItemCount();
case WXK_LEFT:
if ( !InReportView() )
{
- int index = m_current - m_linesPerPage;
+ int index = m_current - pageSize;
if (index < 0)
index = 0;
case WXK_RIGHT:
if ( !InReportView() )
{
- size_t index = m_current + m_linesPerPage;
+ size_t index = m_current + pageSize;
size_t count = GetItemCount();
if ( index >= count )
void wxListMainWindow::OnScroll(wxScrollWinEvent& event)
{
- int cw, ch, vw, vh;
- GetVirtualSize(&vw, &vh);
- GetClientSize(&cw, &ch);
-
- if( event.GetOrientation() == wxVERTICAL && ch >= vh)
- return;
- // update our idea of which lines are shown when we redraw the window the
+ // update our idea of which lines are shown when we redraw the window the
// next time
ResetVisibleLinesRange();
return m_mainWin->FindItem( pt );
}
-long wxGenericListCtrl::HitTest( const wxPoint &point, int &flags )
+// TODO: sub item hit testing
+long wxGenericListCtrl::HitTest(const wxPoint& point, int& flags, long *)
{
return m_mainWin->HitTest( (int)point.x, (int)point.y, flags );
}