BColumnListView: Enable invalidating rows, fix SetField()

* Seems like there was no easy way to simply invalidate
   a given BRow. Introduced BColumnListView::InvalidateRow().
 * BRow::SetField() tried to invalidate the row, but invalidated
   the listview instead of the BOutlineView responsible for
   drawing the list contents. Use the new InvaalidateRow().
This commit is contained in:
Stephan Aßmus 2013-09-16 23:16:52 +02:00 committed by Rene Gollent
parent 72b9e4a7bc
commit ed6f171aa6
2 changed files with 22 additions and 3 deletions

View File

@ -135,6 +135,8 @@ public:
bool IsExpanded() const;
bool IsSelected() const;
void Invalidate();
private:
// Blows up into the debugger if the validation fails.
void ValidateFields() const;
@ -332,6 +334,8 @@ public:
parentRow1 = NULL, BRow* parentRow2 = NULL);
void Clear();
void InvalidateRow(BRow* row);
// Appearance (DEPRECATED)
void GetFont(BFont* font) const
{ BView::GetFont(font); }

View File

@ -500,9 +500,7 @@ BRow::SetField(BField* field, int32 logicalFieldIndex)
if (NULL != fList) {
ValidateField(field, logicalFieldIndex);
BRect inv;
fList->GetRowRect(this, &inv);
fList->Invalidate(inv);
Invalidate();
}
fFields.AddItem(field, logicalFieldIndex);
@ -530,6 +528,14 @@ BRow::IsSelected() const
}
void
BRow::Invalidate()
{
if (fList != NULL)
fList->InvalidateRow(this);
}
void
BRow::ValidateFields() const
{
@ -1340,6 +1346,15 @@ BColumnListView::Clear()
}
void
BColumnListView::InvalidateRow(BRow* row)
{
BRect updateRect;
GetRowRect(row, &updateRect);
fOutlineView->Invalidate(updateRect);
}
void
BColumnListView::SetFont(const BFont* font, uint32 mask)
{