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

Side by Side Diff: ui/views/window/non_client_view.h

Issue 381323002: [rough WIP] Make View::GetEventHandlerForRect() non-virtual (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef UI_VIEWS_WINDOW_NON_CLIENT_VIEW_H_ 5 #ifndef UI_VIEWS_WINDOW_NON_CLIENT_VIEW_H_
6 #define UI_VIEWS_WINDOW_NON_CLIENT_VIEW_H_ 6 #define UI_VIEWS_WINDOW_NON_CLIENT_VIEW_H_
7 7
8 #include "ui/views/view.h" 8 #include "ui/views/view.h"
9 #include "ui/views/view_targeter_delegate.h"
9 10
10 namespace gfx { 11 namespace gfx {
11 class Path; 12 class Path;
12 } 13 }
13 14
14 namespace views { 15 namespace views {
15 16
16 class ClientView; 17 class ClientView;
17 18
18 //////////////////////////////////////////////////////////////////////////////// 19 ////////////////////////////////////////////////////////////////////////////////
19 // NonClientFrameView 20 // NonClientFrameView
20 // 21 //
21 // An object that subclasses NonClientFrameView is a View that renders and 22 // An object that subclasses NonClientFrameView is a View that renders and
22 // responds to events within the frame portions of the non-client area of a 23 // responds to events within the frame portions of the non-client area of a
23 // window. This view does _not_ contain the ClientView, but rather is a sibling 24 // window. This view does _not_ contain the ClientView, but rather is a sibling
24 // of it. 25 // of it.
25 class VIEWS_EXPORT NonClientFrameView : public View { 26 class VIEWS_EXPORT NonClientFrameView : public View,
27 public ViewTargeterDelegate {
26 public: 28 public:
27 // Internal class name. 29 // Internal class name.
28 static const char kViewClassName[]; 30 static const char kViewClassName[];
29 31
30 enum { 32 enum {
31 // Various edges of the frame border have a 1 px shadow along their edges; 33 // Various edges of the frame border have a 1 px shadow along their edges;
32 // in a few cases we shift elements based on this amount for visual appeal. 34 // in a few cases we shift elements based on this amount for visual appeal.
33 kFrameShadowThickness = 1, 35 kFrameShadowThickness = 1,
34 36
35 // In restored mode, we draw a 1 px edge around the content area inside the 37 // In restored mode, we draw a 1 px edge around the content area inside the
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 // the parent NonClientView because that makes it more difficult to calculate 73 // the parent NonClientView because that makes it more difficult to calculate
72 // hittests for regions that are partially obscured by the ClientView, e.g. 74 // hittests for regions that are partially obscured by the ClientView, e.g.
73 // HTSYSMENU. 75 // HTSYSMENU.
74 virtual int NonClientHitTest(const gfx::Point& point) = 0; 76 virtual int NonClientHitTest(const gfx::Point& point) = 0;
75 virtual void GetWindowMask(const gfx::Size& size, 77 virtual void GetWindowMask(const gfx::Size& size,
76 gfx::Path* window_mask) = 0; 78 gfx::Path* window_mask) = 0;
77 virtual void ResetWindowControls() = 0; 79 virtual void ResetWindowControls() = 0;
78 virtual void UpdateWindowIcon() = 0; 80 virtual void UpdateWindowIcon() = 0;
79 virtual void UpdateWindowTitle() = 0; 81 virtual void UpdateWindowTitle() = 0;
80 82
81 // Overridden from View: 83 // View:
82 virtual bool HitTestRect(const gfx::Rect& rect) const OVERRIDE;
83 virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; 84 virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
84 virtual const char* GetClassName() const OVERRIDE; 85 virtual const char* GetClassName() const OVERRIDE;
85 86
87 // ViewTargeterDelegate:
88 virtual bool DoesIntersectRect(const View* target,
89 const gfx::Rect& rect) const OVERRIDE;
90
86 protected: 91 protected:
87 virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) OVERRIDE; 92 virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) OVERRIDE;
88 93
89 NonClientFrameView(); 94 NonClientFrameView();
90 95
91 private: 96 private:
92 // Prevents the non-client frame view from being rendered as inactive when 97 // Prevents the non-client frame view from being rendered as inactive when
93 // true. 98 // true.
94 bool inactive_rendering_disabled_; 99 bool inactive_rendering_disabled_;
95 }; 100 };
(...skipping 27 matching lines...) Expand all
123 // | | | +----------------------------------------+ | | | 128 // | | | +----------------------------------------+ | | |
124 // | | +--------------------------------------------+ | | 129 // | | +--------------------------------------------+ | |
125 // | +------------------------------------------------+ | 130 // | +------------------------------------------------+ |
126 // +----------------------------------------------------+ 131 // +----------------------------------------------------+
127 // 132 //
128 // The NonClientFrameView and ClientView are siblings because due to theme 133 // The NonClientFrameView and ClientView are siblings because due to theme
129 // changes the NonClientFrameView may be replaced with different 134 // changes the NonClientFrameView may be replaced with different
130 // implementations (e.g. during the switch from DWM/Aero-Glass to Vista Basic/ 135 // implementations (e.g. during the switch from DWM/Aero-Glass to Vista Basic/
131 // Classic rendering). 136 // Classic rendering).
132 // 137 //
133 class VIEWS_EXPORT NonClientView : public View { 138 class VIEWS_EXPORT NonClientView : public View, public ViewTargeterDelegate {
134 public: 139 public:
135 // Internal class name. 140 // Internal class name.
136 static const char kViewClassName[]; 141 static const char kViewClassName[];
137 142
138 NonClientView(); 143 NonClientView();
139 virtual ~NonClientView(); 144 virtual ~NonClientView();
140 145
141 // Returns the current NonClientFrameView instance, or NULL if 146 // Returns the current NonClientFrameView instance, or NULL if
142 // it does not exist. 147 // it does not exist.
143 NonClientFrameView* frame_view() const { return frame_view_.get(); } 148 NonClientFrameView* frame_view() const { return frame_view_.get(); }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 void SetAccessibleName(const base::string16& name); 210 void SetAccessibleName(const base::string16& name);
206 211
207 // NonClientView, View overrides: 212 // NonClientView, View overrides:
208 virtual gfx::Size GetPreferredSize() const OVERRIDE; 213 virtual gfx::Size GetPreferredSize() const OVERRIDE;
209 virtual gfx::Size GetMinimumSize() const OVERRIDE; 214 virtual gfx::Size GetMinimumSize() const OVERRIDE;
210 virtual gfx::Size GetMaximumSize() const OVERRIDE; 215 virtual gfx::Size GetMaximumSize() const OVERRIDE;
211 virtual void Layout() OVERRIDE; 216 virtual void Layout() OVERRIDE;
212 virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; 217 virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
213 virtual const char* GetClassName() const OVERRIDE; 218 virtual const char* GetClassName() const OVERRIDE;
214 219
215 virtual views::View* GetEventHandlerForRect(const gfx::Rect& rect) OVERRIDE;
216 virtual views::View* GetTooltipHandlerForPoint( 220 virtual views::View* GetTooltipHandlerForPoint(
217 const gfx::Point& point) OVERRIDE; 221 const gfx::Point& point) OVERRIDE;
218 222
219 protected: 223 protected:
220 // NonClientView, View overrides: 224 // NonClientView, View overrides:
221 virtual void ViewHierarchyChanged( 225 virtual void ViewHierarchyChanged(
222 const ViewHierarchyChangedDetails& details) OVERRIDE; 226 const ViewHierarchyChangedDetails& details) OVERRIDE;
223 227
224 private: 228 private:
229 // ViewTargeterDelegate:
230 virtual View* TargetForRect(View* root,
231 const gfx::Rect& rect) OVERRIDE;
232
225 // A ClientView object or subclass, responsible for sizing the contents view 233 // A ClientView object or subclass, responsible for sizing the contents view
226 // of the window, hit testing and perhaps other tasks depending on the 234 // of the window, hit testing and perhaps other tasks depending on the
227 // implementation. 235 // implementation.
228 ClientView* client_view_; 236 ClientView* client_view_;
229 237
230 // The NonClientFrameView that renders the non-client portions of the window. 238 // The NonClientFrameView that renders the non-client portions of the window.
231 // This object is not owned by the view hierarchy because it can be replaced 239 // This object is not owned by the view hierarchy because it can be replaced
232 // dynamically as the system settings change. 240 // dynamically as the system settings change.
233 scoped_ptr<NonClientFrameView> frame_view_; 241 scoped_ptr<NonClientFrameView> frame_view_;
234 242
235 // The overlay view, when non-NULL and visible, takes up the entire widget and 243 // The overlay view, when non-NULL and visible, takes up the entire widget and
236 // is placed on top of the ClientView and NonClientFrameView. 244 // is placed on top of the ClientView and NonClientFrameView.
237 View* overlay_view_; 245 View* overlay_view_;
238 246
239 // The accessible name of this view. 247 // The accessible name of this view.
240 base::string16 accessible_name_; 248 base::string16 accessible_name_;
241 249
242 DISALLOW_COPY_AND_ASSIGN(NonClientView); 250 DISALLOW_COPY_AND_ASSIGN(NonClientView);
243 }; 251 };
244 252
245 } // namespace views 253 } // namespace views
246 254
247 #endif // UI_VIEWS_WINDOW_NON_CLIENT_VIEW_H_ 255 #endif // UI_VIEWS_WINDOW_NON_CLIENT_VIEW_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698