diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-09 23:48:30 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-09 23:48:30 +0000 |
commit | 5c9e97acabd4cdab5adb20d2412a5766b3382856 (patch) | |
tree | ead11654548e0e110cf8c8dce962801d530d54f7 /views/widget | |
parent | 7f01f83fd464fc13cbdb9d377493d1781decf363 (diff) | |
download | chromium_src-5c9e97acabd4cdab5adb20d2412a5766b3382856.zip chromium_src-5c9e97acabd4cdab5adb20d2412a5766b3382856.tar.gz chromium_src-5c9e97acabd4cdab5adb20d2412a5766b3382856.tar.bz2 |
First cut at implementation of FindBar for views / gtk
Also had to implement change notification for TextField on views / gtk
Review URL: http://codereview.chromium.org/200035
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25819 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/widget')
-rw-r--r-- | views/widget/root_view.cc | 8 | ||||
-rw-r--r-- | views/widget/widget_gtk.cc | 12 |
2 files changed, 14 insertions, 6 deletions
diff --git a/views/widget/root_view.cc b/views/widget/root_view.cc index 4469051..9d11c27 100644 --- a/views/widget/root_view.cc +++ b/views/widget/root_view.cc @@ -360,11 +360,12 @@ bool RootView::OnMousePressed(const MouseEvent& e) { if (focus_on_mouse_pressed_) { #if defined(OS_WIN) HWND hwnd = GetWidget()->GetNativeView(); - if (::GetFocus() != hwnd) { + if (::GetFocus() != hwnd) ::SetFocus(hwnd); - } #else - NOTIMPLEMENTED(); + GtkWidget* widget = GetWidget()->GetNativeView(); + if (!gtk_widget_is_focus(widget)) + gtk_widget_grab_focus(widget); #endif } @@ -782,7 +783,6 @@ bool RootView::ProcessKeyEvent(const KeyEvent& event) { v->ShowContextMenu(screen_loc.x(), screen_loc.y(), false); return true; } - for (; v && v != this && !consumed; v = v->GetParent()) { consumed = (event.GetType() == Event::ET_KEY_PRESSED) ? v->OnKeyPressed(event) : v->OnKeyReleased(event); diff --git a/views/widget/widget_gtk.cc b/views/widget/widget_gtk.cc index 89561cd..d1271f5 100644 --- a/views/widget/widget_gtk.cc +++ b/views/widget/widget_gtk.cc @@ -295,7 +295,6 @@ void WidgetGtk::Init(GtkWidget* parent, if (type_ == TYPE_CHILD) { if (parent) { WidgetGtk* parent_widget = GetViewForNative(parent); - parent_widget->AddChild(widget_); parent_widget->PositionChild(widget_, bounds.x(), bounds.y(), bounds.width(), bounds.height()); } @@ -459,7 +458,16 @@ ThemeProvider* WidgetGtk::GetThemeProvider() const { } FocusManager* WidgetGtk::GetFocusManager() { - return focus_manager_.get(); + if (focus_manager_.get()) + return focus_manager_.get(); + + Widget* root = GetRootWidget(); + if (root && root != this) { + // Widget subclasses may override GetFocusManager(), for example for + // dealing with cases where the widget has been unparented. + return root->GetFocusManager(); + } + return NULL; } void WidgetGtk::ViewHierarchyChanged(bool is_add, View *parent, |