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. |
} |