diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-24 00:59:52 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-24 00:59:52 +0000 |
commit | 420138333ca7e2a5f6e5738a43f3780c98a03d42 (patch) | |
tree | 674b8f714ed45aa5f98a9e827f98bb49bcc92ba0 /views | |
parent | 901944666724e9e8df190aaf26bed6c6cda3ade4 (diff) | |
download | chromium_src-420138333ca7e2a5f6e5738a43f3780c98a03d42.zip chromium_src-420138333ca7e2a5f6e5738a43f3780c98a03d42.tar.gz chromium_src-420138333ca7e2a5f6e5738a43f3780c98a03d42.tar.bz2 |
Rename WillGain/Lose/DidGainFocus, Focus methods. Now there are only two notifications:
OnFocus()
OnBlur()
View gains a Focus()/Blur() processing method pair.
Cleans up code in FocusManager::SetFocusedView.
Also adds OVERRIDE to a bunch of methods.
BUG=72040
TEST=existing unittests.
Review URL: http://codereview.chromium.org/6577010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75830 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
43 files changed, 283 insertions, 344 deletions
diff --git a/views/controls/button/checkbox.cc b/views/controls/button/checkbox.cc index 8d554909..719dfd8 100644 --- a/views/controls/button/checkbox.cc +++ b/views/controls/button/checkbox.cc @@ -121,15 +121,6 @@ void Checkbox::OnPaintFocusBorder(gfx::Canvas* canvas) { // Our focus border is rendered by the label, so we don't do anything here. } -View* Checkbox::GetViewForPoint(const gfx::Point& point) { - return GetViewForPoint(point, false); -} - -View* Checkbox::GetViewForPoint(const gfx::Point& point, - bool can_create_floating) { - return GetLocalBounds().Contains(point) ? this : NULL; -} - void Checkbox::OnMouseEntered(const MouseEvent& e) { native_wrapper_->SetPushed(HitTestLabel(e)); } @@ -159,11 +150,11 @@ bool Checkbox::OnMouseDragged(const MouseEvent& e) { return false; } -void Checkbox::WillGainFocus() { +void Checkbox::OnFocus() { label_->set_paint_as_focused(true); } -void Checkbox::WillLoseFocus() { +void Checkbox::OnBlur() { label_->set_paint_as_focused(false); } diff --git a/views/controls/button/checkbox.h b/views/controls/button/checkbox.h index c6ec53d..71d218d 100644 --- a/views/controls/button/checkbox.h +++ b/views/controls/button/checkbox.h @@ -42,36 +42,33 @@ class Checkbox : public NativeButton { static int GetTextIndent(); // Overridden from View: - virtual gfx::Size GetPreferredSize(); - virtual int GetHeightForWidth(int w); - virtual void Layout(); - virtual void SetEnabled(bool enabled); - virtual void OnPaintFocusBorder(gfx::Canvas* canvas); - virtual View* GetViewForPoint(const gfx::Point& point); - virtual View* GetViewForPoint(const gfx::Point& point, - bool can_create_floating); - virtual void OnMouseEntered(const MouseEvent& e); - virtual void OnMouseMoved(const MouseEvent& e); - virtual void OnMouseExited(const MouseEvent& e); - virtual bool OnMousePressed(const MouseEvent& e); - virtual void OnMouseReleased(const MouseEvent& e, bool canceled); - virtual bool OnMouseDragged(const MouseEvent& e); - virtual void WillGainFocus(); - virtual void WillLoseFocus(); + virtual gfx::Size GetPreferredSize() OVERRIDE; + virtual int GetHeightForWidth(int w) OVERRIDE; + virtual void Layout() OVERRIDE; + virtual void SetEnabled(bool enabled) OVERRIDE; + virtual void OnPaintFocusBorder(gfx::Canvas* canvas) OVERRIDE; + virtual void OnMouseEntered(const MouseEvent& e) OVERRIDE; + virtual void OnMouseMoved(const MouseEvent& e) OVERRIDE; + virtual void OnMouseExited(const MouseEvent& e) OVERRIDE; + virtual bool OnMousePressed(const MouseEvent& e) OVERRIDE; + virtual void OnMouseReleased(const MouseEvent& e, bool canceled) OVERRIDE; + virtual bool OnMouseDragged(const MouseEvent& e) OVERRIDE; + virtual void OnFocus() OVERRIDE; + virtual void OnBlur() OVERRIDE; // Accessibility accessors, overridden from View. - virtual AccessibilityTypes::Role GetAccessibleRole(); - virtual AccessibilityTypes::State GetAccessibleState(); + virtual AccessibilityTypes::Role GetAccessibleRole() OVERRIDE; + virtual AccessibilityTypes::State GetAccessibleState() OVERRIDE; // Overridden from NativeButton: - virtual void SetLabel(const std::wstring& label); + virtual void SetLabel(const std::wstring& label) OVERRIDE; protected: - virtual std::string GetClassName() const; + virtual std::string GetClassName() const OVERRIDE; // Overridden from NativeButton: - virtual NativeButtonWrapper* CreateWrapper(); - virtual void InitBorder(); + virtual NativeButtonWrapper* CreateWrapper() OVERRIDE; + virtual void InitBorder() OVERRIDE; // Returns true if the event (in Checkbox coordinates) is within the bounds of // the label. diff --git a/views/controls/button/custom_button.cc b/views/controls/button/custom_button.cc index 08a7e22..1696d14 100644 --- a/views/controls/button/custom_button.cc +++ b/views/controls/button/custom_button.cc @@ -256,7 +256,7 @@ bool CustomButton::IsHotTracked() const { return state_ == BS_HOT; } -void CustomButton::WillLoseFocus() { +void CustomButton::OnBlur() { if (IsHotTracked()) SetState(BS_NORMAL); } diff --git a/views/controls/button/custom_button.h b/views/controls/button/custom_button.h index e0dcb2b..17dafbf 100644 --- a/views/controls/button/custom_button.h +++ b/views/controls/button/custom_button.h @@ -48,10 +48,10 @@ class CustomButton : public Button, void SetAnimationDuration(int duration); // Overridden from View: - virtual AccessibilityTypes::State GetAccessibleState(); - virtual void SetEnabled(bool enabled); - virtual bool IsEnabled() const; - virtual bool IsFocusable() const; + virtual AccessibilityTypes::State GetAccessibleState() OVERRIDE; + virtual void SetEnabled(bool enabled) OVERRIDE; + virtual bool IsEnabled() const OVERRIDE; + virtual bool IsFocusable() const OVERRIDE; void set_triggerable_event_flags(int triggerable_event_flags) { triggerable_event_flags_ = triggerable_event_flags; @@ -90,24 +90,26 @@ class CustomButton : public Button, virtual bool IsTriggerableEvent(const MouseEvent& e); // Overridden from View: - virtual bool AcceleratorPressed(const Accelerator& accelerator); - virtual bool OnMousePressed(const MouseEvent& e); - virtual bool OnMouseDragged(const MouseEvent& e); - virtual void OnMouseReleased(const MouseEvent& e, bool canceled); - virtual void OnMouseEntered(const MouseEvent& e); - virtual void OnMouseMoved(const MouseEvent& e); - virtual void OnMouseExited(const MouseEvent& e); - virtual bool OnKeyPressed(const KeyEvent& e); - virtual bool OnKeyReleased(const KeyEvent& e); - virtual void OnDragDone(); - virtual void ShowContextMenu(const gfx::Point& p, bool is_mouse_gesture); - virtual void ViewHierarchyChanged(bool is_add, View *parent, View *child); - virtual void SetHotTracked(bool flag); - virtual bool IsHotTracked() const; - virtual void WillLoseFocus(); + virtual bool AcceleratorPressed(const Accelerator& accelerator) OVERRIDE; + virtual bool OnMousePressed(const MouseEvent& e) OVERRIDE; + virtual bool OnMouseDragged(const MouseEvent& e) OVERRIDE; + virtual void OnMouseReleased(const MouseEvent& e, bool canceled) OVERRIDE; + virtual void OnMouseEntered(const MouseEvent& e) OVERRIDE; + virtual void OnMouseMoved(const MouseEvent& e) OVERRIDE; + virtual void OnMouseExited(const MouseEvent& e) OVERRIDE; + virtual bool OnKeyPressed(const KeyEvent& e) OVERRIDE; + virtual bool OnKeyReleased(const KeyEvent& e) OVERRIDE; + virtual void OnDragDone() OVERRIDE; + virtual void ShowContextMenu(const gfx::Point& p, + bool is_mouse_gesture) OVERRIDE; + virtual void ViewHierarchyChanged(bool is_add, View* parent, + View* child) OVERRIDE; + virtual void SetHotTracked(bool flag) OVERRIDE; + virtual bool IsHotTracked() const OVERRIDE; + virtual void OnBlur() OVERRIDE; // Overridden from ui::AnimationDelegate: - virtual void AnimationProgressed(const ui::Animation* animation); + virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE; // Returns true if the button should become pressed when the user // holds the mouse down over the button. For this implementation, diff --git a/views/controls/button/native_button.cc b/views/controls/button/native_button.cc index 5cf1511..9cee97b 100644 --- a/views/controls/button/native_button.cc +++ b/views/controls/button/native_button.cc @@ -201,13 +201,13 @@ bool NativeButton::AcceleratorPressed(const Accelerator& accelerator) { return false; } -void NativeButton::Focus() { +void NativeButton::OnFocus() { // Forward the focus to the wrapper. if (native_wrapper_) native_wrapper_->SetFocus(); else - Button::Focus(); // Will focus the RootView window (so we still get - // keyboard messages). + Button::OnFocus(); // Will focus the RootView window (so we still get + // keyboard messages). } void NativeButton::OnPaintFocusBorder(gfx::Canvas* canvas) { diff --git a/views/controls/button/native_button.h b/views/controls/button/native_button.h index f4d21d4..2e1337a 100644 --- a/views/controls/button/native_button.h +++ b/views/controls/button/native_button.h @@ -52,16 +52,17 @@ class NativeButton : public Button { void ButtonPressed(); // Overridden from View: - virtual gfx::Size GetPreferredSize(); - virtual void Layout(); - virtual void SetEnabled(bool flag); - virtual void Focus(); - virtual void OnPaintFocusBorder(gfx::Canvas* canvas); + virtual gfx::Size GetPreferredSize() OVERRIDE; + virtual void Layout() OVERRIDE; + virtual void SetEnabled(bool flag) OVERRIDE; + virtual void OnFocus() OVERRIDE; + virtual void OnPaintFocusBorder(gfx::Canvas* canvas) OVERRIDE; protected: - virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child); - virtual std::string GetClassName() const; - virtual bool AcceleratorPressed(const Accelerator& accelerator); + virtual void ViewHierarchyChanged(bool is_add, View* parent, + View* child) OVERRIDE; + virtual std::string GetClassName() const OVERRIDE; + virtual bool AcceleratorPressed(const Accelerator& accelerator) OVERRIDE; // Create the button wrapper and returns it. Ownership of the returned // value is passed to the caller. diff --git a/views/controls/button/native_button_gtk.cc b/views/controls/button/native_button_gtk.cc index 7659f48..9ae7d96 100644 --- a/views/controls/button/native_button_gtk.cc +++ b/views/controls/button/native_button_gtk.cc @@ -74,7 +74,7 @@ View* NativeButtonGtk::GetView() { void NativeButtonGtk::SetFocus() { // Focus the associated widget. - Focus(); + OnFocus(); } bool NativeButtonGtk::UsesNativeLabel() const { diff --git a/views/controls/button/native_button_win.cc b/views/controls/button/native_button_win.cc index 9914638..fbba56a 100644 --- a/views/controls/button/native_button_win.cc +++ b/views/controls/button/native_button_win.cc @@ -92,7 +92,7 @@ View* NativeButtonWin::GetView() { void NativeButtonWin::SetFocus() { // Focus the associated HWND. - Focus(); + OnFocus(); } bool NativeButtonWin::UsesNativeLabel() const { diff --git a/views/controls/combobox/combobox.cc b/views/controls/combobox/combobox.cc index 5f9af57..be7d719 100644 --- a/views/controls/combobox/combobox.cc +++ b/views/controls/combobox/combobox.cc @@ -97,13 +97,13 @@ string16 Combobox::GetAccessibleValue() { return model_->GetItemAt(selected_item_); } -void Combobox::Focus() { +void Combobox::OnFocus() { // Forward the focus to the wrapper. if (native_wrapper_) native_wrapper_->SetFocus(); else - View::Focus(); // Will focus the RootView window (so we still get - // keyboard messages). + View::OnFocus(); // Will focus the RootView window (so we still get + // keyboard messages). } void Combobox::ViewHierarchyChanged(bool is_add, View* parent, diff --git a/views/controls/combobox/combobox.h b/views/controls/combobox/combobox.h index cb25968..1de06d6 100644 --- a/views/controls/combobox/combobox.h +++ b/views/controls/combobox/combobox.h @@ -68,7 +68,7 @@ class Combobox : public View { virtual string16 GetAccessibleValue() OVERRIDE; protected: - virtual void Focus(); + virtual void OnFocus(); virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child); virtual std::string GetClassName() const; diff --git a/views/controls/combobox/native_combobox_gtk.cc b/views/controls/combobox/native_combobox_gtk.cc index e596328..cfa2dc9 100644 --- a/views/controls/combobox/native_combobox_gtk.cc +++ b/views/controls/combobox/native_combobox_gtk.cc @@ -94,7 +94,7 @@ View* NativeComboboxGtk::GetView() { } void NativeComboboxGtk::SetFocus() { - Focus(); + OnFocus(); } gfx::NativeView NativeComboboxGtk::GetTestingHandle() const { diff --git a/views/controls/combobox/native_combobox_win.cc b/views/controls/combobox/native_combobox_win.cc index 2ea60e6..ebb91b5 100644 --- a/views/controls/combobox/native_combobox_win.cc +++ b/views/controls/combobox/native_combobox_win.cc @@ -135,7 +135,7 @@ View* NativeComboboxWin::GetView() { } void NativeComboboxWin::SetFocus() { - Focus(); + OnFocus(); } gfx::NativeView NativeComboboxWin::GetTestingHandle() const { diff --git a/views/controls/native/native_view_host.cc b/views/controls/native/native_view_host.cc index 4566b80..9b6dff2 100644 --- a/views/controls/native/native_view_host.cc +++ b/views/controls/native/native_view_host.cc @@ -178,7 +178,7 @@ std::string NativeViewHost::GetClassName() const { return kViewClassName; } -void NativeViewHost::Focus() { +void NativeViewHost::OnFocus() { native_wrapper_->SetFocus(); } diff --git a/views/controls/native/native_view_host.h b/views/controls/native/native_view_host.h index 9c06f35..e19aca2 100644 --- a/views/controls/native/native_view_host.h +++ b/views/controls/native/native_view_host.h @@ -80,7 +80,7 @@ class NativeViewHost : public View { virtual void Layout(); virtual void OnPaint(gfx::Canvas* canvas); virtual void VisibilityChanged(View* starting_from, bool is_visible); - virtual void Focus(); + virtual void OnFocus(); virtual bool ContainsNativeView(gfx::NativeView native_view) const; protected: diff --git a/views/controls/native_control.cc b/views/controls/native_control.cc index 4e6e2f3..34e243e 100644 --- a/views/controls/native_control.cc +++ b/views/controls/native_control.cc @@ -277,7 +277,7 @@ void NativeControl::OnContextMenu(const POINT& location) { ShowContextMenu(gfx::Point(location), true); } -void NativeControl::Focus() { +void NativeControl::OnFocus() { if (container_) { DCHECK(container_->GetControl()); ::SetFocus(container_->GetControl()); diff --git a/views/controls/native_control.h b/views/controls/native_control.h index b08ff53..1273920 100644 --- a/views/controls/native_control.h +++ b/views/controls/native_control.h @@ -59,7 +59,7 @@ class NativeControl : public View { virtual void OnContextMenu(const POINT& location); // Overridden so to set the native focus to the native control. - virtual void Focus(); + virtual void OnFocus(); // Invoked when the native control sends a WM_DESTORY message to its parent. virtual void OnDestroy() { } diff --git a/views/controls/native_control_gtk.cc b/views/controls/native_control_gtk.cc index eb97394..a17c4cb 100644 --- a/views/controls/native_control_gtk.cc +++ b/views/controls/native_control_gtk.cc @@ -63,7 +63,7 @@ void NativeControlGtk::VisibilityChanged(View* starting_from, bool is_visible) { } } -void NativeControlGtk::Focus() { +void NativeControlGtk::OnFocus() { DCHECK(native_view()); gtk_widget_grab_focus(native_view()); diff --git a/views/controls/native_control_gtk.h b/views/controls/native_control_gtk.h index ab2aa36..8146ed4 100644 --- a/views/controls/native_control_gtk.h +++ b/views/controls/native_control_gtk.h @@ -24,7 +24,7 @@ class NativeControlGtk : public NativeViewHost { protected: virtual void ViewHierarchyChanged(bool is_add, View *parent, View *child); virtual void VisibilityChanged(View* starting_from, bool is_visible); - virtual void Focus(); + virtual void OnFocus(); // Called when the NativeControlGtk is attached to a View hierarchy with a // valid Widget. The NativeControlGtk should use this opportunity to create diff --git a/views/controls/native_control_win.cc b/views/controls/native_control_win.cc index 9eaf25e..7e7312b 100644 --- a/views/controls/native_control_win.cc +++ b/views/controls/native_control_win.cc @@ -96,7 +96,7 @@ void NativeControlWin::VisibilityChanged(View* starting_from, bool is_visible) { } } -void NativeControlWin::Focus() { +void NativeControlWin::OnFocus() { DCHECK(native_view()); SetFocus(native_view()); diff --git a/views/controls/native_control_win.h b/views/controls/native_control_win.h index 289c679..aeed914 100644 --- a/views/controls/native_control_win.h +++ b/views/controls/native_control_win.h @@ -42,7 +42,7 @@ class NativeControlWin : public ChildWindowMessageProcessor, protected: virtual void ViewHierarchyChanged(bool is_add, View *parent, View *child); virtual void VisibilityChanged(View* starting_from, bool is_visible); - virtual void Focus(); + virtual void OnFocus(); // Called by the containing WidgetWin when a WM_CONTEXTMENU message is // received from the HWND created by an object derived from NativeControlWin. diff --git a/views/controls/slider/native_slider_gtk.cc b/views/controls/slider/native_slider_gtk.cc index ec490a8..0fa30b5 100644 --- a/views/controls/slider/native_slider_gtk.cc +++ b/views/controls/slider/native_slider_gtk.cc @@ -43,7 +43,7 @@ void NativeSliderGtk::SetValue(double value) { } void NativeSliderGtk::SetFocus() { - Focus(); + OnFocus(); } gfx::Size NativeSliderGtk::GetPreferredSize() { diff --git a/views/controls/slider/slider.cc b/views/controls/slider/slider.cc index 993e524..70dc13e 100644 --- a/views/controls/slider/slider.cc +++ b/views/controls/slider/slider.cc @@ -74,14 +74,14 @@ void Slider::SetEnabled(bool enabled) { native_wrapper_->UpdateEnabled(); } -void Slider::Focus() { +void Slider::OnFocus() { if (native_wrapper_) { // Forward the focus to the wrapper if it exists. native_wrapper_->SetFocus(); } else { // If there is no wrapper, cause the RootView to be focused so that we still // get keyboard messages. - View::Focus(); + View::OnFocus(); } } diff --git a/views/controls/slider/slider.h b/views/controls/slider/slider.h index c61da1e..fe9bfbf 100644 --- a/views/controls/slider/slider.h +++ b/views/controls/slider/slider.h @@ -68,15 +68,16 @@ class Slider : public View { double step() const { return step_; } // Overridden from View: - virtual void Layout(); - virtual gfx::Size GetPreferredSize(); - virtual void SetEnabled(bool enabled); - virtual void OnPaintFocusBorder(gfx::Canvas* canvas); + virtual void Layout() OVERRIDE; + virtual gfx::Size GetPreferredSize() OVERRIDE; + virtual void SetEnabled(bool enabled) OVERRIDE; + virtual void OnPaintFocusBorder(gfx::Canvas* canvas) OVERRIDE; protected: - virtual void Focus(); - virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child); - virtual std::string GetClassName() const; + virtual void OnFocus() OVERRIDE; + virtual void ViewHierarchyChanged(bool is_add, View* parent, + View* child) OVERRIDE; + virtual std::string GetClassName() const OVERRIDE; // Creates a new native wrapper properly initialized and returns it. Ownership // is passed to the caller. diff --git a/views/controls/tabbed_pane/native_tabbed_pane_gtk.cc b/views/controls/tabbed_pane/native_tabbed_pane_gtk.cc index a82e893..0b47abde 100644 --- a/views/controls/tabbed_pane/native_tabbed_pane_gtk.cc +++ b/views/controls/tabbed_pane/native_tabbed_pane_gtk.cc @@ -104,7 +104,7 @@ View* NativeTabbedPaneGtk::GetView() { } void NativeTabbedPaneGtk::SetFocus() { - Focus(); + OnFocus(); } gfx::Size NativeTabbedPaneGtk::GetPreferredSize() { diff --git a/views/controls/tabbed_pane/native_tabbed_pane_win.cc b/views/controls/tabbed_pane/native_tabbed_pane_win.cc index aa651ac..ba4ffe6 100644 --- a/views/controls/tabbed_pane/native_tabbed_pane_win.cc +++ b/views/controls/tabbed_pane/native_tabbed_pane_win.cc @@ -235,7 +235,7 @@ View* NativeTabbedPaneWin::GetView() { void NativeTabbedPaneWin::SetFocus() { // Focus the associated HWND. - Focus(); + OnFocus(); } gfx::Size NativeTabbedPaneWin::GetPreferredSize() { diff --git a/views/controls/tabbed_pane/tabbed_pane.cc b/views/controls/tabbed_pane/tabbed_pane.cc index 41f4432..eb9f971 100644 --- a/views/controls/tabbed_pane/tabbed_pane.cc +++ b/views/controls/tabbed_pane/tabbed_pane.cc @@ -112,7 +112,7 @@ void TabbedPane::Layout() { native_tabbed_pane_->GetView()->SetBounds(0, 0, width(), height()); } -void TabbedPane::Focus() { +void TabbedPane::OnFocus() { // Forward the focus to the wrapper. if (native_tabbed_pane_) { native_tabbed_pane_->SetFocus(); @@ -122,8 +122,8 @@ void TabbedPane::Focus() { selected_tab->NotifyAccessibilityEvent(AccessibilityTypes::EVENT_FOCUS); } else - View::Focus(); // Will focus the RootView window (so we still get keyboard - // messages). + View::OnFocus(); // Will focus the RootView window (so we still get + // keyboard messages). } void TabbedPane::OnPaintFocusBorder(gfx::Canvas* canvas) { diff --git a/views/controls/tabbed_pane/tabbed_pane.h b/views/controls/tabbed_pane/tabbed_pane.h index 7c991c3..4fdb727 100644 --- a/views/controls/tabbed_pane/tabbed_pane.h +++ b/views/controls/tabbed_pane/tabbed_pane.h @@ -69,7 +69,7 @@ class TabbedPane : public View { virtual bool AcceleratorPressed(const views::Accelerator& accelerator); virtual std::string GetClassName() const; virtual void Layout(); - virtual void Focus(); + virtual void OnFocus(); virtual void OnPaintFocusBorder(gfx::Canvas* canvas); virtual AccessibilityTypes::Role GetAccessibleRole(); virtual gfx::Size GetPreferredSize(); diff --git a/views/controls/table/native_table_gtk.cc b/views/controls/table/native_table_gtk.cc index 87040bc..f87df59 100644 --- a/views/controls/table/native_table_gtk.cc +++ b/views/controls/table/native_table_gtk.cc @@ -56,7 +56,7 @@ View* NativeTableGtk::GetView() { void NativeTableGtk::SetFocus() { // Focus the associated widget. - Focus(); + OnFocus(); } gfx::NativeView NativeTableGtk::GetTestingHandle() const { diff --git a/views/controls/table/native_table_win.cc b/views/controls/table/native_table_win.cc index bc40a55..fd7fb4b 100644 --- a/views/controls/table/native_table_win.cc +++ b/views/controls/table/native_table_win.cc @@ -104,7 +104,7 @@ View* NativeTableWin::GetView() { void NativeTableWin::SetFocus() { // Focus the associated HWND. - Focus(); + OnFocus(); } gfx::NativeView NativeTableWin::GetTestingHandle() const { diff --git a/views/controls/textfield/native_textfield_gtk.cc b/views/controls/textfield/native_textfield_gtk.cc index cbe7a2c..f3b1ff5 100644 --- a/views/controls/textfield/native_textfield_gtk.cc +++ b/views/controls/textfield/native_textfield_gtk.cc @@ -327,7 +327,7 @@ void NativeTextfieldGtk::UpdateVerticalMargins() { } bool NativeTextfieldGtk::SetFocus() { - Focus(); + OnFocus(); return true; } @@ -364,13 +364,10 @@ bool NativeTextfieldGtk::HandleKeyReleased(const views::KeyEvent& e) { return false; } -void NativeTextfieldGtk::HandleWillGainFocus() { +void NativeTextfieldGtk::HandleFocus() { } -void NativeTextfieldGtk::HandleDidGainFocus() { -} - -void NativeTextfieldGtk::HandleWillLoseFocus() { +void NativeTextfieldGtk::HandleBlur() { } // static diff --git a/views/controls/textfield/native_textfield_gtk.h b/views/controls/textfield/native_textfield_gtk.h index 9f2d1f7..bfbc839 100644 --- a/views/controls/textfield/native_textfield_gtk.h +++ b/views/controls/textfield/native_textfield_gtk.h @@ -28,38 +28,37 @@ class NativeTextfieldGtk : public NativeControlGtk, static gfx::Insets GetTextViewInnerBorder(GtkTextView* text_view); // Overridden from NativeTextfieldWrapper: - virtual string16 GetText() const; - virtual void UpdateText(); - virtual void AppendText(const string16& text); - virtual string16 GetSelectedText() const; - virtual void SelectAll(); - virtual void ClearSelection(); - virtual void UpdateBorder(); - virtual void UpdateTextColor(); - virtual void UpdateBackgroundColor(); - virtual void UpdateReadOnly(); - virtual void UpdateFont(); - virtual void UpdateIsPassword(); - virtual void UpdateEnabled(); - virtual gfx::Insets CalculateInsets(); - virtual void UpdateHorizontalMargins(); - virtual void UpdateVerticalMargins(); - virtual bool SetFocus(); - virtual View* GetView(); - virtual gfx::NativeView GetTestingHandle() const; - virtual bool IsIMEComposing() const; - virtual void GetSelectedRange(TextRange* range) const; - virtual void SelectRange(const TextRange& range); - virtual size_t GetCursorPosition() const; - virtual bool HandleKeyPressed(const views::KeyEvent& e); - virtual bool HandleKeyReleased(const views::KeyEvent& e); - virtual void HandleWillGainFocus(); - virtual void HandleDidGainFocus(); - virtual void HandleWillLoseFocus(); + virtual string16 GetText() const OVERRIDE; + virtual void UpdateText() OVERRIDE; + virtual void AppendText(const string16& text) OVERRIDE; + virtual string16 GetSelectedText() const OVERRIDE; + virtual void SelectAll() OVERRIDE; + virtual void ClearSelection() OVERRIDE; + virtual void UpdateBorder() OVERRIDE; + virtual void UpdateTextColor() OVERRIDE; + virtual void UpdateBackgroundColor() OVERRIDE; + virtual void UpdateReadOnly() OVERRIDE; + virtual void UpdateFont() OVERRIDE; + virtual void UpdateIsPassword() OVERRIDE; + virtual void UpdateEnabled() OVERRIDE; + virtual gfx::Insets CalculateInsets() OVERRIDE; + virtual void UpdateHorizontalMargins() OVERRIDE; + virtual void UpdateVerticalMargins() OVERRIDE; + virtual bool SetFocus() OVERRIDE; + virtual View* GetView() OVERRIDE; + virtual gfx::NativeView GetTestingHandle() const OVERRIDE; + virtual bool IsIMEComposing() const OVERRIDE; + virtual void GetSelectedRange(TextRange* range) const OVERRIDE; + virtual void SelectRange(const TextRange& range) OVERRIDE; + virtual size_t GetCursorPosition() const OVERRIDE; + virtual bool HandleKeyPressed(const views::KeyEvent& e) OVERRIDE; + virtual bool HandleKeyReleased(const views::KeyEvent& e) OVERRIDE; + virtual void HandleFocus() OVERRIDE; + virtual void HandleBlur() OVERRIDE; // Overridden from NativeControlGtk: - virtual void CreateNativeControl(); - virtual void NativeControlCreated(GtkWidget* widget); + virtual void CreateNativeControl() OVERRIDE; + virtual void NativeControlCreated(GtkWidget* widget) OVERRIDE; // Returns true if the textfield is for password. bool IsPassword(); diff --git a/views/controls/textfield/native_textfield_views.cc b/views/controls/textfield/native_textfield_views.cc index 5642ef9..b49fcb6 100644 --- a/views/controls/textfield/native_textfield_views.cc +++ b/views/controls/textfield/native_textfield_views.cc @@ -102,9 +102,8 @@ void NativeTextfieldViews::OnMouseReleased(const views::MouseEvent& e, } bool NativeTextfieldViews::OnKeyPressed(const views::KeyEvent& e) { - // OnKeyPressed/OnKeyReleased/WillGainFocus/DidGainFocus/WillLoseFocus - // will never be invoked on NativeTextfieldViews as it will never - // gain focus. + // OnKeyPressed/OnKeyReleased/OnFocus/OnBlur will never be invoked on + // NativeTextfieldViews as it will never gain focus. NOTREACHED(); return false; } @@ -126,15 +125,11 @@ void NativeTextfieldViews::OnBoundsChanged() { UpdateCursorBoundsAndTextOffset(); } -void NativeTextfieldViews::WillGainFocus() { +void NativeTextfieldViews::OnFocus() { NOTREACHED(); } -void NativeTextfieldViews::DidGainFocus() { - NOTREACHED(); -} - -void NativeTextfieldViews::WillLoseFocus() { +void NativeTextfieldViews::OnBlur() { NOTREACHED(); } @@ -310,10 +305,7 @@ bool NativeTextfieldViews::HandleKeyReleased(const views::KeyEvent& e) { return true; } -void NativeTextfieldViews::HandleWillGainFocus() { -} - -void NativeTextfieldViews::HandleDidGainFocus() { +void NativeTextfieldViews::HandleFocus() { is_cursor_visible_ = true; SchedulePaint(); // Start blinking cursor. @@ -323,7 +315,7 @@ void NativeTextfieldViews::HandleDidGainFocus() { kCursorVisibleTimeMs); } -void NativeTextfieldViews::HandleWillLoseFocus() { +void NativeTextfieldViews::HandleBlur() { // Stop blinking cursor. cursor_timer_.RevokeAll(); if (is_cursor_visible_) { diff --git a/views/controls/textfield/native_textfield_views.h b/views/controls/textfield/native_textfield_views.h index 8f5764d..89484dc 100644 --- a/views/controls/textfield/native_textfield_views.h +++ b/views/controls/textfield/native_textfield_views.h @@ -47,60 +47,60 @@ class NativeTextfieldViews : public views::View, ~NativeTextfieldViews(); // views::View overrides: - virtual bool OnMousePressed(const views::MouseEvent& e); - virtual bool OnMouseDragged(const views::MouseEvent& e); - virtual void OnMouseReleased(const views::MouseEvent& e, bool canceled); - virtual bool OnKeyPressed(const views::KeyEvent& e); - virtual bool OnKeyReleased(const views::KeyEvent& e); - virtual void OnPaint(gfx::Canvas* canvas); - virtual void OnBoundsChanged(); - virtual void WillGainFocus(); - virtual void DidGainFocus(); - virtual void WillLoseFocus(); + virtual bool OnMousePressed(const views::MouseEvent& e) OVERRIDE; + virtual bool OnMouseDragged(const views::MouseEvent& e) OVERRIDE; + virtual void OnMouseReleased(const views::MouseEvent& e, + bool canceled) OVERRIDE; + virtual bool OnKeyPressed(const views::KeyEvent& e) OVERRIDE; + virtual bool OnKeyReleased(const views::KeyEvent& e) OVERRIDE; + virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; + virtual void OnBoundsChanged() OVERRIDE; + virtual void OnFocus() OVERRIDE; + virtual void OnBlur() OVERRIDE; virtual gfx::NativeCursor GetCursorForPoint(ui::EventType event_type, - const gfx::Point& p); + const gfx::Point& p) OVERRIDE; // views::ContextMenuController overrides: virtual void ShowContextMenu(View* source, const gfx::Point& p, - bool is_mouse_gesture); + bool is_mouse_gesture) OVERRIDE; // NativeTextfieldWrapper overrides: - virtual string16 GetText() const; - virtual void UpdateText(); - virtual void AppendText(const string16& text); - virtual string16 GetSelectedText() const; - virtual void SelectAll(); - virtual void ClearSelection(); - virtual void UpdateBorder(); - virtual void UpdateTextColor(); - virtual void UpdateBackgroundColor(); - virtual void UpdateReadOnly(); - virtual void UpdateFont(); - virtual void UpdateIsPassword(); - virtual void UpdateEnabled(); - virtual gfx::Insets CalculateInsets(); - virtual void UpdateHorizontalMargins(); - virtual void UpdateVerticalMargins(); - virtual bool SetFocus(); - virtual View* GetView(); - virtual gfx::NativeView GetTestingHandle() const; - virtual bool IsIMEComposing() const; - virtual void GetSelectedRange(TextRange* range) const; - virtual void SelectRange(const TextRange& range); - virtual size_t GetCursorPosition() const; - virtual bool HandleKeyPressed(const views::KeyEvent& e); - virtual bool HandleKeyReleased(const views::KeyEvent& e); - virtual void HandleWillGainFocus(); - virtual void HandleDidGainFocus(); - virtual void HandleWillLoseFocus(); + virtual string16 GetText() const OVERRIDE; + virtual void UpdateText() OVERRIDE; + virtual void AppendText(const string16& text) OVERRIDE; + virtual string16 GetSelectedText() const OVERRIDE; + virtual void SelectAll() OVERRIDE; + virtual void ClearSelection() OVERRIDE; + virtual void UpdateBorder() OVERRIDE; + virtual void UpdateTextColor() OVERRIDE; + virtual void UpdateBackgroundColor() OVERRIDE; + virtual void UpdateReadOnly() OVERRIDE; + virtual void UpdateFont() OVERRIDE; + virtual void UpdateIsPassword() OVERRIDE; + virtual void UpdateEnabled() OVERRIDE; + virtual gfx::Insets CalculateInsets() OVERRIDE; + virtual void UpdateHorizontalMargins() OVERRIDE; + virtual void UpdateVerticalMargins() OVERRIDE; + virtual bool SetFocus() OVERRIDE; + virtual View* GetView() OVERRIDE; + virtual gfx::NativeView GetTestingHandle() const OVERRIDE; + virtual bool IsIMEComposing() const OVERRIDE; + virtual void GetSelectedRange(TextRange* range) const OVERRIDE; + virtual void SelectRange(const TextRange& range) OVERRIDE; + virtual size_t GetCursorPosition() const OVERRIDE; + virtual bool HandleKeyPressed(const views::KeyEvent& e) OVERRIDE; + virtual bool HandleKeyReleased(const views::KeyEvent& e) OVERRIDE; + virtual void HandleFocus() OVERRIDE; + virtual void HandleBlur() OVERRIDE; // ui::SimpleMenuModel::Delegate overrides - virtual bool IsCommandIdChecked(int command_id) const; - virtual bool IsCommandIdEnabled(int command_id) const; - virtual bool GetAcceleratorForCommandId(int command_id, - ui::Accelerator* accelerator); - virtual void ExecuteCommand(int command_id); + virtual bool IsCommandIdChecked(int command_id) const OVERRIDE; + virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE; + virtual bool GetAcceleratorForCommandId( + int command_id, + ui::Accelerator* accelerator) OVERRIDE; + virtual void ExecuteCommand(int command_id) OVERRIDE; // class name of internal static const char kViewClassName[]; diff --git a/views/controls/textfield/native_textfield_win.cc b/views/controls/textfield/native_textfield_win.cc index 5ceb2a4d..e08be41 100644 --- a/views/controls/textfield/native_textfield_win.cc +++ b/views/controls/textfield/native_textfield_win.cc @@ -356,13 +356,10 @@ bool NativeTextfieldWin::HandleKeyReleased(const views::KeyEvent& e) { return false; } -void NativeTextfieldWin::HandleWillGainFocus() { +void NativeTextfieldWin::HandleFocus() { } -void NativeTextfieldWin::HandleDidGainFocus() { -} - -void NativeTextfieldWin::HandleWillLoseFocus() { +void NativeTextfieldWin::HandleBlur() { } //////////////////////////////////////////////////////////////////////////////// diff --git a/views/controls/textfield/native_textfield_win.h b/views/controls/textfield/native_textfield_win.h index d5a354e..bea98c2 100644 --- a/views/controls/textfield/native_textfield_win.h +++ b/views/controls/textfield/native_textfield_win.h @@ -59,41 +59,41 @@ class NativeTextfieldWin void AttachHack(); // Overridden from NativeTextfieldWrapper: - virtual string16 GetText() const; - virtual void UpdateText(); - virtual void AppendText(const string16& text); - virtual string16 GetSelectedText() const; - virtual void SelectAll(); - virtual void ClearSelection(); - virtual void UpdateBorder(); - virtual void UpdateTextColor(); - virtual void UpdateBackgroundColor(); - virtual void UpdateReadOnly(); - virtual void UpdateFont(); - virtual void UpdateIsPassword(); - virtual void UpdateEnabled(); - virtual gfx::Insets CalculateInsets(); - virtual void UpdateHorizontalMargins(); - virtual void UpdateVerticalMargins(); - virtual bool SetFocus(); - virtual View* GetView(); - virtual gfx::NativeView GetTestingHandle() const; - virtual bool IsIMEComposing() const; - virtual void GetSelectedRange(TextRange* range) const; - virtual void SelectRange(const TextRange& range); - virtual size_t GetCursorPosition() const; - virtual bool HandleKeyPressed(const views::KeyEvent& e); - virtual bool HandleKeyReleased(const views::KeyEvent& e); - virtual void HandleWillGainFocus(); - virtual void HandleDidGainFocus(); - virtual void HandleWillLoseFocus(); + virtual string16 GetText() const OVERRIDE; + virtual void UpdateText() OVERRIDE; + virtual void AppendText(const string16& text) OVERRIDE; + virtual string16 GetSelectedText() const OVERRIDE; + virtual void SelectAll() OVERRIDE; + virtual void ClearSelection() OVERRIDE; + virtual void UpdateBorder() OVERRIDE; + virtual void UpdateTextColor() OVERRIDE; + virtual void UpdateBackgroundColor() OVERRIDE; + virtual void UpdateReadOnly() OVERRIDE; + virtual void UpdateFont() OVERRIDE; + virtual void UpdateIsPassword() OVERRIDE; + virtual void UpdateEnabled() OVERRIDE; + virtual gfx::Insets CalculateInsets() OVERRIDE; + virtual void UpdateHorizontalMargins() OVERRIDE; + virtual void UpdateVerticalMargins() OVERRIDE; + virtual bool SetFocus() OVERRIDE; + virtual View* GetView() OVERRIDE; + virtual gfx::NativeView GetTestingHandle() const OVERRIDE; + virtual bool IsIMEComposing() const OVERRIDE; + virtual void GetSelectedRange(TextRange* range) const OVERRIDE; + virtual void SelectRange(const TextRange& range) OVERRIDE; + virtual size_t GetCursorPosition() const OVERRIDE; + virtual bool HandleKeyPressed(const views::KeyEvent& e) OVERRIDE; + virtual bool HandleKeyReleased(const views::KeyEvent& e) OVERRIDE; + virtual void HandleFocus() OVERRIDE; + virtual void HandleBlur() OVERRIDE; // Overridden from ui::SimpleMenuModel::Delegate: - virtual bool IsCommandIdChecked(int command_id) const; - virtual bool IsCommandIdEnabled(int command_id) const; - virtual bool GetAcceleratorForCommandId(int command_id, - ui::Accelerator* accelerator); - virtual void ExecuteCommand(int command_id); + virtual bool IsCommandIdChecked(int command_id) const OVERRIDE; + virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE; + virtual bool GetAcceleratorForCommandId( + int command_id, + ui::Accelerator* accelerator) OVERRIDE; + virtual void ExecuteCommand(int command_id) OVERRIDE; // Update accessibility information. void InitializeAccessibilityInfo(); diff --git a/views/controls/textfield/native_textfield_wrapper.h b/views/controls/textfield/native_textfield_wrapper.h index efe24be..1e98564 100644 --- a/views/controls/textfield/native_textfield_wrapper.h +++ b/views/controls/textfield/native_textfield_wrapper.h @@ -113,10 +113,9 @@ class NativeTextfieldWrapper { virtual bool HandleKeyReleased(const views::KeyEvent& e) = 0; // Invoked when focus is being moved from or to the Textfield. - // See also View::WillGainFocus/DidGainFocus/WillLoseFocus. - virtual void HandleWillGainFocus() = 0; - virtual void HandleDidGainFocus() = 0; - virtual void HandleWillLoseFocus() = 0; + // See also View::OnFocus/OnBlur. + virtual void HandleFocus() = 0; + virtual void HandleBlur() = 0; // Creates an appropriate NativeTextfieldWrapper for the platform. static NativeTextfieldWrapper* CreateWrapper(Textfield* field); diff --git a/views/controls/textfield/textfield.cc b/views/controls/textfield/textfield.cc index 6a3c40d..2a72712 100644 --- a/views/controls/textfield/textfield.cc +++ b/views/controls/textfield/textfield.cc @@ -342,19 +342,22 @@ bool Textfield::OnKeyReleased(const views::KeyEvent& e) { return native_wrapper_ && native_wrapper_->HandleKeyReleased(e); } -void Textfield::WillGainFocus() { +void Textfield::OnFocus() { if (native_wrapper_) - native_wrapper_->HandleWillGainFocus(); -} + native_wrapper_->HandleFocus(); -void Textfield::DidGainFocus() { - if (native_wrapper_) - native_wrapper_->HandleDidGainFocus(); + // Forward the focus to the wrapper if it exists. + if (!native_wrapper_ || !native_wrapper_->SetFocus()) { + // If there is no wrapper or the wrapper didn't take focus, call + // View::Focus to clear the native focus so that we still get + // keyboard messages. + View::OnFocus(); + } } -void Textfield::WillLoseFocus() { +void Textfield::OnBlur() { if (native_wrapper_) - native_wrapper_->HandleWillLoseFocus(); + native_wrapper_->HandleBlur(); } AccessibilityTypes::Role Textfield::GetAccessibleRole() { @@ -382,16 +385,6 @@ void Textfield::SetEnabled(bool enabled) { native_wrapper_->UpdateEnabled(); } -void Textfield::Focus() { - // Forward the focus to the wrapper if it exists. - if (!native_wrapper_ || !native_wrapper_->SetFocus()) { - // If there is no wrapper or the wrapper din't take focus, call - // View::Focus to clear the native focus so that we still get - // keyboard messages. - View::Focus(); - } -} - void Textfield::ViewHierarchyChanged(bool is_add, View* parent, View* child) { if (is_add && !native_wrapper_ && GetWidget() && !initialized_) { initialized_ = true; diff --git a/views/controls/textfield/textfield.h b/views/controls/textfield/textfield.h index 7b6b756..c8484d5 100644 --- a/views/controls/textfield/textfield.h +++ b/views/controls/textfield/textfield.h @@ -257,29 +257,26 @@ class Textfield : public View { #endif // Overridden from View: - virtual void Layout(); - virtual gfx::Size GetPreferredSize(); - virtual bool IsFocusable() const; - virtual void AboutToRequestFocusFromTabTraversal(bool reverse); - virtual bool SkipDefaultKeyEventProcessing(const KeyEvent& e); - virtual void SetEnabled(bool enabled); - virtual void OnPaintBackground(gfx::Canvas* canvas); - virtual void OnPaintFocusBorder(gfx::Canvas* canvas); - virtual bool OnKeyPressed(const views::KeyEvent& e); - virtual bool OnKeyReleased(const views::KeyEvent& e); - virtual void WillGainFocus(); - virtual void DidGainFocus(); - virtual void WillLoseFocus(); - - // Accessibility accessors, overridden from View: + virtual void Layout() OVERRIDE; + virtual gfx::Size GetPreferredSize() OVERRIDE; + virtual bool IsFocusable() const OVERRIDE; + virtual void AboutToRequestFocusFromTabTraversal(bool reverse) OVERRIDE; + virtual bool SkipDefaultKeyEventProcessing(const KeyEvent& e) OVERRIDE; + virtual void SetEnabled(bool enabled) OVERRIDE; + virtual void OnPaintBackground(gfx::Canvas* canvas) OVERRIDE; + virtual void OnPaintFocusBorder(gfx::Canvas* canvas) OVERRIDE; + virtual bool OnKeyPressed(const views::KeyEvent& e) OVERRIDE; + virtual bool OnKeyReleased(const views::KeyEvent& e) OVERRIDE; + virtual void OnFocus() OVERRIDE; + virtual void OnBlur() OVERRIDE; virtual AccessibilityTypes::Role GetAccessibleRole() OVERRIDE; virtual AccessibilityTypes::State GetAccessibleState() OVERRIDE; virtual string16 GetAccessibleValue() OVERRIDE; protected: - virtual void Focus(); - virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child); - virtual std::string GetClassName() const; + virtual void ViewHierarchyChanged(bool is_add, View* parent, + View* child) OVERRIDE; + virtual std::string GetClassName() const OVERRIDE; // The object that actually implements the native text field. NativeTextfieldWrapper* native_wrapper_; diff --git a/views/focus/focus_manager.cc b/views/focus/focus_manager.cc index 13a03da..baaf2a0 100644 --- a/views/focus/focus_manager.cc +++ b/views/focus/focus_manager.cc @@ -297,39 +297,22 @@ View* FocusManager::GetNextFocusableView(View* original_starting_view, void FocusManager::SetFocusedViewWithReason( View* view, FocusChangeReason reason) { - focus_change_reason_ = reason; - if (focused_view_ == view) return; - View* prev_focused_view = focused_view_; - if (focused_view_) - focused_view_->WillLoseFocus(); - - if (view) - view->WillGainFocus(); - - // Notified listeners that the focus changed. + // Notified listeners that the focus will change. FocusChangeListenerList::const_iterator iter; for (iter = focus_change_listeners_.begin(); iter != focus_change_listeners_.end(); ++iter) { - (*iter)->FocusWillChange(prev_focused_view, view); + (*iter)->FocusWillChange(focused_view_, view); } + focus_change_reason_ = reason; + if (focused_view_) + focused_view_->Blur(); focused_view_ = view; - - if (prev_focused_view) - prev_focused_view->SchedulePaint(); // Remove focus artifacts. - - if (view) { - view->SchedulePaint(); - view->Focus(); - if (view == focused_view_) { - // Only tell the view it is focused if it's still our focused view. It's - // possible for Focus to remove/delete the view. - view->DidGainFocus(); - } - } + if (focused_view_) + focused_view_->Focus(); } void FocusManager::ClearFocus() { diff --git a/views/focus/focus_manager.h b/views/focus/focus_manager.h index 6d41b6b..e58577a 100644 --- a/views/focus/focus_manager.h +++ b/views/focus/focus_manager.h @@ -100,6 +100,7 @@ class FocusTraversable { // This interface should be implemented by classes that want to be notified when // the focus is about to change. See the Add/RemoveFocusChangeListener methods. +// No change to focus state has occurred yet when this function is called. class FocusChangeListener { public: virtual void FocusWillChange(View* focused_before, View* focused_now) = 0; diff --git a/views/focus/focus_manager_unittest.cc b/views/focus/focus_manager_unittest.cc index 2199b9f..f016b4b 100644 --- a/views/focus/focus_manager_unittest.cc +++ b/views/focus/focus_manager_unittest.cc @@ -749,9 +749,8 @@ void FocusTraversalTest::InitContentView() { //////////////////////////////////////////////////////////////////////////////// enum FocusTestEventType { - WILL_GAIN_FOCUS = 0, - DID_GAIN_FOCUS, - WILL_LOSE_FOCUS + ON_FOCUS = 0, + ON_BLUR }; struct FocusTestEvent { @@ -772,16 +771,12 @@ class SimpleTestView : public View { SetID(view_id); } - virtual void WillGainFocus() { - event_list_->push_back(FocusTestEvent(WILL_GAIN_FOCUS, GetID())); + virtual void OnFocus() { + event_list_->push_back(FocusTestEvent(ON_FOCUS, GetID())); } - virtual void DidGainFocus() { - event_list_->push_back(FocusTestEvent(DID_GAIN_FOCUS, GetID())); - } - - virtual void WillLoseFocus() { - event_list_->push_back(FocusTestEvent(WILL_LOSE_FOCUS, GetID())); + virtual void OnBlur() { + event_list_->push_back(FocusTestEvent(ON_BLUR, GetID())); } private: @@ -801,26 +796,22 @@ TEST_F(FocusManagerTest, ViewFocusCallbacks) { content_view_->AddChildView(view2); view1->RequestFocus(); - ASSERT_EQ(2, static_cast<int>(event_list.size())); - EXPECT_EQ(WILL_GAIN_FOCUS, event_list[0].type); - EXPECT_EQ(kView1ID, event_list[0].view_id); - EXPECT_EQ(DID_GAIN_FOCUS, event_list[1].type); + ASSERT_EQ(1, static_cast<int>(event_list.size())); + EXPECT_EQ(ON_FOCUS, event_list[0].type); EXPECT_EQ(kView1ID, event_list[0].view_id); event_list.clear(); view2->RequestFocus(); - ASSERT_EQ(3, static_cast<int>(event_list.size())); - EXPECT_EQ(WILL_LOSE_FOCUS, event_list[0].type); + ASSERT_EQ(2, static_cast<int>(event_list.size())); + EXPECT_EQ(ON_BLUR, event_list[0].type); EXPECT_EQ(kView1ID, event_list[0].view_id); - EXPECT_EQ(WILL_GAIN_FOCUS, event_list[1].type); + EXPECT_EQ(ON_FOCUS, event_list[1].type); EXPECT_EQ(kView2ID, event_list[1].view_id); - EXPECT_EQ(DID_GAIN_FOCUS, event_list[2].type); - EXPECT_EQ(kView2ID, event_list[2].view_id); event_list.clear(); GetFocusManager()->ClearFocus(); ASSERT_EQ(1, static_cast<int>(event_list.size())); - EXPECT_EQ(WILL_LOSE_FOCUS, event_list[0].type); + EXPECT_EQ(ON_BLUR, event_list[0].type); EXPECT_EQ(kView2ID, event_list[0].view_id); } diff --git a/views/view.cc b/views/view.cc index a19d662..d616fc7 100644 --- a/views/view.cc +++ b/views/view.cc @@ -857,15 +857,6 @@ void View::RequestFocus() { focus_manager->SetFocusedView(this); } -void View::WillGainFocus() { -} - -void View::DidGainFocus() { -} - -void View::WillLoseFocus() { -} - // Tooltips -------------------------------------------------------------------- bool View::GetTooltipText(const gfx::Point& p, std::wstring* tooltip) { @@ -1076,17 +1067,34 @@ bool View::IsFocusable() const { return focusable_ && IsEnabled() && IsVisible(); } -void View::Focus() { +void View::OnFocus() { + // TODO(beng): Investigate whether it's possible for us to move this to + // Focus(). // By default, we clear the native focus. This ensures that no visible native // view as the focus and that we still receive keyboard inputs. FocusManager* focus_manager = GetFocusManager(); if (focus_manager) focus_manager->ClearNativeFocus(); + // TODO(beng): Investigate whether it's possible for us to move this to + // Focus(). // Notify assistive technologies of the focus change. NotifyAccessibilityEvent(AccessibilityTypes::EVENT_FOCUS); } +void View::OnBlur() { +} + +void View::Focus() { + SchedulePaint(); + OnFocus(); +} + +void View::Blur() { + SchedulePaint(); + OnBlur(); +} + // Tooltips -------------------------------------------------------------------- void View::TooltipTextChanged() { diff --git a/views/view.h b/views/view.h index 5ebdd3f..1c5761c 100644 --- a/views/view.h +++ b/views/view.h @@ -750,15 +750,6 @@ class View : public AcceleratorTarget { // focused view. virtual void RequestFocus(); - // Invoked when a view is about to gain focus - virtual void WillGainFocus(); - - // Invoked when a view just gained focus. - virtual void DidGainFocus(); - - // Invoked when a view is about lose focus - virtual void WillLoseFocus(); - // Invoked when a view is about to be requested for focus due to the focus // traversal. Reverse is this request was generated going backward // (Shift-Tab). @@ -1092,14 +1083,13 @@ class View : public AcceleratorTarget { // The FocusManager and other places use IsFocusableInRootView. virtual bool IsFocusable() const; - // Sets the keyboard focus to this View. The correct way to set the focus is - // to call RequestFocus() on the view. This method is called when the focus is - // set and gives an opportunity to subclasses to perform any extra focus steps - // (for example native component set the native focus on their native - // component). The default behavior is to set the native focus on the root - // Widget, which is what is appropriate for views that have no native window - // associated with them (so the root view gets the keyboard messages). - virtual void Focus(); + // Override to be notified when focus has changed either to or from this View. + virtual void OnFocus(); + virtual void OnBlur(); + + // Handle view focus/blur events for this view. + void Focus(); + void Blur(); // Whether the view can be focused. bool focusable_; |