Chromium Code Reviews| Index: views/controls/menu/menu_host_gtk.cc |
| diff --git a/views/controls/menu/menu_host_gtk.cc b/views/controls/menu/menu_host_gtk.cc |
| index 9615e549b9ba991ca02c52cc8aa06e466354a01d..653f66c6c01e8964e97b565f5593e1ec8d3acf42 100644 |
| --- a/views/controls/menu/menu_host_gtk.cc |
| +++ b/views/controls/menu/menu_host_gtk.cc |
| @@ -162,6 +162,13 @@ void MenuHostGtk::DoCapture() { |
| GdkGrabStatus keyboard_grab_status = |
| gdk_keyboard_grab(window_contents()->window, FALSE, |
| GDK_CURRENT_TIME); |
| + if (pointer_grab_status == GDK_GRAB_NOT_VIEWABLE) { |
|
zel
2011/03/15 18:39:45
does this file belong in this CL? does not seem re
|
| + DCHECK_EQ(GDK_GRAB_NOT_VIEWABLE, keyboard_grab_status); |
| + GtkWidget* current_grab_window = gtk_grab_get_current(); |
| + if (current_grab_window) |
| + gtk_grab_remove(current_grab_window); |
| + return; |
| + } |
| did_input_grab_ = pointer_grab_status == GDK_GRAB_SUCCESS && |
| keyboard_grab_status == GDK_GRAB_SUCCESS; |
| @@ -173,7 +180,8 @@ void MenuHostGtk::DoCapture() { |
| did_input_grab_ = did_input_grab_ && xi2grab; |
| #endif |
| - DCHECK(did_input_grab_); |
| + DCHECK_EQ(GDK_GRAB_SUCCESS, pointer_grab_status); |
| + DCHECK_EQ(GDK_GRAB_SUCCESS, keyboard_grab_status); |
| // need keyboard grab. |
| } |