mirror of https://github.com/mgba-emu/mgba.git
Qt: Update SensorView to work with focus stealing
This commit is contained in:
parent
05a956cacd
commit
ba1fb17dde
|
@ -61,6 +61,7 @@ SensorView::SensorView(GameController* controller, InputController* input, QWidg
|
||||||
connect(m_ui.gyroSensitivity, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), [this](double value) {
|
connect(m_ui.gyroSensitivity, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), [this](double value) {
|
||||||
m_input->setGyroSensitivity(value * 1e8f);
|
m_input->setGyroSensitivity(value * 1e8f);
|
||||||
});
|
});
|
||||||
|
m_input->stealFocus(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SensorView::jiggerer(QAbstractButton* button, void (InputController::*setter)(int)) {
|
void SensorView::jiggerer(QAbstractButton* button, void (InputController::*setter)(int)) {
|
||||||
|
@ -68,15 +69,26 @@ void SensorView::jiggerer(QAbstractButton* button, void (InputController::*sette
|
||||||
if (!checked) {
|
if (!checked) {
|
||||||
m_jiggered = nullptr;
|
m_jiggered = nullptr;
|
||||||
} else {
|
} else {
|
||||||
|
button->setFocus();
|
||||||
m_jiggered = [this, button, setter](int axis) {
|
m_jiggered = [this, button, setter](int axis) {
|
||||||
(m_input->*setter)(axis);
|
(m_input->*setter)(axis);
|
||||||
button->setChecked(false);
|
button->setChecked(false);
|
||||||
|
button->clearFocus();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
button->installEventFilter(this);
|
button->installEventFilter(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SensorView::event(QEvent* event) {
|
||||||
|
if (event->type() == QEvent::WindowActivate) {
|
||||||
|
m_input->stealFocus(this);
|
||||||
|
} else if (event->type() == QEvent::WindowDeactivate) {
|
||||||
|
m_input->releaseFocus(this);
|
||||||
|
}
|
||||||
|
return QWidget::event(event);
|
||||||
|
}
|
||||||
|
|
||||||
bool SensorView::eventFilter(QObject*, QEvent* event) {
|
bool SensorView::eventFilter(QObject*, QEvent* event) {
|
||||||
if (event->type() == GamepadAxisEvent::Type()) {
|
if (event->type() == GamepadAxisEvent::Type()) {
|
||||||
GamepadAxisEvent* gae = static_cast<GamepadAxisEvent*>(event);
|
GamepadAxisEvent* gae = static_cast<GamepadAxisEvent*>(event);
|
||||||
|
|
|
@ -30,6 +30,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool eventFilter(QObject*, QEvent* event) override;
|
bool eventFilter(QObject*, QEvent* event) override;
|
||||||
|
bool event(QEvent* event);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void updateSensors();
|
void updateSensors();
|
||||||
|
|
Loading…
Reference in New Issue