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

Unified Diff: ui/views/window/non_client_view.cc

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 side-by-side diff with in-line comments
Download patch
« ui/views/view_targeter.cc ('K') | « ui/views/window/non_client_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/window/non_client_view.cc
diff --git a/ui/views/window/non_client_view.cc b/ui/views/window/non_client_view.cc
index e4068dba177258768502ef22b8fc0b5f1da27674..d77fd8502a4c681eb7e37032a1ac5ddb7e0b214a 100644
--- a/ui/views/window/non_client_view.cc
+++ b/ui/views/window/non_client_view.cc
@@ -8,6 +8,7 @@
#include "ui/base/hit_test.h"
#include "ui/gfx/rect_conversions.h"
#include "ui/views/rect_based_targeting_utils.h"
+#include "ui/views/view_targeter.h"
#include "ui/views/widget/root_view.h"
#include "ui/views/widget/widget.h"
#include "ui/views/window/client_view.h"
@@ -35,6 +36,8 @@ static const int kClientViewIndex = 1;
NonClientView::NonClientView()
: client_view_(NULL),
overlay_view_(NULL) {
+ SetEventTargeter(
+ scoped_ptr<views::ViewTargeter>(new views::ViewTargeter(this)));
}
NonClientView::~NonClientView() {
@@ -186,9 +189,13 @@ const char* NonClientView::GetClassName() const {
return kViewClassName;
}
-View* NonClientView::GetEventHandlerForRect(const gfx::Rect& rect) {
+// Terry - move to right place in file
+View* NonClientView::TargetForRect(View* root,
+ const gfx::Rect& rect) {
+ CHECK_EQ(root, this);
+
if (!UsePointBasedTargeting(rect))
- return View::GetEventHandlerForRect(rect);
+ return ViewTargeterDelegate::TargetForRect(root, rect);
// Because of the z-ordering of our child views (the client view is positioned
// over the non-client frame view, if the client view ever overlaps the frame
@@ -209,7 +216,7 @@ View* NonClientView::GetEventHandlerForRect(const gfx::Rect& rect) {
return frame_view_->GetEventHandlerForRect(rect_in_child_coords);
}
- return View::GetEventHandlerForRect(rect);
+ return ViewTargeterDelegate::TargetForRect(root, rect);
}
View* NonClientView::GetTooltipHandlerForPoint(const gfx::Point& point) {
@@ -301,9 +308,12 @@ int NonClientFrameView::GetHTComponentForFrame(const gfx::Point& point,
}
////////////////////////////////////////////////////////////////////////////////
-// NonClientFrameView, View overrides:
+// NonClientFrameView, ViewTargeterDelegate overrides:
+
+bool NonClientFrameView::DoesIntersectRect(const View* target,
+ const gfx::Rect& rect) const {
+ CHECK_EQ(target, this);
-bool NonClientFrameView::HitTestRect(const gfx::Rect& rect) const {
// For the default case, we assume the non-client frame view never overlaps
// the client view.
return !GetWidget()->client_view()->bounds().Intersects(rect);
@@ -326,6 +336,9 @@ void NonClientFrameView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
}
NonClientFrameView::NonClientFrameView() : inactive_rendering_disabled_(false) {
+ // Terry - the right place for this?
+ SetEventTargeter(
+ scoped_ptr<views::ViewTargeter>(new views::ViewTargeter(this)));
}
} // namespace views
« ui/views/view_targeter.cc ('K') | « ui/views/window/non_client_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698