diff --git a/src/kits/interface/ListView.cpp b/src/kits/interface/ListView.cpp index c2bdbd2692..4b4aa71a81 100644 --- a/src/kits/interface/ListView.cpp +++ b/src/kits/interface/ListView.cpp @@ -207,8 +207,23 @@ BListView::Draw(BRect updateRect) BListItem* item = ItemAt(i); itemFrame.bottom = itemFrame.top + ceilf(item->Height()) - 1; - if (itemFrame.Intersects(updateRect)) + rgb_color textColor = ui_color(B_LIST_ITEM_TEXT_COLOR); + rgb_color disabledColor; + if (textColor.red + textColor.green + textColor.blue > 128 * 3) + disabledColor = tint_color(textColor, B_DARKEN_2_TINT); + else + disabledColor = tint_color(textColor, B_LIGHTEN_2_TINT); + + if (itemFrame.Intersects(updateRect)) { + if (!item->IsEnabled()) + SetHighColor(disabledColor); + else if (item->IsSelected()) + SetHighColor(ui_color(B_LIST_SELECTED_ITEM_TEXT_COLOR)); + else + SetHighColor(ui_color(B_LIST_ITEM_TEXT_COLOR)); + DrawItem(item, itemFrame); + } itemFrame.top = itemFrame.bottom + 1; } diff --git a/src/kits/interface/StringItem.cpp b/src/kits/interface/StringItem.cpp index d692185350..9d4c14b675 100644 --- a/src/kits/interface/StringItem.cpp +++ b/src/kits/interface/StringItem.cpp @@ -75,7 +75,6 @@ BStringItem::DrawItem(BView* owner, BRect frame, bool complete) if (fText == NULL) return; - rgb_color highColor = owner->HighColor(); rgb_color lowColor = owner->LowColor(); if (IsSelected() || complete) { @@ -86,30 +85,15 @@ BStringItem::DrawItem(BView* owner, BRect frame, bool complete) color = owner->ViewColor(); owner->SetLowColor(color); - owner->SetHighColor(color); - owner->FillRect(frame); + owner->FillRect(frame, B_SOLID_LOW); } else owner->SetLowColor(owner->ViewColor()); owner->MovePenTo(frame.left + be_control_look->DefaultLabelSpacing(), frame.top + fBaselineOffset); - if (!IsEnabled()) { - rgb_color textColor = ui_color(B_LIST_ITEM_TEXT_COLOR); - if (textColor.red + textColor.green + textColor.blue > 128 * 3) - owner->SetHighColor(tint_color(textColor, B_DARKEN_2_TINT)); - else - owner->SetHighColor(tint_color(textColor, B_LIGHTEN_2_TINT)); - } else { - if (IsSelected()) - owner->SetHighColor(ui_color(B_LIST_SELECTED_ITEM_TEXT_COLOR)); - else - owner->SetHighColor(ui_color(B_LIST_ITEM_TEXT_COLOR)); - } - owner->DrawString(fText); - owner->SetHighColor(highColor); owner->SetLowColor(lowColor); }