mirror of https://github.com/mgba-emu/mgba.git
Qt: Add mouse events
This commit is contained in:
parent
97f915e617
commit
928896f978
|
@ -88,8 +88,9 @@ void Display::showMessage(const QString& message) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Display::mouseMoveEvent(QMouseEvent*) {
|
void Display::mouseMoveEvent(QMouseEvent* event) {
|
||||||
emit showCursor();
|
emit showCursor();
|
||||||
m_mouseTimer.stop();
|
m_mouseTimer.stop();
|
||||||
m_mouseTimer.start();
|
m_mouseTimer.start();
|
||||||
|
event->ignore();
|
||||||
}
|
}
|
||||||
|
|
|
@ -819,6 +819,20 @@ void GameController::keyReleased(int key) {
|
||||||
updateKeys();
|
updateKeys();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GameController::cursorLocation(int x, int y) {
|
||||||
|
if (!isLoaded()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_threadContext.core->setCursorLocation(m_threadContext.core, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameController::cursorDown(bool down) {
|
||||||
|
if (!isLoaded()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_threadContext.core->setCursorDown(m_threadContext.core, down);
|
||||||
|
}
|
||||||
|
|
||||||
void GameController::clearKeys() {
|
void GameController::clearKeys() {
|
||||||
m_activeKeys = 0;
|
m_activeKeys = 0;
|
||||||
m_inactiveKeys = 0;
|
m_inactiveKeys = 0;
|
||||||
|
|
|
@ -133,6 +133,8 @@ public slots:
|
||||||
void stopRewinding();
|
void stopRewinding();
|
||||||
void keyPressed(int key);
|
void keyPressed(int key);
|
||||||
void keyReleased(int key);
|
void keyReleased(int key);
|
||||||
|
void cursorLocation(int x, int y);
|
||||||
|
void cursorDown(bool);
|
||||||
void clearKeys();
|
void clearKeys();
|
||||||
void setAutofire(int key, bool enable);
|
void setAutofire(int key, bool enable);
|
||||||
void setAudioBufferSamples(int samples);
|
void setAudioBufferSamples(int samples);
|
||||||
|
|
|
@ -684,11 +684,37 @@ void Window::dropEvent(QDropEvent* event) {
|
||||||
m_controller->loadGame(url.toLocalFile());
|
m_controller->loadGame(url.toLocalFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::mouseDoubleClickEvent(QMouseEvent* event) {
|
void Window::mouseMoveEvent(QMouseEvent* event) {
|
||||||
|
QSize dimensions = m_controller->screenDimensions();
|
||||||
|
QSize screenDimensions = m_screenWidget->size();
|
||||||
|
int x = dimensions.width() * event->x() / screenDimensions.width();
|
||||||
|
int y = dimensions.height() * event->y() / screenDimensions.height();
|
||||||
|
m_controller->cursorLocation(x, y);
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Window::mousePressEvent(QMouseEvent* event) {
|
||||||
if (event->button() != Qt::LeftButton) {
|
if (event->button() != Qt::LeftButton) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
toggleFullScreen();
|
QSize dimensions = m_controller->screenDimensions();
|
||||||
|
QSize screenDimensions = m_screenWidget->size();
|
||||||
|
int x = dimensions.width() * event->x() / screenDimensions.width();
|
||||||
|
int y = dimensions.height() * event->y() / screenDimensions.height();
|
||||||
|
m_controller->cursorLocation(x, y);
|
||||||
|
m_controller->cursorDown(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Window::mouseReleaseEvent(QMouseEvent* event) {
|
||||||
|
if (event->button() != Qt::LeftButton) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QSize dimensions = m_controller->screenDimensions();
|
||||||
|
QSize screenDimensions = m_screenWidget->size();
|
||||||
|
int x = dimensions.width() * event->x() / screenDimensions.width();
|
||||||
|
int y = dimensions.height() * event->y() / screenDimensions.height();
|
||||||
|
m_controller->cursorLocation(x, y);
|
||||||
|
m_controller->cursorDown(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::enterFullScreen() {
|
void Window::enterFullScreen() {
|
||||||
|
@ -755,6 +781,7 @@ void Window::gameStarted(mCoreThread* context, const QString& fname) {
|
||||||
resizeFrame(QSize(width, height) * m_savedScale);
|
resizeFrame(QSize(width, height) * m_savedScale);
|
||||||
}
|
}
|
||||||
attachWidget(m_display);
|
attachWidget(m_display);
|
||||||
|
setMouseTracking(true);
|
||||||
|
|
||||||
#ifndef Q_OS_MAC
|
#ifndef Q_OS_MAC
|
||||||
if (isFullScreen()) {
|
if (isFullScreen()) {
|
||||||
|
@ -789,6 +816,7 @@ void Window::gameStopped() {
|
||||||
#endif
|
#endif
|
||||||
m_screenWidget->setMinimumSize(m_display->minimumSize());
|
m_screenWidget->setMinimumSize(m_display->minimumSize());
|
||||||
|
|
||||||
|
setMouseTracking(false);
|
||||||
m_fpsTimer.stop();
|
m_fpsTimer.stop();
|
||||||
m_focusCheck.stop();
|
m_focusCheck.stop();
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,7 +107,9 @@ protected:
|
||||||
virtual void focusOutEvent(QFocusEvent*) override;
|
virtual void focusOutEvent(QFocusEvent*) override;
|
||||||
virtual void dragEnterEvent(QDragEnterEvent*) override;
|
virtual void dragEnterEvent(QDragEnterEvent*) override;
|
||||||
virtual void dropEvent(QDropEvent*) override;
|
virtual void dropEvent(QDropEvent*) override;
|
||||||
virtual void mouseDoubleClickEvent(QMouseEvent*) override;
|
virtual void mouseMoveEvent(QMouseEvent*) override;
|
||||||
|
virtual void mousePressEvent(QMouseEvent*) override;
|
||||||
|
virtual void mouseReleaseEvent(QMouseEvent*) override;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void gameStarted(mCoreThread*, const QString&);
|
void gameStarted(mCoreThread*, const QString&);
|
||||||
|
|
Loading…
Reference in New Issue