X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatview.cpp;h=5e76a336ba0c308e4996855e1a7190f7925fc5b3;hp=075238c1f14f83ebfd7c876c7d1f7d378d2b9c9a;hb=eb1db9563e94831770974fcbdb864d855c73017a;hpb=de2c1a4f9bbae7070cf8fd8247db765a23d28a9c diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index 075238c1..5e76a336 100644 --- a/src/qtui/chatview.cpp +++ b/src/qtui/chatview.cpp @@ -109,10 +109,9 @@ bool ChatView::event(QEvent *event) } } - if (event->type() == QEvent::TouchBegin && _lastTouchStart < QDateTime::currentMSecsSinceEpoch() - 1000) { //(slow) double tab = normal behaviour = select text. 1000 ok? + if (event->type() == QEvent::TouchBegin) { setDragMode(QGraphicsView::ScrollHandDrag); setInteractive(false); - _lastTouchStart = QDateTime::currentMSecsSinceEpoch(); if (verticalScrollBar()->isVisible()) return true; //if scrollbar is not visible we need to request backlog below } @@ -123,9 +122,23 @@ bool ChatView::event(QEvent *event) #endif setDragMode(QGraphicsView::NoDrag); setInteractive(true); + _firstTouchUpdateHappened = false; return true; } + if (event->type() == QEvent::TouchUpdate) { + if (!_firstTouchUpdateHappened) { + QTouchEvent::TouchPoint p = ((QTouchEvent*)event)->touchPoints().at(0); + double dx = abs (p.lastPos().x() - p.pos().x()); + double dy = abs (p.lastPos().y() - p.pos().y()); + if (dx > dy) { + setDragMode(QGraphicsView::NoDrag); + setInteractive(true); + } + _firstTouchUpdateHappened = true; + } + } + if (event->type() == QEvent::Wheel || event->type() == QEvent::TouchBegin || event->type() == QEvent::TouchUpdate) { if (!verticalScrollBar()->isVisible()) { scene()->requestBacklog();