#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/dcscreen.h"
- #include "wx/textctrl.h"
-#endif
-
// under Win32 we always use the native version and also may use the generic
// one, however some things should be done only if we use only the generic
// version
IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxGenericListCtrl)
#endif // HAVE_NATIVE_LISTCTRL/!HAVE_NATIVE_LISTCTRL
+#ifndef WX_PRECOMP
+ #include "wx/dynarray.h"
+ #include "wx/app.h"
+ #include "wx/dcscreen.h"
+ #include "wx/textctrl.h"
+ #include "wx/listbox.h"
+ #include "wx/math.h"
+#endif
+
#include "wx/selstore.h"
#include "wx/renderer.h"
-#include "wx/math.h"
#ifdef __WXMAC__
#include "wx/mac/private.h"
{
protected:
wxListMainWindow *m_owner;
- wxCursor *m_currentCursor;
+ const wxCursor *m_currentCursor;
wxCursor *m_resizeCursor;
bool m_isDragging;
long FindItem( long start, const wxString& str, bool partial = false );
long FindItem( long start, wxUIntPtr data);
long FindItem( const wxPoint& pt );
- long HitTest( int x, int y, int &flags );
+ long HitTest( int x, int y, int &flags ) const;
void InsertItem( wxListItem &item );
void InsertColumn( long col, wxListItem &item );
int GetItemWidthWithImage(wxListItem * item);
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 )
return wxNOT_FOUND;
}
-long wxListMainWindow::HitTest( int x, int y, int &flags )
+long wxListMainWindow::HitTest( int x, int y, int &flags ) const
{
CalcUnscrolledPosition( x, y, &x, &y );
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 *) const
{
return m_mainWin->HitTest( (int)point.x, (int)point.y, flags );
}
return true;
}
-#if _USE_VISATTR
-#include "wx/listbox.h"
-#endif
-
// static
wxVisualAttributes
wxGenericListCtrl::GetClassDefaultAttributes(wxWindowVariant variant)