From 2d9b9e209b4fc0f808fdd93ab61f0f2c171d6635 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 27 Sep 2022 18:31:22 -0400 Subject: [PATCH] IconView: Scale icon_size constants. Part of #17914. Also affects DataTranslators. --- src/kits/shared/IconView.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/kits/shared/IconView.cpp b/src/kits/shared/IconView.cpp index e69b6828c4..5fc2aa81b2 100644 --- a/src/kits/shared/IconView.cpp +++ b/src/kits/shared/IconView.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -27,7 +28,7 @@ IconView::IconView(icon_size iconSize) : BView("IconView", B_WILL_DRAW), fIconSize(iconSize), - fIconBitmap(new BBitmap(BRect(iconSize), B_RGBA32)), + fIconBitmap(NULL), fDrawIcon(false) { SetViewUIColor(B_PANEL_BACKGROUND_COLOR); @@ -46,8 +47,9 @@ IconView::SetIcon(const BPath& path, icon_size iconSize) { fDrawIcon = false; - if (iconSize != fIconSize) { - BBitmap* bitmap = new BBitmap(BRect(iconSize), B_RGBA32); + if (iconSize != fIconSize || fIconBitmap == NULL) { + BBitmap* bitmap = new BBitmap(BRect(BPoint(0, 0), + be_control_look->ComposeIconSize(iconSize)), B_RGBA32); if (bitmap == NULL) return B_NO_MEMORY; @@ -64,7 +66,8 @@ IconView::SetIcon(const BPath& path, icon_size iconSize) BNode node(&entry); BNodeInfo info(&node); - status = info.GetTrackerIcon(fIconBitmap, fIconSize); + status = info.GetTrackerIcon(fIconBitmap, + (icon_size)fIconBitmap->Bounds().IntegerWidth()); if (status != B_OK) return status; @@ -84,8 +87,9 @@ IconView::SetIcon(const uint8_t* data, size_t size, icon_size iconSize) { fDrawIcon = false; - if (iconSize != fIconSize) { - BBitmap* bitmap = new BBitmap(BRect(iconSize), B_RGBA32); + if (iconSize != fIconSize || fIconBitmap == NULL) { + BBitmap* bitmap = new BBitmap(BRect(BPoint(0, 0), + be_control_look->ComposeIconSize(iconSize)), B_RGBA32); if (bitmap == NULL) return B_NO_MEMORY; @@ -130,7 +134,7 @@ IconView::SetIcon(const BBitmap* icon) if (status != B_OK) return status; - fIconSize = (icon_size)(fIconBitmap->Bounds().IntegerWidth() + 1); + fIconSize = (icon_size)-1; _SetSize(); fDrawIcon = true; @@ -176,7 +180,7 @@ IconView::InitCheck() const void IconView::_SetSize() { - SetExplicitMinSize(BSize(fIconSize, fIconSize)); - SetExplicitMaxSize(BSize(fIconSize, fIconSize)); - SetExplicitPreferredSize(BSize(fIconSize, fIconSize)); + SetExplicitMinSize(fIconBitmap->Bounds().Size()); + SetExplicitMaxSize(fIconBitmap->Bounds().Size()); + SetExplicitPreferredSize(fIconBitmap->Bounds().Size()); }