wxListCtrl in report/virtual modes seems to work
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10927 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -54,11 +54,7 @@
|
|||||||
#ifdef __GNUG__
|
#ifdef __GNUG__
|
||||||
#pragma implementation "listctrl.h"
|
#pragma implementation "listctrl.h"
|
||||||
#pragma implementation "listctrlbase.h"
|
#pragma implementation "listctrlbase.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
#include "listctrl.old.cpp"
|
|
||||||
#else
|
|
||||||
|
|
||||||
// For compilers that support precompilation, includes "wx.h".
|
// For compilers that support precompilation, includes "wx.h".
|
||||||
#include "wx/wxprec.h"
|
#include "wx/wxprec.h"
|
||||||
@@ -956,6 +952,8 @@ void wxSelectionStore::OnItemDelete(size_t item)
|
|||||||
{
|
{
|
||||||
// this item itself was in m_itemsSel, remove it from there
|
// this item itself was in m_itemsSel, remove it from there
|
||||||
m_itemsSel.RemoveAt(i);
|
m_itemsSel.RemoveAt(i);
|
||||||
|
|
||||||
|
count--;
|
||||||
}
|
}
|
||||||
|
|
||||||
// and adjust the index of all which follow it
|
// and adjust the index of all which follow it
|
||||||
@@ -1517,18 +1515,10 @@ void wxListLineData::Draw( wxDC *dc )
|
|||||||
}
|
}
|
||||||
|
|
||||||
void wxListLineData::DrawInReportMode( wxDC *dc,
|
void wxListLineData::DrawInReportMode( wxDC *dc,
|
||||||
const wxRect& r,
|
const wxRect& rect,
|
||||||
const wxRect& rectHL,
|
const wxRect& rectHL,
|
||||||
bool highlighted )
|
bool highlighted )
|
||||||
{
|
{
|
||||||
wxRect rect = r;
|
|
||||||
#if 0
|
|
||||||
m_owner->CalcScrolledPosition( rect.x, rect.y, &rect.x, &rect.y );
|
|
||||||
|
|
||||||
if ( !m_owner->IsExposed( rect ) )
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// use our own flag if we maintain it
|
// use our own flag if we maintain it
|
||||||
if ( !IsVirtual() )
|
if ( !IsVirtual() )
|
||||||
highlighted = m_highlighted;
|
highlighted = m_highlighted;
|
||||||
@@ -1578,9 +1568,8 @@ void wxListLineData::DrawInReportMode( wxDC *dc,
|
|||||||
wxCHECK_RET( node, _T("no subitems at all??") );
|
wxCHECK_RET( node, _T("no subitems at all??") );
|
||||||
|
|
||||||
size_t col = 0;
|
size_t col = 0;
|
||||||
int x = rect.x + HEADER_OFFSET_X;
|
wxCoord x = rect.x + HEADER_OFFSET_X,
|
||||||
|
y = rect.y + (LINE_SPACING + EXTRA_HEIGHT) / 2;
|
||||||
rect.y += (LINE_SPACING + EXTRA_HEIGHT) / 2;
|
|
||||||
|
|
||||||
while ( node )
|
while ( node )
|
||||||
{
|
{
|
||||||
@@ -1591,18 +1580,18 @@ void wxListLineData::DrawInReportMode( wxDC *dc,
|
|||||||
if ( item->HasImage() )
|
if ( item->HasImage() )
|
||||||
{
|
{
|
||||||
int ix, iy;
|
int ix, iy;
|
||||||
m_owner->DrawImage( item->GetImage(), dc, x, rect.y );
|
m_owner->DrawImage( item->GetImage(), dc, x, y );
|
||||||
m_owner->GetImageSize( item->GetImage(), ix, iy );
|
m_owner->GetImageSize( item->GetImage(), ix, iy );
|
||||||
x += ix + 5; // FIXME: what is "5"?
|
x += ix + 5; // FIXME: what is "5"?
|
||||||
}
|
}
|
||||||
|
|
||||||
int width = m_owner->GetColumnWidth(col++);
|
int width = m_owner->GetColumnWidth(col++);
|
||||||
|
|
||||||
wxDCClipper clipper(*dc, x, rect.y, width, rect.height);
|
wxDCClipper clipper(*dc, x, y, width, rect.height);
|
||||||
|
|
||||||
if ( item->HasText() )
|
if ( item->HasText() )
|
||||||
{
|
{
|
||||||
dc->DrawText( item->GetText(), x, rect.y );
|
dc->DrawText( item->GetText(), x, y );
|
||||||
}
|
}
|
||||||
|
|
||||||
x = xOld + width;
|
x = xOld + width;
|
||||||
@@ -3549,18 +3538,6 @@ void wxListMainWindow::RecalculatePositions()
|
|||||||
GetScrollPos(wxHORIZONTAL),
|
GetScrollPos(wxHORIZONTAL),
|
||||||
GetScrollPos(wxVERTICAL),
|
GetScrollPos(wxVERTICAL),
|
||||||
TRUE );
|
TRUE );
|
||||||
|
|
||||||
// FIXME: wxGTK::wxScrolledWindow doesn't have SetTargetRect()
|
|
||||||
#if !defined(__WXGTK__) || defined(__WXUNIVERSAL__)
|
|
||||||
// we must have an integer number of lines on screen and so we fit
|
|
||||||
// the real control size to the line height
|
|
||||||
wxRect rect;
|
|
||||||
rect.x = 0;
|
|
||||||
rect.y = LINE_SPACING;
|
|
||||||
rect.width = clientWidth;
|
|
||||||
rect.height = ((clientHeight - LINE_SPACING) / lineHeight)*lineHeight;
|
|
||||||
SetTargetRect(rect);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else // !report
|
else // !report
|
||||||
{
|
{
|
||||||
@@ -3723,12 +3700,20 @@ void wxListMainWindow::DeleteItem( long lindex )
|
|||||||
|
|
||||||
SendNotify( index, wxEVT_COMMAND_LIST_DELETE_ITEM );
|
SendNotify( index, wxEVT_COMMAND_LIST_DELETE_ITEM );
|
||||||
|
|
||||||
if ( IsVirtual() )
|
if ( InReportView() )
|
||||||
{
|
{
|
||||||
if ( m_lineTo == --m_countVirt )
|
if ( m_lineTo == GetItemCount() - 1 )
|
||||||
{
|
{
|
||||||
m_lineTo--;
|
m_lineTo--;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// refresh before removing the line
|
||||||
|
RefreshLines(index, GetItemCount() - 1);
|
||||||
|
|
||||||
|
if ( IsVirtual() )
|
||||||
|
{
|
||||||
|
m_countVirt--;
|
||||||
|
|
||||||
m_selStore.OnItemDelete(index);
|
m_selStore.OnItemDelete(index);
|
||||||
}
|
}
|
||||||
@@ -3736,8 +3721,6 @@ void wxListMainWindow::DeleteItem( long lindex )
|
|||||||
{
|
{
|
||||||
m_lines.RemoveAt( index );
|
m_lines.RemoveAt( index );
|
||||||
}
|
}
|
||||||
|
|
||||||
RefreshLines(index, GetItemCount() - 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxListMainWindow::DeleteColumn( int col )
|
void wxListMainWindow::DeleteColumn( int col )
|
||||||
@@ -4012,7 +3995,9 @@ void wxListMainWindow::GetVisibleLinesRange(size_t *from, size_t *to)
|
|||||||
|
|
||||||
wxASSERT_MSG( m_lineFrom < count, _T("invalid scroll position?") );
|
wxASSERT_MSG( m_lineFrom < count, _T("invalid scroll position?") );
|
||||||
|
|
||||||
m_lineTo = m_lineFrom + m_linesPerPage - 1;
|
// we redraw one extra line but this is needed to make the redrawing
|
||||||
|
// logic work when there is a fractional number of lines on screen
|
||||||
|
m_lineTo = m_lineFrom + m_linesPerPage;
|
||||||
if ( m_lineTo >= count )
|
if ( m_lineTo >= count )
|
||||||
m_lineTo = count - 1;
|
m_lineTo = count - 1;
|
||||||
}
|
}
|
||||||
@@ -4824,5 +4809,3 @@ void wxListCtrl::SetItemCount(long count)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_LISTCTRL
|
#endif // wxUSE_LISTCTRL
|
||||||
|
|
||||||
#endif
|
|
||||||
|
Reference in New Issue
Block a user