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 917ded3fd1ad55ee9943a8538bbb3ff2afcb25e8..5c9162a7cae8ba80e26ae33a4aaecc87adef9983 100644 |
--- a/views/controls/menu/menu_host_gtk.cc |
+++ b/views/controls/menu/menu_host_gtk.cc |
@@ -5,11 +5,18 @@ |
#include "views/controls/menu/menu_host_gtk.h" |
#include <gdk/gdk.h> |
+#if defined(HAVE_XINPUT2) |
sky
2011/01/19 19:34:54
newline between 7 and 8
sadrul
2011/01/19 20:10:17
Done.
|
+#include <gdk/gdkx.h> |
+#include <X11/extensions/XInput2.h> |
+#endif |
#include "views/controls/menu/menu_controller.h" |
#include "views/controls/menu/menu_host_root_view.h" |
#include "views/controls/menu/menu_item_view.h" |
#include "views/controls/menu/submenu_view.h" |
+#if defined(HAVE_XINPUT2) |
sky
2011/01/19 19:34:54
newline between 16 and 17.
sadrul
2011/01/19 20:10:17
Done.
|
+#include "views/touchui/touch_factory.h" |
+#endif |
namespace views { |
@@ -104,6 +111,10 @@ void MenuHostGtk::ReleaseGrab() { |
did_input_grab_ = false; |
gdk_pointer_ungrab(GDK_CURRENT_TIME); |
gdk_keyboard_ungrab(GDK_CURRENT_TIME); |
+#if defined(HAVE_XINPUT2) |
+ TouchFactory::GetInstance()->UngrabTouchDevices( |
+ GDK_WINDOW_XDISPLAY(window_contents()->window)); |
+#endif |
} |
} |
@@ -151,6 +162,14 @@ void MenuHostGtk::DoCapture() { |
did_input_grab_ = pointer_grab_status == GDK_GRAB_SUCCESS && |
keyboard_grab_status == GDK_GRAB_SUCCESS; |
+ |
+#if defined(HAVE_XINPUT2) |
+ ::Window window = GDK_WINDOW_XID(window_contents()->window); |
+ Display* display = GDK_WINDOW_XDISPLAY(window_contents()->window); |
+ bool xi2grab = TouchFactory::GetInstance()->GrabTouchDevices(display, window); |
+ did_input_grab_ = did_input_grab_ && xi2grab; |
+#endif |
+ |
DCHECK(did_input_grab_); |
// need keyboard grab. |
} |