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

Unified Diff: cc/input/scrollbar_animation_controller_thinning.h

Issue 2554913002: Prevent overlay scrollbars expand or hover together (Closed)
Patch Set: fix for fade in/out together Created 4 years 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: cc/input/scrollbar_animation_controller_thinning.h
diff --git a/cc/input/scrollbar_animation_controller_thinning.h b/cc/input/scrollbar_animation_controller_thinning.h
index 236e595ea263ec5d9f090d913005b34bfbbcd967..3646f7cd9d233bf5b9f73c4d2eccfe9d4ddeebf3 100644
--- a/cc/input/scrollbar_animation_controller_thinning.h
+++ b/cc/input/scrollbar_animation_controller_thinning.h
@@ -10,11 +10,17 @@
#include "base/macros.h"
#include "cc/base/cc_export.h"
#include "cc/input/scrollbar_animation_controller.h"
+#include "cc/input/single_scrollbar_animation_controller_thinning.h"
namespace cc {
// Scrollbar animation that partially fades and thins after an idle delay,
// and reacts to mouse movements.
+
+// TODO(chaopeng) clean up the inheritance hierarchy after
+// ScrollbarAnimationControllerLinearFade merge into
+// ScrollbarAnimationControllerThinning so we can remove the empty overrides and
+// NOTREACHED() checks.
class CC_EXPORT ScrollbarAnimationControllerThinning
: public ScrollbarAnimationController {
public:
@@ -28,20 +34,23 @@ class CC_EXPORT ScrollbarAnimationControllerThinning
~ScrollbarAnimationControllerThinning() override;
- void set_mouse_move_distance_for_test(float distance) {
- mouse_move_distance_to_trigger_animation_ = distance;
- }
- bool mouse_is_over_scrollbar() const { return mouse_is_over_scrollbar_; }
- bool mouse_is_near_scrollbar() const { return mouse_is_near_scrollbar_; }
+ void set_mouse_move_distance_for_test(float distance);
+
+ bool mouse_is_over_scrollbar(ScrollbarOrientation orientation) const;
+ bool mouse_is_near_scrollbar(ScrollbarOrientation orientation) const;
+ bool mouse_is_near_any_scrollbar() const;
+ bool captured() const;
bokan 2016/12/16 14:57:42 This can be private?
+ bool ScrollbarsHidden() const override;
+ bool Animate(base::TimeTicks now) override;
void DidScrollUpdate(bool on_resize) override;
void DidScrollEnd() override;
void DidMouseDown() override;
void DidMouseUp() override;
void DidMouseLeave() override;
- void DidMouseMoveNear(float distance) override;
- bool ScrollbarsHidden() const override;
+ void DidMouseMoveNear(ScrollbarOrientation, float) override;
+ void EnsureScrollbarFadeIn() override;
protected:
ScrollbarAnimationControllerThinning(
@@ -52,38 +61,23 @@ class CC_EXPORT ScrollbarAnimationControllerThinning
base::TimeDelta fade_duration,
base::TimeDelta thinning_duration);
+ void StartAnimation() override;
+
void RunAnimationFrame(float progress) override;
const base::TimeDelta& Duration() override;
private:
- // Describes whether the current animation should INCREASE (thicken)
- // a bar or DECREASE it (thin).
- enum AnimationChange { NONE, INCREASE, DECREASE };
- enum AnimatingProperty { OPACITY, THICKNESS };
- float ThumbThicknessScaleAt(float progress);
- float AdjustScale(float new_value,
- float current_value,
- AnimationChange animation_change,
- float min_value,
- float max_value);
- void ApplyOpacity(float opacity);
- void ApplyThumbThicknessScale(float thumb_thickness_scale);
-
- void SetCurrentAnimatingProperty(AnimatingProperty property);
-
- float opacity_;
- bool captured_;
- bool mouse_is_over_scrollbar_;
- bool mouse_is_near_scrollbar_;
- // Are we narrowing or thickening the bars.
- AnimationChange thickness_change_;
- // How close should the mouse be to the scrollbar before we thicken it.
- float mouse_move_distance_to_trigger_animation_;
-
- base::TimeDelta fade_duration_;
- base::TimeDelta thinning_duration_;
-
- AnimatingProperty current_animating_property_;
+ std::unique_ptr<SingleScrollbarAnimationControllerThinning>
+ vertical_controller_;
+ std::unique_ptr<SingleScrollbarAnimationControllerThinning>
+ horizontal_controller_;
+
+ bool hidden_;
+
+ SingleScrollbarAnimationControllerThinning& GetScrollbarAnimationController(
+ ScrollbarOrientation) const;
+
+ void DidChangeScrollbarVisibility(bool hidden);
DISALLOW_COPY_AND_ASSIGN(ScrollbarAnimationControllerThinning);
};

Powered by Google App Engine
This is Rietveld 408576698