Chromium Code Reviews| Index: views/widget/widget_gtk.cc |
| diff --git a/views/widget/widget_gtk.cc b/views/widget/widget_gtk.cc |
| index d6655da8f6b252fa92de8382a1ba31e7e08fb381..180e5811cecba86313ec826d7ce76b74fe18171a 100644 |
| --- a/views/widget/widget_gtk.cc |
| +++ b/views/widget/widget_gtk.cc |
| @@ -1262,11 +1262,7 @@ gboolean WidgetGtk::OnFocusOut(GtkWidget* widget, GdkEventFocus* event) { |
| gboolean WidgetGtk::OnKeyEvent(GtkWidget* widget, GdkEventKey* event) { |
| KeyEvent key(reinterpret_cast<NativeEvent>(event)); |
| - if (input_method_.get()) |
| - input_method_->DispatchKeyEvent(key); |
| - else |
| - DispatchKeyEventPostIME(key); |
| - |
| + delegate->OnKeyEvent(key_event); |
| // Returns true to prevent GtkWindow's default key event handler. |
| return true; |
| } |
| @@ -1346,7 +1342,7 @@ gfx::AcceleratedWidget WidgetGtk::GetAcceleratedWidget() { |
| return GDK_WINDOW_XID(window_contents_->window); |
| } |
| -void WidgetGtk::DispatchKeyEventPostIME(const KeyEvent& key) { |
| +bool WidgetGtk::DispatchKeyEventPostIME(const KeyEvent& key) { |
| // Always reset |should_handle_menu_key_release_| unless we are handling a |
| // VKEY_MENU key release event. It ensures that VKEY_MENU accelerator can only |
| // be activated when handling a VKEY_MENU key release event which is preceded |
| @@ -1354,13 +1350,11 @@ void WidgetGtk::DispatchKeyEventPostIME(const KeyEvent& key) { |
| if (key.key_code() != ui::VKEY_MENU || key.type() != ui::ET_KEY_RELEASED) |
| should_handle_menu_key_release_ = false; |
| - bool handled = false; |
| - |
| // Dispatch the key event to View hierarchy first. |
| - handled = GetRootView()->ProcessKeyEvent(key); |
| + bool handled = Widget::DispatchKeyEventPostIME(key); |
| if (key.key_code() == ui::VKEY_PROCESSKEY || handled) |
|
Ben Goodger (Google)
2011/04/12 21:11:15
See my comment in widget.cc.
Once you make those
msw
2011/04/14 21:47:39
Not so, if I understand suzhe and InputHandlerGtk
|
| - return; |
| + return handled; |
| // Dispatch the key event to native GtkWidget hierarchy. |
| // To prevent GtkWindow from handling the key event as a keybinding, we need |
| @@ -1382,7 +1376,9 @@ void WidgetGtk::DispatchKeyEventPostIME(const KeyEvent& key) { |
| // Dispatch the key event for bindings processing. |
| if (!handled && event && GTK_IS_WINDOW(widget_)) |
| - gtk_bindings_activate_event(GTK_OBJECT(widget_), event); |
| + handled = gtk_bindings_activate_event(GTK_OBJECT(widget_), event); |
| + |
| + return handled; |
| } |
| gboolean WidgetGtk::OnWindowPaint(GtkWidget* widget, GdkEventExpose* event) { |