Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(194)

Unified Diff: ui/native_theme/native_theme_base.cc

Issue 1911973002: Fix scrollbar buttons at hidpi when enable-use-zoom-for-dsf is on. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/native_theme/native_theme_base.cc
diff --git a/ui/native_theme/native_theme_base.cc b/ui/native_theme/native_theme_base.cc
index cc94eafb7b432d0af3abfcb0c9dcabb5b9cde16b..abd7edbe82b0ae9d904736b29df23dfd9be6c192 100644
--- a/ui/native_theme/native_theme_base.cc
+++ b/ui/native_theme/native_theme_base.cc
@@ -358,43 +358,49 @@ void NativeThemeBase::PaintArrow(SkCanvas* gc,
const gfx::Rect& rect,
Part direction,
SkColor color) const {
- int width_middle, length_middle;
- if (direction == kScrollbarUpArrow || direction == kScrollbarDownArrow) {
- width_middle = rect.width() / 2 + 1;
- length_middle = rect.height() / 2 + 1;
- } else {
- length_middle = rect.width() / 2 + 1;
- width_middle = rect.height() / 2 + 1;
- }
+ int width_middle = rect.width() / 2 + 1;
+ int length_middle = rect.height() / 2 + 1;
Evan Stade 2016/04/25 02:35:59 confusing var name -- why not height_middle?
Bret 2016/04/25 23:24:32 No reason, it was named that before I messed with
SkPaint paint;
paint.setColor(color);
paint.setAntiAlias(false);
paint.setStyle(SkPaint::kFill_Style);
+ int arrow_altitude;
+ if (direction == kScrollbarUpArrow || direction == kScrollbarDownArrow) {
+ arrow_altitude = length_middle / 2;
+ } else {
Evan Stade 2016/04/25 02:35:59 nit: no curlies also ternary assignment is probab
Bret 2016/04/25 23:24:32 Replaced with ternary.
+ arrow_altitude = width_middle / 2;
+ }
+ int arrow_base_length = arrow_altitude * 2 - 1;
Evan Stade 2016/04/25 02:35:59 seems a bit silly to divide by 2 then multiply by
Bret 2016/04/25 23:24:32 I guess it does look silly, but those are the valu
Evan Stade 2016/04/25 23:38:16 oops, this last bit of the comment was supposed to
+
SkPath path;
- // The constants in this block of code are hand-tailored to produce good
+ // The calculations in this block of code are hand-tailored to produce good
// looking arrows without anti-aliasing.
switch (direction) {
Evan Stade 2016/04/25 02:35:59 what if you just calculated the path once (for an
Bret 2016/04/25 23:24:32 Didn't work. The arrows still need to be centered
case kScrollbarUpArrow:
- path.moveTo(rect.x() + width_middle - 4, rect.y() + length_middle + 2);
- path.rLineTo(7, 0);
- path.rLineTo(-4, -4);
+ path.moveTo(rect.x() + width_middle - arrow_altitude,
+ rect.y() + length_middle + (arrow_altitude / 2));
Evan Stade 2016/04/25 02:35:59 the asymmetry here is weird. Why are you doing int
Bret 2016/04/25 23:24:32 I was making sure everything looked the same at 1x
+ path.rLineTo(arrow_base_length, 0);
+ path.rLineTo(-arrow_altitude, -arrow_altitude);
break;
case kScrollbarDownArrow:
- path.moveTo(rect.x() + width_middle - 4, rect.y() + length_middle - 3);
- path.rLineTo(7, 0);
- path.rLineTo(-4, 4);
+ path.moveTo(rect.x() + width_middle - arrow_altitude,
+ rect.y() + length_middle - ceil(arrow_altitude / 2.0));
+ path.rLineTo(arrow_base_length, 0);
+ path.rLineTo(-arrow_altitude, arrow_altitude);
break;
case kScrollbarRightArrow:
- path.moveTo(rect.x() + length_middle - 3, rect.y() + width_middle - 4);
- path.rLineTo(0, 7);
- path.rLineTo(4, -4);
+ path.moveTo(rect.x() + width_middle - (arrow_altitude / 2),
+ rect.y() + length_middle - arrow_altitude);
+ path.rLineTo(0, arrow_base_length);
+ path.rLineTo(arrow_altitude, -arrow_altitude);
break;
case kScrollbarLeftArrow:
- path.moveTo(rect.x() + length_middle + 1, rect.y() + width_middle - 5);
- path.rLineTo(0, 9);
- path.rLineTo(-4, -4);
+ path.moveTo(rect.x() + width_middle + 1,
+ rect.y() + length_middle - (arrow_altitude + 1));
+ path.rLineTo(0, arrow_base_length + 2);
Evan Stade 2016/04/25 02:35:59 can you leave comments explaining the magic consta
Bret 2016/04/25 23:24:32 To be honest, I'm not really sure why these consta
Evan Stade 2016/04/25 23:38:16 The new code is even kookier than the old, and I s
+ path.rLineTo(-arrow_altitude, -arrow_altitude);
break;
default:
break;

Powered by Google App Engine
This is Rietveld 408576698