X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6d78bbe6376738a5bcf518ac6250c82b90dacc12..2ded391d8f1a0724ee0e516eb520ae58d0a6a151:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 889007ba50..dbd275f048 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -1732,7 +1732,8 @@ void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) // for this we need the width of the text wxCoord wLabel; - dc.GetTextExtent(item.GetText(), &wLabel, NULL); + wxCoord hLabel; + dc.GetTextExtent(item.GetText(), &wLabel, &hLabel); wLabel += 2*EXTRA_WIDTH; // and the width of the icon, if any @@ -1797,7 +1798,7 @@ void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) wxDCClipper clipper(dc, x, HEADER_OFFSET_Y, cw, h - 4 ); dc.DrawText( item.GetText(), - xAligned + EXTRA_WIDTH, HEADER_OFFSET_Y + EXTRA_HEIGHT ); + xAligned + EXTRA_WIDTH, h / 2 - hLabel / 2 ); //HEADER_OFFSET_Y + EXTRA_HEIGHT ); x += wCol; } @@ -1917,8 +1918,8 @@ void wxListHeaderWindow::OnMouse( wxMouseEvent &event ) { m_isDragging = TRUE; m_currentX = x; - DrawCurrent(); CaptureMouse(); + DrawCurrent(); } //else: column resizing was vetoed by the user code } @@ -1953,6 +1954,7 @@ void wxListHeaderWindow::OnMouse( wxMouseEvent &event ) void wxListHeaderWindow::OnSetFocus( wxFocusEvent &WXUNUSED(event) ) { m_owner->SetFocus(); + m_owner->Update(); } bool wxListHeaderWindow::SendListEvent(wxEventType type, wxPoint pos) @@ -2261,8 +2263,6 @@ wxListLineData *wxListMainWindow::GetDummyLine() const wxCoord wxListMainWindow::GetLineHeight() const { - wxASSERT_MSG( HasFlag(wxLC_REPORT), _T("only works in report mode") ); - // we cache the line height as calling GetTextExtent() is slow if ( !m_lineHeight ) { @@ -2698,22 +2698,18 @@ void wxListMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) } } +#ifndef __WXMAC__ + // Don't draw rect outline under Mac at all. if ( HasCurrent() ) { - // don't draw rect outline under Max if we already have the background - // color but under other platforms only draw it if we do: it is a bit - // silly to draw "focus rect" if we don't have focus! -#ifdef __WXMAC__ - if ( !m_hasFocus ) -#else // !__WXMAC__ if ( m_hasFocus ) -#endif // __WXMAC__/!__WXMAC__ { dc.SetPen( *wxBLACK_PEN ); dc.SetBrush( *wxTRANSPARENT_BRUSH ); dc.DrawRectangle( GetLineHighlightRect(m_current) ); } } +#endif dc.EndDrawing(); } @@ -3069,6 +3065,9 @@ void wxListMainWindow::OnArrowChar(size_t newCurrent, const wxKeyEvent& event) { ChangeCurrent(newCurrent); + // refresh the old focus to remove it + RefreshLine( oldCurrent ); + // select all the items between the old and the new one if ( oldCurrent > newCurrent ) { @@ -3085,7 +3084,7 @@ void wxListMainWindow::OnArrowChar(size_t newCurrent, const wxKeyEvent& event) HighlightAll(FALSE); ChangeCurrent(newCurrent); - + // refresh the old focus to remove it RefreshLine( oldCurrent ); @@ -3094,7 +3093,7 @@ void wxListMainWindow::OnArrowChar(size_t newCurrent, const wxKeyEvent& event) HighlightLine( m_current, TRUE ); } } - + RefreshLine( m_current ); MoveToFocus(); @@ -4597,6 +4596,8 @@ bool wxGenericListCtrl::Create(wxWindow *parent, m_mainWin = (wxListMainWindow*) NULL; m_headerWin = (wxListHeaderWindow*) NULL; + m_headerHeight = 0; + if ( !(style & wxLC_MASK_TYPE) ) { style = style | wxLC_LIST;