Skip to content

Commit b05c6df

Browse files
committed
scroll bar tweaks from nara
1 parent 97ab55a commit b05c6df

File tree

2 files changed

+28
-11
lines changed

2 files changed

+28
-11
lines changed

widget/ScrollbarDrawing.cpp

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -385,8 +385,8 @@ bool ScrollbarDrawing::PaintScrollbarButton(
385385
ColorPattern(ToDeviceColor(buttonColor)));
386386

387387
// Start with Up arrow.
388-
float arrowPolygonX[] = {-4.0f, 0.0f, 4.0f, 4.0f, 0.0f, -4.0f};
389-
float arrowPolygonY[] = {0.0f, -4.0f, 0.0f, 3.0f, -1.0f, 3.0f};
388+
float arrowPolygonX[] = {5.0, 8.5, 12.0, 12.0, 8.5, 5.0};
389+
float arrowPolygonY[] = {9.0, 6.0, 9.0, 12.0, 9.0, 12.0};
390390

391391
const float kPolygonSize = 17;
392392

@@ -396,7 +396,7 @@ bool ScrollbarDrawing::PaintScrollbarButton(
396396
break;
397397
case StyleAppearance::ScrollbarbuttonDown:
398398
for (int32_t i = 0; i < arrowNumPoints; i++) {
399-
arrowPolygonY[i] *= -1;
399+
arrowPolygonY[i] = kPolygonSize - arrowPolygonY[i];
400400
}
401401
break;
402402
case StyleAppearance::ScrollbarbuttonLeft:
@@ -409,15 +409,35 @@ bool ScrollbarDrawing::PaintScrollbarButton(
409409
case StyleAppearance::ScrollbarbuttonRight:
410410
for (int32_t i = 0; i < arrowNumPoints; i++) {
411411
float temp = arrowPolygonX[i];
412-
arrowPolygonX[i] = arrowPolygonY[i] * -1;
412+
arrowPolygonX[i] = kPolygonSize - arrowPolygonY[i];
413413
arrowPolygonY[i] = temp;
414414
}
415415
break;
416416
default:
417417
return false;
418418
}
419-
ThemeDrawing::PaintArrow(aDrawTarget, aRect, arrowPolygonX, arrowPolygonY,
420-
kPolygonSize, arrowNumPoints, arrowColor);
419+
420+
// Compute the path and draw the scrollbar.
421+
const float scale = ThemeDrawing::ScaleToFillRect(aRect, kPolygonSize);
422+
RefPtr<gfx::PathBuilder> builder = aDrawTarget.CreatePathBuilder();
423+
gfx::Point start =
424+
gfx::Point(aRect.X(), aRect.Y());
425+
gfx::Point p =
426+
start + gfx::Point(arrowPolygonX[0] * scale, arrowPolygonY[0] * scale);
427+
builder->MoveTo(p);
428+
for (int32_t i = 1; i < arrowNumPoints; i++) {
429+
p = start +
430+
gfx::Point(arrowPolygonX[i] * scale, arrowPolygonY[i] * scale);
431+
builder->LineTo(p);
432+
}
433+
RefPtr<gfx::Path> path = builder->Finish();
434+
435+
// The arrow should be drawn without antialiasing.
436+
DrawOptions arrowOptions(
437+
1.0f, gfx::CompositionOp::OP_OVER, gfx::AntialiasMode::NONE
438+
);
439+
440+
aDrawTarget.Fill(path, gfx::ColorPattern(ToDeviceColor(arrowColor)), arrowOptions);
421441
return true;
422442
}
423443

widget/windows/nsNativeThemeWin.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2817,11 +2817,8 @@ LayoutDeviceIntSize nsNativeThemeWin::ClassicGetMinimumWidgetSize(
28172817
break;
28182818
case StyleAppearance::ScrollbarbuttonLeft:
28192819
case StyleAppearance::ScrollbarbuttonRight:
2820-
// For scrollbar-width:thin, we don't display the buttons.
2821-
if (!ScrollbarDrawing::IsScrollbarWidthThin(aFrame)) {
2822-
result.width = ::GetSystemMetrics(SM_CXHSCROLL);
2823-
result.height = ::GetSystemMetrics(SM_CYHSCROLL);
2824-
}
2820+
result.width = ::GetSystemMetrics(SM_CYHSCROLL);
2821+
result.height = ::GetSystemMetrics(SM_CYHSCROLL);
28252822
break;
28262823
case StyleAppearance::ScrollbarVertical:
28272824
case StyleAppearance::ScrollbarHorizontal:

0 commit comments

Comments
 (0)