Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: backport KDE icon size fix (#17497)
- Loading branch information
1 parent
5b9393c
commit 7b1f5a9
Showing
2 changed files
with
38 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
37 changes: 37 additions & 0 deletions
37
patches/common/chromium/fix_system_tray_icons_being_cropped_under_kde.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Samuel Attard <sattard@slack-corp.com> | ||
Date: Wed, 20 Mar 2019 22:48:27 -0700 | ||
Subject: Fix system tray icons being cropped under KDE | ||
|
||
The code that adds padding to too small icons was breaking the larger | ||
ones by cutting the minimal size (22x22px) out of their center. | ||
|
||
Backports: https://chromium-review.googlesource.com/c/chromium/src/+/1173235 | ||
|
||
diff --git a/chrome/browser/ui/libgtkui/app_indicator_icon.cc b/chrome/browser/ui/libgtkui/app_indicator_icon.cc | ||
index 5aeb9d4d115ccae7763872aaa50734ead5228ec6..96134270493893c27b1f903028097220a6dd6fcf 100644 | ||
--- a/chrome/browser/ui/libgtkui/app_indicator_icon.cc | ||
+++ b/chrome/browser/ui/libgtkui/app_indicator_icon.cc | ||
@@ -285,15 +285,16 @@ AppIndicatorIcon::WriteKDE4TempImageOnWorkerThread( | ||
std::string icon_name = base::StringPrintf( | ||
"chrome_app_indicator2_%s", base::MD5DigestToBase16(digest).c_str()); | ||
|
||
- // If |bitmap| is not 22x22, KDE does some really ugly resizing. Pad |bitmap| | ||
- // with transparent pixels to make it 22x22. | ||
- const int kDesiredSize = 22; | ||
+ // If |bitmap| is smaller than 22x22, KDE does some really ugly resizing. | ||
+ // Pad |bitmap| with transparent pixels to make it 22x22. | ||
+ const int kMinimalSize = 22; | ||
SkBitmap scaled_bitmap; | ||
- scaled_bitmap.allocN32Pixels(kDesiredSize, kDesiredSize); | ||
+ scaled_bitmap.allocN32Pixels(std::max(bitmap.width(), kMinimalSize), | ||
+ std::max(bitmap.height(), kMinimalSize)); | ||
scaled_bitmap.eraseARGB(0, 0, 0, 0); | ||
SkCanvas canvas(scaled_bitmap); | ||
- canvas.drawBitmap(bitmap, (kDesiredSize - bitmap.width()) / 2, | ||
- (kDesiredSize - bitmap.height()) / 2); | ||
+ canvas.drawBitmap(bitmap, (scaled_bitmap.width() - bitmap.width()) / 2, | ||
+ (scaled_bitmap.height() - bitmap.height()) / 2); | ||
|
||
base::FilePath image_path = image_dir.Append(icon_name + ".png"); | ||
if (!WriteFile(image_path, scaled_bitmap)) |