input_common: Release mouse buttons on out of focus

master
german77 2021-05-02 18:59:02 +07:00
parent c17a59b58e
commit 6e81473574
3 changed files with 18 additions and 1 deletions

@ -143,6 +143,15 @@ void Mouse::ReleaseButton(MouseButton button_) {
mouse_info[button_index].data.axis = {0, 0};
}
void Mouse::ReleaseAllButtons() {
buttons = 0;
for (auto& info : mouse_info) {
info.tilt_speed = 0;
info.data.pressed = false;
info.data.axis = {0, 0};
}
}
void Mouse::BeginConfiguration() {
buttons = 0;
last_button = MouseButton::Undefined;

@ -65,10 +65,16 @@ public:
void MouseMove(int x, int y, int center_x, int center_y);
/**
* Signals that a motion sensor tilt has ended.
* Signals that a button is released.
* @param button_ the button pressed
*/
void ReleaseButton(MouseButton button_);
/**
* Signals that all buttons are released
*/
void ReleaseAllButtons();
[[nodiscard]] bool ToggleButton(std::size_t button_);
[[nodiscard]] bool UnlockButton(std::size_t button_);

@ -539,6 +539,8 @@ bool GRenderWindow::event(QEvent* event) {
void GRenderWindow::focusOutEvent(QFocusEvent* event) {
QWidget::focusOutEvent(event);
input_subsystem->GetKeyboard()->ReleaseAllKeys();
input_subsystem->GetMouse()->ReleaseAllButtons();
this->TouchReleased(0);
}
void GRenderWindow::resizeEvent(QResizeEvent* event) {