1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-01 03:08:13 +00:00

LibGUI: Tint selected icons in {Icon,Table,Columns}View

Add a gentle tint to selected icons based on the selection color. :^)
This commit is contained in:
Andreas Kling 2020-10-26 21:32:27 +01:00
parent d172783d33
commit 4bc8768737
3 changed files with 16 additions and 5 deletions

View file

@ -130,10 +130,14 @@ void ColumnsView::paint_event(PaintEvent& event)
icon_rect.center_vertically_within(row_rect);
if (icon.is_icon()) {
if (auto* bitmap = icon.as_icon().bitmap_for_size(icon_size())) {
if (m_hovered_index.is_valid() && m_hovered_index.parent() == index.parent() && m_hovered_index.row() == index.row())
if (is_selected_row) {
auto tint = palette().selection().with_alpha(100);
painter.blit_filtered(icon_rect.location(), *bitmap, bitmap->rect(), [&](auto src) { return src.blend(tint); });
} else if (m_hovered_index.is_valid() && m_hovered_index.parent() == index.parent() && m_hovered_index.row() == index.row()) {
painter.blit_brightened(icon_rect.location(), *bitmap, bitmap->rect());
else
} else {
painter.blit(icon_rect.location(), *bitmap, bitmap->rect());
}
}
}

View file

@ -457,7 +457,10 @@ void IconView::paint_event(PaintEvent& event)
Gfx::IntRect destination = bitmap->rect();
destination.center_within(item_data.icon_rect);
if (m_hovered_index.is_valid() && m_hovered_index == item_data.index) {
if (item_data.selected) {
auto tint = palette().selection().with_alpha(100);
painter.blit_filtered(destination.location(), *bitmap, bitmap->rect(), [&](auto src) { return src.blend(tint); });
} else if (m_hovered_index.is_valid() && m_hovered_index == item_data.index) {
painter.blit_brightened(destination.location(), *bitmap, bitmap->rect());
} else {
painter.blit(destination.location(), *bitmap, bitmap->rect());

View file

@ -121,10 +121,14 @@ void TableView::paint_event(PaintEvent& event)
painter.blit(cell_rect.location(), data.as_bitmap(), data.as_bitmap().rect());
} else if (data.is_icon()) {
if (auto bitmap = data.as_icon().bitmap_for_size(16)) {
if (m_hovered_index.is_valid() && cell_index.row() == m_hovered_index.row())
if (is_selected_row) {
auto tint = palette().selection().with_alpha(100);
painter.blit_filtered(cell_rect.location(), *bitmap, bitmap->rect(), [&](auto src) { return src.blend(tint); });
} else if (m_hovered_index.is_valid() && cell_index.row() == m_hovered_index.row()) {
painter.blit_brightened(cell_rect.location(), *bitmap, bitmap->rect());
else
} else {
painter.blit(cell_rect.location(), *bitmap, bitmap->rect());
}
}
} else {
if (!is_selected_row) {