mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2025-07-03 08:15:37 +00:00
Enable the right stick to scroll the settings page. Fixes #220
This commit is contained in:
parent
f30c11ddf4
commit
fbaa70a2ae
@ -205,6 +205,31 @@ void SdlGamepadKeyNavigation::onPollingTimerFired()
|
|||||||
sendKey(QEvent::Type::KeyRelease, Qt::Key_Right);
|
sendKey(QEvent::Type::KeyRelease, Qt::Key_Right);
|
||||||
m_LastAxisNavigationEventTime = SDL_GetTicks();
|
m_LastAxisNavigationEventTime = SDL_GetTicks();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// In UI navigation mode (settings page), use the right stick to scroll
|
||||||
|
if (m_UiNavMode) {
|
||||||
|
short rightX = SDL_GameControllerGetAxis(gc, SDL_CONTROLLER_AXIS_RIGHTX);
|
||||||
|
short rightY = SDL_GameControllerGetAxis(gc, SDL_CONTROLLER_AXIS_RIGHTY);
|
||||||
|
|
||||||
|
QPoint wheelDelta;
|
||||||
|
if (rightX > 30000) {
|
||||||
|
wheelDelta.setX(30);
|
||||||
|
}
|
||||||
|
else if (rightX < -30000) {
|
||||||
|
wheelDelta.setX(-30);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rightY > 30000) {
|
||||||
|
wheelDelta.setY(-30);
|
||||||
|
}
|
||||||
|
else if (rightY < -30000) {
|
||||||
|
wheelDelta.setY(30);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!wheelDelta.isNull()) {
|
||||||
|
sendWheel(wheelDelta);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,6 +243,18 @@ void SdlGamepadKeyNavigation::sendKey(QEvent::Type type, Qt::Key key, Qt::Keyboa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SdlGamepadKeyNavigation::sendWheel(QPoint& angleDelta)
|
||||||
|
{
|
||||||
|
QGuiApplication* app = static_cast<QGuiApplication*>(QGuiApplication::instance());
|
||||||
|
QWindow* focusWindow = app->focusWindow();
|
||||||
|
if (focusWindow != nullptr) {
|
||||||
|
QPoint mousePos(focusWindow->width() / 2, focusWindow->height() / 2);
|
||||||
|
QPoint globalPos(focusWindow->mapToGlobal(mousePos));
|
||||||
|
QWheelEvent wheelEvent(mousePos, globalPos, QPoint(), angleDelta, 0, 0, Qt::NoScrollPhase, false, Qt::MouseEventSynthesizedByApplication);
|
||||||
|
app->sendEvent(focusWindow, &wheelEvent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SdlGamepadKeyNavigation::setUiNavMode(bool uiNavMode)
|
void SdlGamepadKeyNavigation::setUiNavMode(bool uiNavMode)
|
||||||
{
|
{
|
||||||
m_UiNavMode = uiNavMode;
|
m_UiNavMode = uiNavMode;
|
||||||
|
@ -24,6 +24,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void sendKey(QEvent::Type type, Qt::Key key, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
|
void sendKey(QEvent::Type type, Qt::Key key, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
|
||||||
|
void sendWheel(QPoint& angleDelta);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onPollingTimerFired();
|
void onPollingTimerFired();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user