Merge pull request #5990 from german77/mousePanningV2

InputCommon: Mouse fixes
This commit is contained in:
bunnei 2021-03-08 14:50:58 -08:00 committed by GitHub
commit 9c4c9f1e7d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 89 additions and 25 deletions

View file

@ -35,18 +35,36 @@ void EmuWindow_SDL2::OnMouseMotion(s32 x, s32 y) {
input_subsystem->GetMouse()->MouseMove(x, y, 0, 0);
}
MouseInput::MouseButton EmuWindow_SDL2::SDLButtonToMouseButton(u32 button) const {
switch (button) {
case SDL_BUTTON_LEFT:
return MouseInput::MouseButton::Left;
case SDL_BUTTON_RIGHT:
return MouseInput::MouseButton::Right;
case SDL_BUTTON_MIDDLE:
return MouseInput::MouseButton::Wheel;
case SDL_BUTTON_X1:
return MouseInput::MouseButton::Backward;
case SDL_BUTTON_X2:
return MouseInput::MouseButton::Forward;
default:
return MouseInput::MouseButton::Undefined;
}
}
void EmuWindow_SDL2::OnMouseButton(u32 button, u8 state, s32 x, s32 y) {
const auto mouse_button = SDLButtonToMouseButton(button);
if (button == SDL_BUTTON_LEFT) {
if (state == SDL_PRESSED) {
TouchPressed((unsigned)std::max(x, 0), (unsigned)std::max(y, 0), 0);
} else {
TouchReleased(0);
}
} else if (button == SDL_BUTTON_RIGHT) {
} else {
if (state == SDL_PRESSED) {
input_subsystem->GetMouse()->PressButton(x, y, button);
input_subsystem->GetMouse()->PressButton(x, y, mouse_button);
} else {
input_subsystem->GetMouse()->ReleaseButton(button);
input_subsystem->GetMouse()->ReleaseButton(mouse_button);
}
}
}

View file

@ -18,6 +18,10 @@ namespace InputCommon {
class InputSubsystem;
}
namespace MouseInput {
enum class MouseButton;
}
class EmuWindow_SDL2 : public Core::Frontend::EmuWindow {
public:
explicit EmuWindow_SDL2(InputCommon::InputSubsystem* input_subsystem);
@ -42,6 +46,9 @@ protected:
/// Called by WaitEvent when the mouse moves.
void OnMouseMotion(s32 x, s32 y);
/// Converts a SDL mouse button into MouseInput mouse button
MouseInput::MouseButton SDLButtonToMouseButton(u32 button) const;
/// Called by WaitEvent when a mouse button is pressed or released
void OnMouseButton(u32 button, u8 state, s32 x, s32 y);