summaryrefslogtreecommitdiffstats
path: root/views/focus/focus_manager.cc
diff options
context:
space:
mode:
authorjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-01 22:53:51 +0000
committerjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-01 22:53:51 +0000
commitdc5e89230025a8202e0314410a388ad91138020c (patch)
tree41630518a44295112141de14f595c50e11fb84de /views/focus/focus_manager.cc
parent668dd15b25cf7fd94fede92dd140b59c62009390 (diff)
downloadchromium_src-dc5e89230025a8202e0314410a388ad91138020c.zip
chromium_src-dc5e89230025a8202e0314410a388ad91138020c.tar.gz
chromium_src-dc5e89230025a8202e0314410a388ad91138020c.tar.bz2
The FocusManager stores/restores focus when the top window becomes inactive/active.
BUG=None TEST=Run the focus manager unit-tests. Review URL: http://codereview.chromium.org/164448 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25108 0039d316-1c4b-4281-b951-d872f2087c98
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();
}
}