From ffaf7a10e877b8196e2d8cec500c9e024e19c20d Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 1 Feb 2017 14:44:14 -0800 Subject: [PATCH] tablet-ui: Added 6 pixel deadspot for bringing up the tablet in desktop mode. --- .../src/input-plugins/KeyboardMouseDevice.cpp | 14 ++++++++++++-- .../src/input-plugins/KeyboardMouseDevice.h | 2 ++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp index 39371cc3e3..3308ba36ab 100755 --- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp +++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp @@ -73,6 +73,9 @@ void KeyboardMouseDevice::mousePressEvent(QMouseEvent* event) { _mousePressTime = usecTimestampNow(); _mouseMoved = false; + _mousePressPos = event->pos(); + _clickDeadspotActive = true; + eraseMouseClicked(); } @@ -84,9 +87,11 @@ void KeyboardMouseDevice::mouseReleaseEvent(QMouseEvent* event) { // input for this button we might want to add some small tolerance to this so if you do a small drag it // still counts as a click. static const int CLICK_TIME = USECS_PER_MSEC * 500; // 500 ms to click - if (!_mouseMoved && (usecTimestampNow() - _mousePressTime < CLICK_TIME)) { + if (_clickDeadspotActive && (usecTimestampNow() - _mousePressTime < CLICK_TIME)) { _inputDevice->_buttonPressedMap.insert(_inputDevice->makeInput((Qt::MouseButton) event->button(), true).getChannel()); } + + _clickDeadspotActive = false; } void KeyboardMouseDevice::eraseMouseClicked() { @@ -109,9 +114,14 @@ void KeyboardMouseDevice::mouseMoveEvent(QMouseEvent* event) { // outside of the application window, because we don't get MouseEvents when the cursor is outside // of the application window. _lastCursor = currentPos; + _mouseMoved = true; - eraseMouseClicked(); + const int CLICK_EVENT_DEADSPOT = 6; // pixels + if (_clickDeadspotActive && (_mousePressPos - currentPos).manhattanLength() > CLICK_EVENT_DEADSPOT) { + eraseMouseClicked(); + _clickDeadspotActive = false; + } } void KeyboardMouseDevice::wheelEvent(QWheelEvent* event) { diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h index 399ca4e93d..f38b43c107 100644 --- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h +++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h @@ -118,8 +118,10 @@ public: protected: QPoint _lastCursor; + QPoint _mousePressPos; quint64 _mousePressTime; bool _mouseMoved; + bool _clickDeadspotActive; glm::vec2 _lastTouch; std::shared_ptr _inputDevice { std::make_shared() };