| Index: views/view.cc
|
| diff --git a/views/view.cc b/views/view.cc
|
| index 012240abc8de989e1187d0816c425038a199e6e4..988e76bc448aa72865154baf3fc39e24c5f50a98 100644
|
| --- a/views/view.cc
|
| +++ b/views/view.cc
|
| @@ -132,6 +132,21 @@ void View::SetBounds(const gfx::Rect& bounds) {
|
| }
|
| }
|
|
|
| +void View::RegisterForMouseNearEvents(const gfx::Insets& insets) {
|
| + RootView* root = GetRootView();
|
| + if (insets.empty()) {
|
| + near_insets_.reset(NULL);
|
| + if (root)
|
| + root->UnregisterViewForNearNotification(this);
|
| + } else {
|
| + near_insets_.reset(
|
| + new gfx::Insets(insets.top(), insets.left(), insets.bottom(),
|
| + insets.right()));
|
| + if (root)
|
| + root->RegisterViewForNearNotification(this);
|
| + }
|
| +}
|
| +
|
| gfx::Rect View::GetLocalBounds(bool include_border) const {
|
| if (include_border || !border_.get())
|
| return gfx::Rect(0, 0, width(), height());
|
| @@ -537,7 +552,7 @@ void View::AddChildView(int index, View* v) {
|
| UpdateTooltip();
|
| RootView* root = GetRootView();
|
| if (root)
|
| - RegisterChildrenForVisibleBoundsNotification(root, v);
|
| + RegisterChildrenForRootNotifications(root, v);
|
|
|
| if (layout_manager_.get())
|
| layout_manager_->ViewAdded(this, v);
|
| @@ -609,7 +624,7 @@ void View::DoRemoveChildView(View* a_view,
|
|
|
| RootView* root = GetRootView();
|
| if (root)
|
| - UnregisterChildrenForVisibleBoundsNotification(root, a_view);
|
| + UnregisterChildrenForRootNotifications(root, a_view);
|
| a_view->PropagateRemoveNotifications(this);
|
| a_view->SetParent(NULL);
|
|
|
| @@ -1440,24 +1455,26 @@ ThemeProvider* View::GetThemeProvider() const {
|
| }
|
|
|
| // static
|
| -void View::RegisterChildrenForVisibleBoundsNotification(
|
| - RootView* root, View* view) {
|
| +void View::RegisterChildrenForRootNotifications(RootView* root, View* view) {
|
| DCHECK(root && view);
|
| if (view->GetNotifyWhenVisibleBoundsInRootChanges())
|
| root->RegisterViewForVisibleBoundsNotification(view);
|
| + if (view->near_insets_.get())
|
| + root->RegisterViewForNearNotification(view);
|
| for (int i = 0; i < view->GetChildViewCount(); ++i)
|
| - RegisterChildrenForVisibleBoundsNotification(root, view->GetChildViewAt(i));
|
| + RegisterChildrenForRootNotifications(root, view->GetChildViewAt(i));
|
| }
|
|
|
| // static
|
| -void View::UnregisterChildrenForVisibleBoundsNotification(
|
| +void View::UnregisterChildrenForRootNotifications(
|
| RootView* root, View* view) {
|
| DCHECK(root && view);
|
| if (view->GetNotifyWhenVisibleBoundsInRootChanges())
|
| root->UnregisterViewForVisibleBoundsNotification(view);
|
| + if (view->near_insets_.get())
|
| + root->UnregisterViewForNearNotification(view);
|
| for (int i = 0; i < view->GetChildViewCount(); ++i)
|
| - UnregisterChildrenForVisibleBoundsNotification(root,
|
| - view->GetChildViewAt(i));
|
| + UnregisterChildrenForRootNotifications(root, view->GetChildViewAt(i));
|
| }
|
|
|
| void View::AddDescendantToNotify(View* view) {
|
|
|