handle keypresses (but don't steal them)
is the last thing that was missing from kineticscrolling svn path=/trunk/KDE/kdelibs/; revision=1124609
This commit is contained in:
parent
5ddac55dcc
commit
20d58299b2
@ -26,6 +26,7 @@
|
||||
#include <QGraphicsGridLayout>
|
||||
#include <QGraphicsScene>
|
||||
#include <QApplication>
|
||||
#include <QKeyEvent>
|
||||
#include <QWidget>
|
||||
#include <QTimer>
|
||||
#include <QTime>
|
||||
@ -579,6 +580,51 @@ public:
|
||||
return widget.data()->y();
|
||||
}
|
||||
|
||||
void handleKeyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
if (!widget.data())
|
||||
return;
|
||||
|
||||
QPointF start = q->scrollPosition();
|
||||
QPointF end = start;
|
||||
|
||||
qreal step = 100;
|
||||
|
||||
switch (event->key()) {
|
||||
case Qt::Key_Left:
|
||||
if (canXFlick()) {
|
||||
end += QPointF(-step, 0);
|
||||
}
|
||||
break;
|
||||
case Qt::Key_Right:
|
||||
if (canXFlick()) {
|
||||
end += QPointF(step, 0);
|
||||
}
|
||||
break;
|
||||
case Qt::Key_Up:
|
||||
if (canYFlick()) {
|
||||
end += QPointF(0, -step);
|
||||
}
|
||||
break;
|
||||
case Qt::Key_Down:
|
||||
if (canYFlick()) {
|
||||
end += QPointF(0, step);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
fixupAnimation.groupX->stop();
|
||||
fixupAnimation.groupY->stop();
|
||||
fixupAnimation.snapX->stop();
|
||||
fixupAnimation.snapY->stop();
|
||||
directMoveAnimation->setStartValue(start);
|
||||
directMoveAnimation->setEndValue(end);
|
||||
directMoveAnimation->setDuration(200);
|
||||
directMoveAnimation->start();
|
||||
}
|
||||
|
||||
void handleMousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
lastPos = QPoint();
|
||||
@ -1257,6 +1303,11 @@ void ScrollWidget::resizeEvent(QGraphicsSceneResizeEvent *event)
|
||||
QGraphicsWidget::resizeEvent(event);
|
||||
}
|
||||
|
||||
void ScrollWidget::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
d->handleKeyPressEvent(event);
|
||||
}
|
||||
|
||||
void ScrollWidget::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
if (!d->widget) {
|
||||
|
@ -255,6 +255,7 @@ protected:
|
||||
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
|
||||
void mousePressEvent(QGraphicsSceneMouseEvent *event);
|
||||
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
|
||||
void keyPressEvent(QKeyEvent *event);
|
||||
void wheelEvent(QGraphicsSceneWheelEvent *event);
|
||||
bool eventFilter(QObject *watched, QEvent *event);
|
||||
void focusInEvent(QFocusEvent *event);
|
||||
|
Loading…
Reference in New Issue
Block a user