summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/scroll/scrollbar_theme.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/scroll/scrollbar_theme.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/scroll/scrollbar_theme.cc74
1 files changed, 34 insertions, 40 deletions
diff --git a/chromium/third_party/blink/renderer/core/scroll/scrollbar_theme.cc b/chromium/third_party/blink/renderer/core/scroll/scrollbar_theme.cc
index 1478704a8eb..2f8f6dc37aa 100644
--- a/chromium/third_party/blink/renderer/core/scroll/scrollbar_theme.cc
+++ b/chromium/third_party/blink/renderer/core/scroll/scrollbar_theme.cc
@@ -28,9 +28,8 @@
#include "base/optional.h"
#include "build/build_config.h"
#include "cc/input/scrollbar.h"
+#include "third_party/blink/public/common/input/web_mouse_event.h"
#include "third_party/blink/public/platform/platform.h"
-#include "third_party/blink/public/platform/web_mouse_event.h"
-#include "third_party/blink/public/platform/web_point.h"
#include "third_party/blink/public/platform/web_rect.h"
#include "third_party/blink/renderer/core/scroll/scrollbar.h"
#include "third_party/blink/renderer/core/scroll/scrollbar_theme_overlay_mock.h"
@@ -50,29 +49,37 @@
namespace blink {
void ScrollbarTheme::Paint(const Scrollbar& scrollbar,
- GraphicsContext& graphics_context) {
- PaintTrackButtonsTickmarks(graphics_context, scrollbar, IntPoint());
+ GraphicsContext& graphics_context,
+ const IntPoint& paint_offset) {
+ PaintTrackButtonsTickmarks(graphics_context, scrollbar, paint_offset);
- IntRect thumb_rect = ThumbRect(scrollbar);
- if (HasThumb(scrollbar))
+ if (HasThumb(scrollbar)) {
+ IntRect thumb_rect = ThumbRect(scrollbar);
+ thumb_rect.MoveBy(paint_offset);
PaintThumbWithOpacity(graphics_context, scrollbar, thumb_rect);
+ }
}
-ScrollbarPart ScrollbarTheme::HitTest(const Scrollbar& scrollbar,
- const IntPoint& position_in_root_frame) {
- ScrollbarPart result = kNoPart;
+ScrollbarPart ScrollbarTheme::HitTestRootFramePosition(
+ const Scrollbar& scrollbar,
+ const IntPoint& position_in_root_frame) {
+ if (!AllowsHitTest())
+ return kNoPart;
+
if (!scrollbar.Enabled())
- return result;
+ return kNoPart;
IntPoint test_position =
scrollbar.ConvertFromRootFrame(position_in_root_frame);
test_position.Move(scrollbar.X(), scrollbar.Y());
+ return HitTest(scrollbar, test_position);
+}
+ScrollbarPart ScrollbarTheme::HitTest(const Scrollbar& scrollbar,
+ const IntPoint& test_position) {
if (!scrollbar.FrameRect().Contains(test_position))
return kNoPart;
- result = kScrollbarBGPart;
-
IntRect track = TrackRect(scrollbar);
if (track.Contains(test_position)) {
IntRect before_thumb_rect;
@@ -81,27 +88,20 @@ ScrollbarPart ScrollbarTheme::HitTest(const Scrollbar& scrollbar,
SplitTrack(scrollbar, track, before_thumb_rect, thumb_rect,
after_thumb_rect);
if (thumb_rect.Contains(test_position))
- result = kThumbPart;
- else if (before_thumb_rect.Contains(test_position))
- result = kBackTrackPart;
- else if (after_thumb_rect.Contains(test_position))
- result = kForwardTrackPart;
- else
- result = kTrackBGPart;
- } else if (BackButtonRect(scrollbar, kBackButtonStartPart)
- .Contains(test_position)) {
- result = kBackButtonStartPart;
- } else if (BackButtonRect(scrollbar, kBackButtonEndPart)
- .Contains(test_position)) {
- result = kBackButtonEndPart;
- } else if (ForwardButtonRect(scrollbar, kForwardButtonStartPart)
- .Contains(test_position)) {
- result = kForwardButtonStartPart;
- } else if (ForwardButtonRect(scrollbar, kForwardButtonEndPart)
- .Contains(test_position)) {
- result = kForwardButtonEndPart;
+ return kThumbPart;
+ if (before_thumb_rect.Contains(test_position))
+ return kBackTrackPart;
+ if (after_thumb_rect.Contains(test_position))
+ return kForwardTrackPart;
+ return kTrackBGPart;
}
- return result;
+
+ if (BackButtonRect(scrollbar).Contains(test_position))
+ return kBackButtonStartPart;
+ if (ForwardButtonRect(scrollbar).Contains(test_position))
+ return kForwardButtonEndPart;
+
+ return kScrollbarBGPart;
}
void ScrollbarTheme::PaintScrollCorner(
@@ -312,19 +312,13 @@ void ScrollbarTheme::PaintTrackAndButtons(GraphicsContext& context,
DisplayItem::kScrollbarTrackAndButtons);
if (HasButtons(scrollbar)) {
- IntRect back_button_rect = BackButtonRect(scrollbar, kBackButtonStartPart);
+ IntRect back_button_rect = BackButtonRect(scrollbar);
back_button_rect.MoveBy(offset);
PaintButton(context, scrollbar, back_button_rect, kBackButtonStartPart);
- IntRect forward_button_rect =
- ForwardButtonRect(scrollbar, kForwardButtonEndPart);
+ IntRect forward_button_rect = ForwardButtonRect(scrollbar);
forward_button_rect.MoveBy(offset);
PaintButton(context, scrollbar, forward_button_rect, kForwardButtonEndPart);
-
- // Non-custom scrollbars don't have kBackButtonEndPart and
- // kForwardButtonStartPart.
- DCHECK(BackButtonRect(scrollbar, kBackButtonEndPart).IsEmpty());
- DCHECK(ForwardButtonRect(scrollbar, kForwardButtonStartPart).IsEmpty());
}
IntRect track_rect = TrackRect(scrollbar);