Merge pull request #10734 from vladest/fix_tablet_buttons_qt59

Fix tablet buttons qt59
This commit is contained in:
Seth Alves 2017-06-18 13:48:27 -07:00 committed by GitHub
commit ec1187991d
3 changed files with 18 additions and 9 deletions

View file

@ -955,7 +955,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
// Make sure we don't time out during slow operations at startup // Make sure we don't time out during slow operations at startup
updateHeartbeat(); updateHeartbeat();
connect(this, SIGNAL(aboutToQuit()), this, SLOT(aboutToQuit())); connect(this, SIGNAL(aboutToQuit()), this, SLOT(onAboutToQuit()));
// hook up bandwidth estimator // hook up bandwidth estimator
QSharedPointer<BandwidthRecorder> bandwidthRecorder = DependencyManager::get<BandwidthRecorder>(); QSharedPointer<BandwidthRecorder> bandwidthRecorder = DependencyManager::get<BandwidthRecorder>();
@ -1449,7 +1449,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
}); });
sendStatsTimer->start(); sendStatsTimer->start();
// Periodically check for count of nearby avatars // Periodically check for count of nearby avatars
static int lastCountOfNearbyAvatars = -1; static int lastCountOfNearbyAvatars = -1;
QTimer* checkNearbyAvatarsTimer = new QTimer(this); QTimer* checkNearbyAvatarsTimer = new QTimer(this);
@ -1644,7 +1643,7 @@ void Application::updateHeartbeat() const {
static_cast<DeadlockWatchdogThread*>(_deadlockWatchdogThread)->updateHeartbeat(); static_cast<DeadlockWatchdogThread*>(_deadlockWatchdogThread)->updateHeartbeat();
} }
void Application::aboutToQuit() { void Application::onAboutToQuit() {
emit beforeAboutToQuit(); emit beforeAboutToQuit();
foreach(auto inputPlugin, PluginManager::getInstance()->getInputPlugins()) { foreach(auto inputPlugin, PluginManager::getInstance()->getInputPlugins()) {

View file

@ -399,7 +399,7 @@ private slots:
void showDesktop(); void showDesktop();
void clearDomainOctreeDetails(); void clearDomainOctreeDetails();
void clearDomainAvatars(); void clearDomainAvatars();
void aboutToQuit(); void onAboutToQuit();
void resettingDomain(); void resettingDomain();

View file

@ -440,17 +440,27 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) {
touchEvent->setTouchPoints(touchPoints); touchEvent->setTouchPoints(touchPoints);
touchEvent->setTouchPointStates(touchPointState); touchEvent->setTouchPointStates(touchPointState);
// Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover.
// FIXME: Scroll bar dragging is a bit unstable in the tablet (content can jump up and down at times).
// This may be improved in Qt 5.8. Release notes: "Cleaned up touch and mouse event delivery".
//
// In Qt 5.9 mouse events must be sent before touch events to make sure some QtQuick components will
// receive mouse events
#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
if (!(this->_pressed && event.getType() == PointerEvent::Move)) {
QMouseEvent* mouseEvent = new QMouseEvent(mouseType, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier);
QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent);
}
#endif
QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent); QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent);
if (this->_pressed && event.getType() == PointerEvent::Move) { #if QT_VERSION < QT_VERSION_CHECK(5, 9, 0)
if (this->_pressed && event.getType() == PointerEvent::Move) {
return; return;
} }
// Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover.
// FIXME: Scroll bar dragging is a bit unstable in the tablet (content can jump up and down at times).
// This may be improved in Qt 5.8. Release notes: "Cleaned up touch and mouse event delivery".
QMouseEvent* mouseEvent = new QMouseEvent(mouseType, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); QMouseEvent* mouseEvent = new QMouseEvent(mouseType, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier);
QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent); QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent);
#endif
} }
void Web3DOverlay::handlePointerEventAsMouse(const PointerEvent& event) { void Web3DOverlay::handlePointerEventAsMouse(const PointerEvent& event) {