diff options
Diffstat (limited to 'views/controls/scrollbar/base_scroll_bar_button.h')
-rw-r--r-- | views/controls/scrollbar/base_scroll_bar_button.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/views/controls/scrollbar/base_scroll_bar_button.h b/views/controls/scrollbar/base_scroll_bar_button.h new file mode 100644 index 0000000..77bb666 --- /dev/null +++ b/views/controls/scrollbar/base_scroll_bar_button.h @@ -0,0 +1,50 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef VIEWS_CONTROLS_SCROLLBAR_BASE_SCROLL_BAR_BUTTON_H_ +#define VIEWS_CONTROLS_SCROLLBAR_BASE_SCROLL_BAR_BUTTON_H_ +#pragma once + +#include "views/controls/button/custom_button.h" + +#include "views/repeat_controller.h" + +#if defined(OS_LINUX) +#include "ui/gfx/screen.h" +#endif + +namespace views { + +/////////////////////////////////////////////////////////////////////////////// +// +// ScrollBarButton +// +// A button that activates on mouse pressed rather than released, and that +// continues to fire the clicked action as the mouse button remains pressed +// down on the button. +// +/////////////////////////////////////////////////////////////////////////////// +class BaseScrollBarButton : public CustomButton { + public: + explicit BaseScrollBarButton(ButtonListener* listener); + virtual ~BaseScrollBarButton(); + + protected: + virtual bool OnMousePressed(const MouseEvent& event) OVERRIDE; + virtual void OnMouseReleased(const MouseEvent& event) OVERRIDE; + virtual void OnMouseCaptureLost() OVERRIDE; + + private: + void NotifyClick(); + + // The repeat controller that we use to repeatedly click the button when the + // mouse button is down. + RepeatController repeater_; + + DISALLOW_COPY_AND_ASSIGN(BaseScrollBarButton); +}; + +} // namespace views + +#endif // VIEWS_CONTROLS_SCROLLBAR_BASE_SCROLL_BAR_BUTTON_H_ |