diff options
author | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-24 19:54:15 +0000 |
---|---|---|
committer | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-24 19:54:15 +0000 |
commit | e8a9a7472f544a839cbc47b8279d3ce99b0cf0a0 (patch) | |
tree | 8d784135c8791292a9413904f6b4dedbee89ab3a /chrome | |
parent | 1e4a731e18cc375d537776576d379d4349c0b86c (diff) | |
download | chromium_src-e8a9a7472f544a839cbc47b8279d3ce99b0cf0a0.zip chromium_src-e8a9a7472f544a839cbc47b8279d3ce99b0cf0a0.tar.gz chromium_src-e8a9a7472f544a839cbc47b8279d3ce99b0cf0a0.tar.bz2 |
Refactoring some of the NativeViewHost and NativeControl focus management so their consumers don't have to explicitly set the focused view.
BUG=None
TEST=Run all tests. Make sure focus is stored/restored properly in Chrome.
Review URL: http://codereview.chromium.org/214029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27113 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
10 files changed, 24 insertions, 25 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit.h b/chrome/browser/autocomplete/autocomplete_edit.h index 6a8c6d6..7b29b7f 100644 --- a/chrome/browser/autocomplete/autocomplete_edit.h +++ b/chrome/browser/autocomplete/autocomplete_edit.h @@ -47,9 +47,6 @@ class AutocompleteEditController { // the edit is guaranteed to be showing the permanent text. virtual void OnInputInProgress(bool in_progress) = 0; - // Called whenever the autocomplete edit gets focused. - virtual void OnSetFocus() = 0; - // Returns the favicon of the current page. virtual SkBitmap GetFavIcon() const = 0; diff --git a/chrome/browser/autocomplete/autocomplete_edit_view.h b/chrome/browser/autocomplete/autocomplete_edit_view.h index cba7342..cdca4c8 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view.h @@ -128,6 +128,10 @@ class AutocompleteEditView { // Returns the gfx::NativeView of the edit view. virtual gfx::NativeView GetNativeView() const = 0; + + // Returns the gfx::NativeView of the edit view that should receive focus when + // the location bar is focused. + virtual gfx::NativeView GetFocusNativeView() const = 0; }; #endif // CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_EDIT_VIEW_H_ diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc index 6dfb45d..2798fc2 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc +++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc @@ -505,6 +505,10 @@ gfx::NativeView AutocompleteEditViewGtk::GetNativeView() const { return alignment_.get(); } +gfx::NativeView AutocompleteEditViewGtk::GetFocusNativeView() const { + return text_view_; +} + void AutocompleteEditViewGtk::Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details) { @@ -756,7 +760,6 @@ gboolean AutocompleteEditViewGtk::HandleViewFocusIn() { GdkModifierType modifiers; gdk_window_get_pointer(text_view_->window, NULL, NULL, &modifiers); model_->OnSetFocus((modifiers & GDK_CONTROL_MASK) != 0); - controller_->OnSetFocus(); // TODO(deanm): Some keyword hit business, etc here. return FALSE; // Continue propagation. diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h index 3f5c87a..b9c9280 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h @@ -110,6 +110,7 @@ class AutocompleteEditViewGtk : public AutocompleteEditView, virtual void OnBeforePossibleChange(); virtual bool OnAfterPossibleChange(); virtual gfx::NativeView GetNativeView() const; + virtual gfx::NativeView GetFocusNativeView() const; // Overridden from NotificationObserver: virtual void Observe(NotificationType type, diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.h b/chrome/browser/autocomplete/autocomplete_edit_view_mac.h index 56d7cee..b293d8b 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.h @@ -89,6 +89,7 @@ class AutocompleteEditViewMac : public AutocompleteEditView, virtual void OnBeforePossibleChange(); virtual bool OnAfterPossibleChange(); virtual gfx::NativeView GetNativeView() const; + virtual gfx::NativeView GetFocusNativeView() const; // Implement the AutocompleteTextFieldObserver interface. virtual void OnControlKeyChanged(bool pressed); diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm index ed26081..051e7ac 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm +++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm @@ -550,6 +550,10 @@ gfx::NativeView AutocompleteEditViewMac::GetNativeView() const { return field_; } +gfx::NativeView AutocompleteEditViewMac::GetFocusNativeView() const { + return field_; +} + void AutocompleteEditViewMac::OnUpOrDownKeyPressed(bool up, bool by_page) { // We should only arrive here when the field is focussed. DCHECK(IsFirstResponder()); diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_win.cc b/chrome/browser/autocomplete/autocomplete_edit_view_win.cc index e6643f3..1ada16a 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_win.cc +++ b/chrome/browser/autocomplete/autocomplete_edit_view_win.cc @@ -869,6 +869,10 @@ gfx::NativeView AutocompleteEditViewWin::GetNativeView() const { return m_hWnd; } +gfx::NativeView AutocompleteEditViewWin::GetFocusNativeView() const { + return m_hWnd; +} + void AutocompleteEditViewWin::PasteAndGo(const std::wstring& text) { if (CanPasteAndGo(text)) model_->PasteAndGo(); @@ -1636,15 +1640,6 @@ void AutocompleteEditViewWin::OnPaste() { } void AutocompleteEditViewWin::OnSetFocus(HWND focus_wnd) { - views::FocusManager* focus_manager = parent_view_->GetFocusManager(); - if (focus_manager) { - // Notify the FocusManager that the focused view is now the location bar - // (our parent view). - focus_manager->SetFocusedView(parent_view_); - } else { - NOTREACHED(); - } - model_->OnSetFocus(GetKeyState(VK_CONTROL) < 0); // Notify controller if it needs to show hint UI of some kind. diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_win.h b/chrome/browser/autocomplete/autocomplete_edit_view_win.h index 8946c4c..a4cf616 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_win.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view_win.h @@ -120,6 +120,7 @@ class AutocompleteEditViewWin virtual void OnBeforePossibleChange(); virtual bool OnAfterPossibleChange(); virtual gfx::NativeView GetNativeView() const; + virtual gfx::NativeView GetFocusNativeView() const; // Exposes custom IAccessible implementation to the overall MSAA hierarchy. IAccessible* GetIAccessible(); diff --git a/chrome/browser/views/location_bar_view.cc b/chrome/browser/views/location_bar_view.cc index 4becb2f..0bff973 100644 --- a/chrome/browser/views/location_bar_view.cc +++ b/chrome/browser/views/location_bar_view.cc @@ -157,6 +157,8 @@ void LocationBarView::Init() { location_entry_view_->SetID(VIEW_ID_AUTOCOMPLETE); AddChildView(location_entry_view_); location_entry_view_->set_focus_view(this); + location_entry_view_->set_focus_native_view(location_entry_-> + GetFocusNativeView()); location_entry_view_->Attach( #if defined(OS_WIN) location_entry_->m_hWnd @@ -290,8 +292,9 @@ void LocationBarView::InvalidatePageActions() { } void LocationBarView::Focus() { - // Focus the location entry native view. - location_entry_->SetFocus(); + // Forward the focus to the NativeViewHost that will focus the right + // native-view. + location_entry_view_->Focus(); } void LocationBarView::SetProfile(Profile* profile) { @@ -417,15 +420,6 @@ void LocationBarView::OnChanged() { DoLayout(false); } -void LocationBarView::OnSetFocus() { - views::FocusManager* focus_manager = GetFocusManager(); - if (!focus_manager) { - NOTREACHED(); - return; - } - focus_manager->SetFocusedView(this); -} - SkBitmap LocationBarView::GetFavIcon() const { DCHECK(delegate_); DCHECK(delegate_->GetTabContents()); diff --git a/chrome/browser/views/location_bar_view.h b/chrome/browser/views/location_bar_view.h index 343e7e6..e60edc9 100644 --- a/chrome/browser/views/location_bar_view.h +++ b/chrome/browser/views/location_bar_view.h @@ -125,7 +125,6 @@ class LocationBarView : public LocationBar, virtual void OnInputInProgress(bool in_progress) { delegate_->OnInputInProgress(in_progress); } - virtual void OnSetFocus(); virtual SkBitmap GetFavIcon() const; virtual std::wstring GetTitle() const; |