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

Unified Diff: cc/input/scrollbar_animation_controller.h

Issue 2554913002: Prevent overlay scrollbars expand or hover together (Closed)
Patch Set: for weiliangc's nit Created 3 years, 11 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
« no previous file with comments | « cc/BUILD.gn ('k') | cc/input/scrollbar_animation_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/input/scrollbar_animation_controller.h
diff --git a/cc/input/scrollbar_animation_controller.h b/cc/input/scrollbar_animation_controller.h
index bb3f810a4c2269d58267730ea97694916de2a899..25e129661251541c4145002a6c0bfe16c543cd4e 100644
--- a/cc/input/scrollbar_animation_controller.h
+++ b/cc/input/scrollbar_animation_controller.h
@@ -9,14 +9,13 @@
#include "base/memory/weak_ptr.h"
#include "base/time/time.h"
#include "cc/base/cc_export.h"
+#include "cc/input/single_scrollbar_animation_controller_thinning.h"
#include "cc/layers/layer_impl.h"
#include "cc/layers/scrollbar_layer_impl_base.h"
#include "ui/gfx/geometry/vector2d_f.h"
namespace cc {
-class ScrollbarAnimationController;
-
class CC_EXPORT ScrollbarAnimationControllerClient {
public:
virtual void PostDelayedScrollbarAnimationTask(const base::Closure& task,
@@ -33,6 +32,10 @@ class CC_EXPORT ScrollbarAnimationControllerClient {
// This abstract class represents the compositor-side analogy of
// ScrollbarAnimator. Individual platforms should subclass it to provide
// specialized implementation.
+// This class also passes the mouse state to each
+// SingleScrollbarAnimationControllerThinning. The thinning animations are
+// independent between vertical/horizontal and are managed by the
+// SingleScrollbarAnimationControllerThinnings.
class CC_EXPORT ScrollbarAnimationController {
public:
virtual ~ScrollbarAnimationController();
@@ -42,11 +45,19 @@ class CC_EXPORT ScrollbarAnimationController {
virtual void DidScrollBegin();
virtual void DidScrollUpdate(bool on_resize);
virtual void DidScrollEnd();
- virtual void DidMouseDown() {}
- virtual void DidMouseUp() {}
- virtual void DidMouseLeave() {}
- virtual void DidMouseMoveNear(float distance) {}
virtual bool ScrollbarsHidden() const;
+ virtual bool NeedThinningAnimation() const;
+
+ void DidMouseDown();
+ void DidMouseUp();
+ void DidMouseLeave();
+ void DidMouseMoveNear(ScrollbarOrientation, float);
+
+ bool mouse_is_over_scrollbar(ScrollbarOrientation orientation) const;
+ bool mouse_is_near_scrollbar(ScrollbarOrientation orientation) const;
+ bool mouse_is_near_any_scrollbar() const;
+
+ void set_mouse_move_distance_for_test(float distance);
protected:
ScrollbarAnimationController(int scroll_layer_id,
@@ -56,6 +67,7 @@ class CC_EXPORT ScrollbarAnimationController {
virtual void RunAnimationFrame(float progress) = 0;
virtual const base::TimeDelta& Duration() = 0;
+ virtual void ApplyOpacityToScrollbars(float opacity) = 0;
void StartAnimation();
void StopAnimation();
@@ -67,11 +79,23 @@ class CC_EXPORT ScrollbarAnimationController {
int scroll_layer_id() const { return scroll_layer_id_; }
+ bool animating_fade() const { return is_animating_; }
+
+ bool Captured() const;
+
+ std::unique_ptr<SingleScrollbarAnimationControllerThinning>
+ vertical_controller_;
+ std::unique_ptr<SingleScrollbarAnimationControllerThinning>
+ horizontal_controller_;
+
private:
// Returns how far through the animation we are as a progress value from
// 0 to 1.
float AnimationProgressAtTime(base::TimeTicks now);
+ SingleScrollbarAnimationControllerThinning& GetScrollbarAnimationController(
+ ScrollbarOrientation) const;
+
base::TimeTicks last_awaken_time_;
base::TimeDelta delay_before_starting_;
base::TimeDelta resize_delay_before_starting_;
« no previous file with comments | « cc/BUILD.gn ('k') | cc/input/scrollbar_animation_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698