added support of right and middle mouse button and also wheel mouse while I was at it.

This commit is contained in:
Xawotihs
2010-09-28 20:00:31 +00:00
parent b79c7eea53
commit 2881543b78
+73 -17
View File
@@ -37,6 +37,8 @@ protected:
void mouseReleaseEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event);
void wheelEvent(QWheelEvent *event);
protected: protected:
QPoint lastPos; QPoint lastPos;
@@ -223,41 +225,95 @@ void JGEQtRenderer::timerEvent( QTimerEvent* )
void JGEQtRenderer::mousePressEvent(QMouseEvent *event) void JGEQtRenderer::mousePressEvent(QMouseEvent *event)
{ {
lastPos = event->pos(); if(event->button() == Qt::LeftButton)
QGLWidget::mousePressEvent(event); {
lastPos = event->pos();
event->accept();
}
else
{
QGLWidget::mousePressEvent(event);
}
} }
void JGEQtRenderer::mouseReleaseEvent(QMouseEvent *event) void JGEQtRenderer::mouseReleaseEvent(QMouseEvent *event)
{ {
QPoint currentPos = event->pos(); if(event->button() == Qt::LeftButton)
int dx = currentPos.x() - lastPos.x(); {
int dy = currentPos.y() - lastPos.y(); QPoint currentPos = event->pos();
int dx = currentPos.x() - lastPos.x();
int dy = currentPos.y() - lastPos.y();
if(abs(dx) > abs(dy) && dx > 5) if(abs(dx) > abs(dy) && dx > 5)
{ {
g_engine->HoldKey_NoRepeat(JGE_BTN_RIGHT); g_engine->HoldKey_NoRepeat(JGE_BTN_RIGHT);
}
else if(abs(dx) > abs(dy) && dx < -5)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_LEFT);
}
else if(abs(dx) < abs(dy) && dy < -5)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_UP);
}
else if(abs(dx) < abs(dy) && dy > 5)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_DOWN);
}
event->accept();
} }
else if(abs(dx) > abs(dy) && dx < -5) else if(event->button() == Qt::RightButton)
{ {
g_engine->HoldKey_NoRepeat(JGE_BTN_LEFT); g_engine->HoldKey_NoRepeat(JGE_BTN_PREV);
event->accept();
} }
else if(abs(dx) < abs(dy) && dy < -5) else if(event->button() == Qt::MidButton)
{ {
g_engine->HoldKey_NoRepeat(JGE_BTN_UP); g_engine->HoldKey_NoRepeat(JGE_BTN_SEC);
event->accept();
} }
else if(abs(dx) < abs(dy) && dy > 5) else
{ {
g_engine->HoldKey_NoRepeat(JGE_BTN_DOWN); QGLWidget::mouseReleaseEvent(event);
} }
QGLWidget::mouseReleaseEvent(event);
} }
void JGEQtRenderer::mouseDoubleClickEvent(QMouseEvent *event) void JGEQtRenderer::mouseDoubleClickEvent(QMouseEvent *event)
{ {
if(event->button() == Qt::LeftButton)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_OK);
event->accept();
}
else
{
QGLWidget::mouseDoubleClickEvent(event);
}
}
g_engine->HoldKey_NoRepeat(JGE_BTN_OK);
void JGEQtRenderer::wheelEvent(QWheelEvent *event)
{
if(event->orientation() == Qt::Vertical)
{
if(event->delta() > 0)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_UP);
}
else
{
g_engine->HoldKey_NoRepeat(JGE_BTN_DOWN);
}
}
else if(event->orientation() == Qt::Horizontal)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_LEFT);
}
else
{
g_engine->HoldKey_NoRepeat(JGE_BTN_RIGHT);
}
event->accept(); event->accept();
} }