diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-20 21:10:51 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-20 21:10:51 +0000 |
commit | e9f575064ea212023b82ec27e36905a066cfc76d (patch) | |
tree | d6f06303ee091acbe74fc31126067c20c2de1d44 /views/focus/accelerator_handler_touch.cc | |
parent | d9b5b3e38455a1ae06c02df6ebeace9dc9b79f42 (diff) | |
download | chromium_src-e9f575064ea212023b82ec27e36905a066cfc76d.zip chromium_src-e9f575064ea212023b82ec27e36905a066cfc76d.tar.gz chromium_src-e9f575064ea212023b82ec27e36905a066cfc76d.tar.bz2 |
touch: Allow grabbing/ungrabbing touch devices for XInput2.
This allows touch devices to be grabbed when events from the mouse/keyboard are
grabbed. This also exposes TouchFactory, which will eventually be used in more
places.
BUG=none
TEST=none
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=71879
Review URL: http://codereview.chromium.org/6300007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72002 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/focus/accelerator_handler_touch.cc')
-rw-r--r-- | views/focus/accelerator_handler_touch.cc | 35 |
1 files changed, 3 insertions, 32 deletions
diff --git a/views/focus/accelerator_handler_touch.cc b/views/focus/accelerator_handler_touch.cc index 84c042d..b24d8f0 100644 --- a/views/focus/accelerator_handler_touch.cc +++ b/views/focus/accelerator_handler_touch.cc @@ -15,41 +15,12 @@ #include "views/accelerator.h" #include "views/event.h" #include "views/focus/focus_manager.h" +#include "views/touchui/touch_factory.h" #include "views/widget/root_view.h" #include "views/widget/widget_gtk.h" namespace views { -#if defined(HAVE_XINPUT2) -// Functions related to determining touch devices. -class TouchFactory { - public: - // Keep a list of touch devices so that it is possible to determine if a - // pointer event is a touch-event or a mouse-event. - static void SetTouchDeviceListInternal( - const std::vector<unsigned int>& devices) { - for (std::vector<unsigned int>::const_iterator iter = devices.begin(); - iter != devices.end(); ++iter) { - DCHECK(*iter < touch_devices.size()); - touch_devices[*iter] = true; - } - } - - // Is the device a touch-device? - static bool IsTouchDevice(unsigned int deviceid) { - return deviceid < touch_devices.size() ? touch_devices[deviceid] : false; - } - - private: - // A quick lookup table for determining if a device is a touch device. - static std::bitset<128> touch_devices; - - DISALLOW_COPY_AND_ASSIGN(TouchFactory); -}; - -std::bitset<128> TouchFactory::touch_devices; -#endif - namespace { RootView* FindRootViewForGdkWindow(GdkWindow* gdk_window) { @@ -78,7 +49,7 @@ bool X2EventIsTouchEvent(XEvent* xev) { case XI_ButtonRelease: case XI_Motion: { // Is the event coming from a touch device? - return TouchFactory::IsTouchDevice( + return TouchFactory::GetInstance()->IsTouchDevice( static_cast<XIDeviceEvent*>(cookie->data)->sourceid); } default: @@ -200,7 +171,7 @@ bool DispatchXEvent(XEvent* xev) { #if defined(HAVE_XINPUT2) void SetTouchDeviceList(std::vector<unsigned int>& devices) { - TouchFactory::SetTouchDeviceListInternal(devices); + TouchFactory::GetInstance()->SetTouchDeviceList(devices); } #endif |