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:
parent
206313697f
commit
bdd7ba66b5
@ -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); }
|
||||
|
@ -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)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user