long style,
const wxString& name)
{
+#ifdef __WXMSW__
+ if ((style & wxBORDER_MASK) == wxDEFAULT)
+ style |= wxBORDER_THEME;
+#endif
+
style |= wxWANTS_CHARS | wxFULL_REPAINT_ON_RESIZE;
if ( !wxVScrolledWindow::Create(parent, id, pos, size, style, name) )
return false;
if ( changed )
{
// selection really changed
- RefreshLine(item);
+ RefreshRow(item);
}
DoSetCurrent(item);
{
// too many items have changed, we didn't record them in changed array
// so we have no choice but to refresh everything between from and to
- RefreshLines(from, to);
+ RefreshRows(from, to);
}
else // we've got the indices of the changed items
{
// refresh just the lines which have really changed
for ( size_t n = 0; n < count; n++ )
{
- RefreshLine(changed[n]);
+ RefreshRow(changed[n]);
}
}
}
if ( m_current != wxNOT_FOUND )
- RefreshLine(m_current);
+ RefreshRow(m_current);
m_current = current;
// don't need to refresh it -- it will be redrawn anyhow
if ( !IsVisible(m_current) )
{
- ScrollToLine(m_current);
+ ScrollToRow(m_current);
}
else // line is at least partly visible
{
// it is, indeed, only partly visible, so scroll it into view to
// make it entirely visible
- while ( (size_t)m_current == GetLastVisibleLine() &&
- ScrollToLine(GetVisibleBegin()+1) ) ;
+ while ( (size_t)m_current + 1 == GetVisibleRowsEnd() &&
+ ScrollToRow(GetVisibleBegin() + 1) ) ;
// but in any case refresh it as even if it was only partly visible
// before we need to redraw it entirely as its background changed
- RefreshLine(m_current);
+ RefreshRow(m_current);
}
}
// wxVListBox painting
// ----------------------------------------------------------------------------
-wxCoord wxVListBox::OnGetLineHeight(size_t line) const
+wxCoord wxVListBox::OnGetRowHeight(size_t line) const
{
return OnMeasureItem(line) + 2*m_ptMargins.y;
}
dc.Clear();
// the bounding rectangle of the current line
- wxRect rectLine;
- rectLine.width = clientSize.x;
+ wxRect rectRow;
+ rectRow.width = clientSize.x;
// iterate over all visible lines
const size_t lineMax = GetVisibleEnd();
- for ( size_t line = GetFirstVisibleLine(); line < lineMax; line++ )
+ for ( size_t line = GetVisibleBegin(); line < lineMax; line++ )
{
- const wxCoord hLine = OnGetLineHeight(line);
+ const wxCoord hRow = OnGetRowHeight(line);
- rectLine.height = hLine;
+ rectRow.height = hRow;
// and draw the ones which intersect the update rect
- if ( rectLine.Intersects(rectUpdate) )
+ if ( rectRow.Intersects(rectUpdate) )
{
// don't allow drawing outside of the lines rectangle
- wxDCClipper clip(dc, rectLine);
+ wxDCClipper clip(dc, rectRow);
- wxRect rect = rectLine;
+ wxRect rect = rectRow;
OnDrawBackground(dc, rect, line);
OnDrawSeparator(dc, rect, line);
}
else // no intersection
{
- if ( rectLine.GetTop() > rectUpdate.GetBottom() )
+ if ( rectRow.GetTop() > rectUpdate.GetBottom() )
{
// we are already below the update rect, no need to continue
// further
//else: the next line may intersect the update rect
}
- rectLine.y += hLine;
+ rectRow.y += hRow;
}
}
break;
case WXK_END:
- current = GetLineCount() - 1;
+ current = GetRowCount() - 1;
break;
case WXK_DOWN:
- if ( m_current == (int)GetLineCount() - 1 )
+ if ( m_current == (int)GetRowCount() - 1 )
return;
current = m_current + 1;
case WXK_UP:
if ( m_current == wxNOT_FOUND )
- current = GetLineCount() - 1;
+ current = GetRowCount() - 1;
else if ( m_current != 0 )
current = m_current - 1;
else // m_current == 0
case WXK_PAGEDOWN:
PageDown();
- current = GetFirstVisibleLine();
+ current = GetVisibleBegin();
break;
case WXK_PAGEUP:
- if ( m_current == (int)GetFirstVisibleLine() )
+ if ( m_current == (int)GetVisibleBegin() )
{
PageUp();
}
- current = GetFirstVisibleLine();
+ current = GetVisibleBegin();
break;
case WXK_SPACE:
case WXK_TAB:
// Since we are using wxWANTS_CHARS we need to send navigation
// events for the tabs on MSW
- {
- wxNavigationKeyEvent ne;
- ne.SetDirection(!event.ShiftDown());
- ne.SetCurrentFocus(this);
- ne.SetEventObject(this);
- GetParent()->GetEventHandler()->ProcessEvent(ne);
- }
+ HandleAsNavigationKey(event);
// fall through to default
#endif
default:
{
SetFocus();
- int item = HitTest(event.GetPosition());
+ int item = VirtualHitTest(event.GetPosition().y);
if ( item != wxNOT_FOUND )
{
void wxVListBox::OnLeftDClick(wxMouseEvent& eventMouse)
{
- int item = HitTest(eventMouse.GetPosition());
+ int item = VirtualHitTest(eventMouse.GetPosition().y);
if ( item != wxNOT_FOUND )
{