summaryrefslogtreecommitdiffstats
path: root/views/focus/focus_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'views/focus/focus_manager.cc')
-rw-r--r--views/focus/focus_manager.cc45
1 files changed, 23 insertions, 22 deletions
diff --git a/views/focus/focus_manager.cc b/views/focus/focus_manager.cc
index 1a0f7ae..dffb392 100644
--- a/views/focus/focus_manager.cc
+++ b/views/focus/focus_manager.cc
@@ -224,31 +224,32 @@ View* FocusManager::GetNextFocusableView(View* original_starting_view,
}
void FocusManager::SetFocusedView(View* view) {
- if (focused_view_ != view) {
- View* prev_focused_view = focused_view_;
- if (focused_view_)
- focused_view_->WillLoseFocus();
-
- if (view)
- view->WillGainFocus();
-
- // Notified listeners that the focus changed.
- FocusChangeListenerList::const_iterator iter;
- for (iter = focus_change_listeners_.begin();
- iter != focus_change_listeners_.end(); ++iter) {
- (*iter)->FocusWillChange(prev_focused_view, view);
- }
+ if (focused_view_ == view)
+ return;
- focused_view_ = view;
+ View* prev_focused_view = focused_view_;
+ if (focused_view_)
+ focused_view_->WillLoseFocus();
- if (prev_focused_view)
- prev_focused_view->SchedulePaint(); // Remove focus artifacts.
+ if (view)
+ view->WillGainFocus();
- if (view) {
- view->SchedulePaint();
- view->Focus();
- view->DidGainFocus();
- }
+ // Notified listeners that the focus changed.
+ FocusChangeListenerList::const_iterator iter;
+ for (iter = focus_change_listeners_.begin();
+ iter != focus_change_listeners_.end(); ++iter) {
+ (*iter)->FocusWillChange(prev_focused_view, view);
+ }
+
+ focused_view_ = view;
+
+ if (prev_focused_view)
+ prev_focused_view->SchedulePaint(); // Remove focus artifacts.
+
+ if (view) {
+ view->SchedulePaint();
+ view->Focus();
+ view->DidGainFocus();
}
}