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

Side by Side Diff: ui/views/controls/scrollbar/scroll_bar.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef UI_VIEWS_CONTROLS_SCROLLBAR_SCROLL_BAR_H_
6 #define UI_VIEWS_CONTROLS_SCROLLBAR_SCROLL_BAR_H_
7
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "ui/views/view.h"
11 #include "ui/views/views_export.h"
12
13 namespace views {
14
15 class ScrollBar;
16
17 /////////////////////////////////////////////////////////////////////////////
18 //
19 // ScrollBarController
20 //
21 // ScrollBarController defines the method that should be implemented to
22 // receive notification from a scrollbar
23 //
24 /////////////////////////////////////////////////////////////////////////////
25 class VIEWS_EXPORT ScrollBarController {
26 public:
27 // Invoked by the scrollbar when the scrolling position changes
28 // This method typically implements the actual scrolling.
29 //
30 // The provided position is expressed in pixels. It is the new X or Y
31 // position which is in the GetMinPosition() / GetMaxPosition range.
32 virtual void ScrollToPosition(ScrollBar* source, int position) = 0;
33
34 // Returns the amount to scroll. The amount to scroll may be requested in
35 // two different amounts. If is_page is true the 'page scroll' amount is
36 // requested. The page scroll amount typically corresponds to the
37 // visual size of the view. If is_page is false, the 'line scroll' amount
38 // is being requested. The line scroll amount typically corresponds to the
39 // size of one row/column.
40 //
41 // The return value should always be positive. A value <= 0 results in
42 // scrolling by a fixed amount.
43 virtual int GetScrollIncrement(ScrollBar* source,
44 bool is_page,
45 bool is_positive) = 0;
46 };
47
48 /////////////////////////////////////////////////////////////////////////////
49 //
50 // ScrollBar
51 //
52 // A View subclass to wrap to implement a ScrollBar. Our current windows
53 // version simply wraps a native windows scrollbar.
54 //
55 // A scrollbar is either horizontal or vertical
56 //
57 /////////////////////////////////////////////////////////////////////////////
58 class VIEWS_EXPORT ScrollBar : public View {
59 public:
60 virtual ~ScrollBar();
61
62 // Overridden from View:
63 virtual void GetAccessibleState(ui::AXViewState* state) override;
64
65 // Returns whether this scrollbar is horizontal.
66 bool IsHorizontal() const;
67
68 void set_controller(ScrollBarController* controller) {
69 controller_ = controller;
70 }
71 ScrollBarController* controller() const { return controller_; }
72
73 // Update the scrollbar appearance given a viewport size, content size and
74 // current position
75 virtual void Update(int viewport_size, int content_size, int current_pos);
76
77 // Returns the max and min positions.
78 int GetMaxPosition() const;
79 int GetMinPosition() const;
80
81 // Returns the position of the scrollbar.
82 virtual int GetPosition() const = 0;
83
84 // Get the width or height of this scrollbar, for use in layout calculations.
85 // For a vertical scrollbar, this is the width of the scrollbar, likewise it
86 // is the height for a horizontal scrollbar.
87 virtual int GetLayoutSize() const = 0;
88
89 // Get the width or height for this scrollbar which overlaps with the content.
90 // Default is 0.
91 virtual int GetContentOverlapSize() const;
92
93 virtual void OnMouseEnteredScrollView(const ui::MouseEvent& event);
94 virtual void OnMouseExitedScrollView(const ui::MouseEvent& event);
95
96 protected:
97 // Create new scrollbar, either horizontal or vertical. These are protected
98 // since you need to be creating either a NativeScrollBar or a
99 // ImageScrollBar.
100 explicit ScrollBar(bool is_horiz);
101
102 private:
103 const bool is_horiz_;
104
105 ScrollBarController* controller_;
106
107 int max_pos_;
108
109 DISALLOW_COPY_AND_ASSIGN(ScrollBar);
110 };
111
112 } // namespace views
113
114 #endif // UI_VIEWS_CONTROLS_SCROLLBAR_SCROLL_BAR_H_
OLDNEW
« no previous file with comments | « ui/views/controls/scrollbar/overlay_scroll_bar.cc ('k') | ui/views/controls/scrollbar/scroll_bar.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698