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) {
|
||||
m_input->setGyroSensitivity(value * 1e8f);
|
||||
});
|
||||
m_input->stealFocus(this);
|
||||
}
|
||||
|
||||
void SensorView::jiggerer(QAbstractButton* button, void (InputController::*setter)(int)) {
|
||||
|
@ -68,15 +69,26 @@ void SensorView::jiggerer(QAbstractButton* button, void (InputController::*sette
|
|||
if (!checked) {
|
||||
m_jiggered = nullptr;
|
||||
} else {
|
||||
button->setFocus();
|
||||
m_jiggered = [this, button, setter](int axis) {
|
||||
(m_input->*setter)(axis);
|
||||
button->setChecked(false);
|
||||
button->clearFocus();
|
||||
};
|
||||
}
|
||||
});
|
||||
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) {
|
||||
if (event->type() == GamepadAxisEvent::Type()) {
|
||||
GamepadAxisEvent* gae = static_cast<GamepadAxisEvent*>(event);
|
||||
|
|
|
@ -30,6 +30,7 @@ public:
|
|||
|
||||
protected:
|
||||
bool eventFilter(QObject*, QEvent* event) override;
|
||||
bool event(QEvent* event);
|
||||
|
||||
private slots:
|
||||
void updateSensors();
|
||||
|
|
Loading…
Reference in New Issue