X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/041254895c4b27b1d6b44ed80f78a8109a03c9c8..9cce71a0f949c227c2c2ad53d700eca16af92cbe:/src/generic/vlbox.cpp diff --git a/src/generic/vlbox.cpp b/src/generic/vlbox.cpp index 6879d41cbe..9c9b8d06c8 100644 --- a/src/generic/vlbox.cpp +++ b/src/generic/vlbox.cpp @@ -77,6 +77,11 @@ bool wxVListBox::Create(wxWindow *parent, 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; @@ -111,7 +116,7 @@ void wxVListBox::SetItemCount(size_t count) m_selStore->SetItemCount(count); } - SetLineCount(count); + SetRowCount(count); } // ---------------------------------------------------------------------------- @@ -135,7 +140,7 @@ bool wxVListBox::Select(size_t item, bool select) if ( changed ) { // selection really changed - RefreshLine(item); + RefreshRow(item); } DoSetCurrent(item); @@ -164,7 +169,7 @@ bool wxVListBox::SelectRange(size_t from, size_t to) { // 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 { @@ -178,7 +183,7 @@ bool wxVListBox::SelectRange(size_t from, size_t to) // refresh just the lines which have really changed for ( size_t n = 0; n < count; n++ ) { - RefreshLine(changed[n]); + RefreshRow(changed[n]); } } @@ -221,7 +226,7 @@ bool wxVListBox::DoSetCurrent(int current) } if ( m_current != wxNOT_FOUND ) - RefreshLine(m_current); + RefreshRow(m_current); m_current = current; @@ -231,18 +236,18 @@ bool wxVListBox::DoSetCurrent(int 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); } } @@ -312,7 +317,7 @@ void wxVListBox::RefreshSelected() for ( size_t n = GetVisibleBegin(), end = GetVisibleEnd(); n < end; n++ ) { if ( IsSelected(n) ) - RefreshLine(n); + RefreshRow(n); } } @@ -339,7 +344,7 @@ void wxVListBox::SetSelectionBackground(const wxColour& col) // wxVListBox painting // ---------------------------------------------------------------------------- -wxCoord wxVListBox::OnGetLineHeight(size_t line) const +wxCoord wxVListBox::OnGetRowHeight(size_t line) const { return OnMeasureItem(line) + 2*m_ptMargins.y; } @@ -379,7 +384,7 @@ void wxVListBox::OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const flags |= wxCONTROL_SELECTED; if ( IsCurrent(n) ) flags |= wxCONTROL_CURRENT; - if ( wxWindow::FindFocus() == this ) + if ( wxWindow::FindFocus() == wx_const_cast(wxVListBox*, this) ) flags |= wxCONTROL_FOCUSED; wxRendererNative::Get().DrawItemSelectionRect( @@ -401,24 +406,24 @@ void wxVListBox::OnPaint(wxPaintEvent& WXUNUSED(event)) 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); @@ -428,7 +433,7 @@ void wxVListBox::OnPaint(wxPaintEvent& WXUNUSED(event)) } 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 @@ -437,7 +442,7 @@ void wxVListBox::OnPaint(wxPaintEvent& WXUNUSED(event)) //else: the next line may intersect the update rect } - rectLine.y += hLine; + rectRow.y += hRow; } } @@ -552,11 +557,11 @@ void wxVListBox::OnKeyDown(wxKeyEvent& event) 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; @@ -564,7 +569,7 @@ void wxVListBox::OnKeyDown(wxKeyEvent& event) 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 @@ -573,16 +578,16 @@ void wxVListBox::OnKeyDown(wxKeyEvent& event) 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: