Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #define _USE_MATH_DEFINES // For VC++ to get M_PI. This has to be first. | 5 #define _USE_MATH_DEFINES // For VC++ to get M_PI. This has to be first. |
| 6 | 6 |
| 7 #include "ui/views/view.h" | 7 #include "ui/views/view.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <cmath> | 10 #include <cmath> |
| (...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 447 | 447 |
| 448 void View::SetVisible(bool visible) { | 448 void View::SetVisible(bool visible) { |
| 449 if (visible != visible_) { | 449 if (visible != visible_) { |
| 450 // If the View is currently visible, schedule paint to refresh parent. | 450 // If the View is currently visible, schedule paint to refresh parent. |
| 451 // TODO(beng): not sure we should be doing this if we have a layer. | 451 // TODO(beng): not sure we should be doing this if we have a layer. |
| 452 if (visible_) | 452 if (visible_) |
| 453 SchedulePaint(); | 453 SchedulePaint(); |
| 454 | 454 |
| 455 visible_ = visible; | 455 visible_ = visible; |
| 456 | 456 |
| 457 if (!visible) { | |
|
sky
2013/12/07 00:29:13
You have this code in a bunch of places. I think w
mohsen
2013/12/11 20:10:12
I have extracted the common code and moved it to t
| |
| 458 // If the View has focus or contains the focused view, clear focus. | |
| 459 FocusManager* focus_manager = GetFocusManager(); | |
| 460 if (focus_manager && Contains(focus_manager->GetFocusedView())) | |
| 461 focus_manager->ClearFocus(); | |
| 462 } | |
| 463 | |
| 457 // Notify the parent. | 464 // Notify the parent. |
| 458 if (parent_) | 465 if (parent_) |
| 459 parent_->ChildVisibilityChanged(this); | 466 parent_->ChildVisibilityChanged(this); |
| 460 | 467 |
| 461 // This notifies all sub-views recursively. | 468 // This notifies all sub-views recursively. |
| 462 PropagateVisibilityNotifications(this, visible_); | 469 PropagateVisibilityNotifications(this, visible_); |
| 463 UpdateLayerVisibility(); | 470 UpdateLayerVisibility(); |
| 464 | 471 |
| 465 // If we are newly visible, schedule paint. | 472 // If we are newly visible, schedule paint. |
| 466 if (visible_) | 473 if (visible_) |
| 467 SchedulePaint(); | 474 SchedulePaint(); |
| 468 } | 475 } |
| 469 } | 476 } |
| 470 | 477 |
| 471 bool View::IsDrawn() const { | 478 bool View::IsDrawn() const { |
| 472 return visible_ && parent_ ? parent_->IsDrawn() : false; | 479 return visible_ && parent_ ? parent_->IsDrawn() : false; |
| 473 } | 480 } |
| 474 | 481 |
| 475 void View::SetEnabled(bool enabled) { | 482 void View::SetEnabled(bool enabled) { |
| 476 if (enabled != enabled_) { | 483 if (enabled != enabled_) { |
| 477 enabled_ = enabled; | 484 enabled_ = enabled; |
| 485 if (!enabled) { | |
| 486 // If the View has focus, clear focus. | |
| 487 FocusManager* focus_manager = GetFocusManager(); | |
| 488 if (focus_manager && focus_manager->GetFocusedView() == this) | |
| 489 focus_manager->ClearFocus(); | |
| 490 } | |
| 478 OnEnabledChanged(); | 491 OnEnabledChanged(); |
| 479 } | 492 } |
| 480 } | 493 } |
| 481 | 494 |
| 482 void View::OnEnabledChanged() { | 495 void View::OnEnabledChanged() { |
| 483 SchedulePaint(); | 496 SchedulePaint(); |
| 484 } | 497 } |
| 485 | 498 |
| 486 // Transformations ------------------------------------------------------------- | 499 // Transformations ------------------------------------------------------------- |
| 487 | 500 |
| (...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1198 View* View::GetPreviousFocusableView() { | 1211 View* View::GetPreviousFocusableView() { |
| 1199 return previous_focusable_view_; | 1212 return previous_focusable_view_; |
| 1200 } | 1213 } |
| 1201 | 1214 |
| 1202 void View::SetNextFocusableView(View* view) { | 1215 void View::SetNextFocusableView(View* view) { |
| 1203 if (view) | 1216 if (view) |
| 1204 view->previous_focusable_view_ = this; | 1217 view->previous_focusable_view_ = this; |
| 1205 next_focusable_view_ = view; | 1218 next_focusable_view_ = view; |
| 1206 } | 1219 } |
| 1207 | 1220 |
| 1221 void View::SetFocusable(bool focusable) { | |
| 1222 focusable_ = focusable; | |
| 1223 if (!focusable && !IsAccessibilityFocusable()) { | |
| 1224 // If the View has focus, clear focus. | |
| 1225 FocusManager* focus_manager = GetFocusManager(); | |
| 1226 if (focus_manager && focus_manager->GetFocusedView() == this) | |
| 1227 focus_manager->ClearFocus(); | |
| 1228 } | |
| 1229 } | |
| 1230 | |
| 1208 bool View::IsFocusable() const { | 1231 bool View::IsFocusable() const { |
| 1209 return focusable_ && enabled_ && IsDrawn(); | 1232 return focusable_ && enabled_ && IsDrawn(); |
| 1210 } | 1233 } |
| 1211 | 1234 |
| 1212 bool View::IsAccessibilityFocusable() const { | 1235 bool View::IsAccessibilityFocusable() const { |
| 1213 return (focusable_ || accessibility_focusable_) && enabled_ && IsDrawn(); | 1236 return (focusable_ || accessibility_focusable_) && enabled_ && IsDrawn(); |
| 1214 } | 1237 } |
| 1215 | 1238 |
| 1239 void View::SetAccessibilityFocusable(bool accessibility_focusable) { | |
| 1240 accessibility_focusable_ = accessibility_focusable; | |
| 1241 if (!accessibility_focusable && !IsFocusable()) { | |
| 1242 // If the View has focus, clear focus. | |
| 1243 FocusManager* focus_manager = GetFocusManager(); | |
| 1244 if (focus_manager && focus_manager->GetFocusedView() == this) | |
| 1245 focus_manager->ClearFocus(); | |
| 1246 } | |
| 1247 } | |
| 1248 | |
| 1216 FocusManager* View::GetFocusManager() { | 1249 FocusManager* View::GetFocusManager() { |
| 1217 Widget* widget = GetWidget(); | 1250 Widget* widget = GetWidget(); |
| 1218 return widget ? widget->GetFocusManager() : NULL; | 1251 return widget ? widget->GetFocusManager() : NULL; |
| 1219 } | 1252 } |
| 1220 | 1253 |
| 1221 const FocusManager* View::GetFocusManager() const { | 1254 const FocusManager* View::GetFocusManager() const { |
| 1222 const Widget* widget = GetWidget(); | 1255 const Widget* widget = GetWidget(); |
| 1223 return widget ? widget->GetFocusManager() : NULL; | 1256 return widget ? widget->GetFocusManager() : NULL; |
| 1224 } | 1257 } |
| 1225 | 1258 |
| (...skipping 1160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2386 // Message the RootView to do the drag and drop. That way if we're removed | 2419 // Message the RootView to do the drag and drop. That way if we're removed |
| 2387 // the RootView can detect it and avoid calling us back. | 2420 // the RootView can detect it and avoid calling us back. |
| 2388 gfx::Point widget_location(event.location()); | 2421 gfx::Point widget_location(event.location()); |
| 2389 ConvertPointToWidget(this, &widget_location); | 2422 ConvertPointToWidget(this, &widget_location); |
| 2390 widget->RunShellDrag(this, data, widget_location, drag_operations, source); | 2423 widget->RunShellDrag(this, data, widget_location, drag_operations, source); |
| 2391 // WARNING: we may have been deleted. | 2424 // WARNING: we may have been deleted. |
| 2392 return true; | 2425 return true; |
| 2393 } | 2426 } |
| 2394 | 2427 |
| 2395 } // namespace views | 2428 } // namespace views |
| OLD | NEW |