Skip to content

Commit

Permalink
fix: backport KDE icon size fix (#17497)
Browse files Browse the repository at this point in the history
  • Loading branch information
MarshallOfSound authored and ckerr committed Mar 21, 2019
1 parent 5b9393c commit 7b1f5a9
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions patches/common/chromium/.patches
Expand Up @@ -92,3 +92,4 @@ tts.patch
do_not_allow_impl_side_invalidations_until_frame_sink_is_fully_active.patch
enable_inputpane_virtual_keyboard_functionality_by_default.patch
merge_m72_filereader_make_a_copy_of_the_arraybuffer_when_returning.patch
fix_system_tray_icons_being_cropped_under_kde.patch
@@ -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))

0 comments on commit 7b1f5a9

Please sign in to comment.