summaryrefslogtreecommitdiffstats
path: root/views/widget
diff options
context:
space:
mode:
authordavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-09 23:48:30 +0000
committerdavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-09 23:48:30 +0000
commit5c9e97acabd4cdab5adb20d2412a5766b3382856 (patch)
treeead11654548e0e110cf8c8dce962801d530d54f7 /views/widget
parent7f01f83fd464fc13cbdb9d377493d1781decf363 (diff)
downloadchromium_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.cc8
-rw-r--r--views/widget/widget_gtk.cc12
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,