mirror of
https://github.com/love2d/love.git
synced 2026-08-16 00:02:12 +02:00
Replaced the mouse button constants ("l", "r", "m", etc.) with button numbers. 1 is the primary button, 2 is the secondary button, 3 is middle-mouse, etc. Resolves issue #1019.
This commit is contained in:
@@ -23,7 +23,6 @@
|
||||
#include "filesystem/DroppedFile.h"
|
||||
#include "filesystem/Filesystem.h"
|
||||
#include "keyboard/sdl/Keyboard.h"
|
||||
#include "mouse/Mouse.h"
|
||||
#include "joystick/JoystickModule.h"
|
||||
#include "joystick/sdl/Joystick.h"
|
||||
#include "touch/sdl/Touch.h"
|
||||
@@ -158,7 +157,6 @@ Message *Event::convert(const SDL_Event &e) const
|
||||
|
||||
love::keyboard::Keyboard::Key key = love::keyboard::Keyboard::KEY_UNKNOWN;
|
||||
love::keyboard::Keyboard::Scancode scancode = love::keyboard::Keyboard::SCANCODE_UNKNOWN;
|
||||
love::mouse::Mouse::Button button;
|
||||
|
||||
const char *txt;
|
||||
const char *txt2;
|
||||
@@ -245,14 +243,26 @@ Message *Event::convert(const SDL_Event &e) const
|
||||
break;
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
case SDL_MOUSEBUTTONUP:
|
||||
if (buttons.find(e.button.button, button) && mouse::Mouse::getConstant(button, txt))
|
||||
{
|
||||
// SDL uses button index 3 for the right mouse button, but we use
|
||||
// index 2.
|
||||
int button = e.button.button;
|
||||
switch (button)
|
||||
{
|
||||
case SDL_BUTTON_RIGHT:
|
||||
button = 2;
|
||||
break;
|
||||
case SDL_BUTTON_MIDDLE:
|
||||
button = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
double x = (double) e.button.x;
|
||||
double y = (double) e.button.y;
|
||||
windowToPixelCoords(&x, &y);
|
||||
vargs.push_back(new Variant(x));
|
||||
vargs.push_back(new Variant(y));
|
||||
vargs.push_back(new Variant(txt, strlen(txt)));
|
||||
vargs.push_back(new Variant((double) button));
|
||||
vargs.push_back(new Variant(e.button.which == SDL_TOUCH_MOUSEID));
|
||||
msg = new Message((e.type == SDL_MOUSEBUTTONDOWN) ?
|
||||
"mousepressed" : "mousereleased",
|
||||
@@ -798,20 +808,6 @@ std::map<SDL_Keycode, love::keyboard::Keyboard::Key> Event::createKeyMap()
|
||||
|
||||
std::map<SDL_Keycode, love::keyboard::Keyboard::Key> Event::keys = Event::createKeyMap();
|
||||
|
||||
EnumMap<love::mouse::Mouse::Button, Uint8, love::mouse::Mouse::BUTTON_MAX_ENUM>::Entry Event::buttonEntries[] =
|
||||
{
|
||||
{love::mouse::Mouse::BUTTON_LEFT, SDL_BUTTON_LEFT},
|
||||
{love::mouse::Mouse::BUTTON_MIDDLE, SDL_BUTTON_MIDDLE},
|
||||
{love::mouse::Mouse::BUTTON_RIGHT, SDL_BUTTON_RIGHT},
|
||||
{love::mouse::Mouse::BUTTON_X1, SDL_BUTTON_X1},
|
||||
{love::mouse::Mouse::BUTTON_X2, SDL_BUTTON_X2+0},
|
||||
{love::mouse::Mouse::BUTTON_X3, SDL_BUTTON_X2+1},
|
||||
{love::mouse::Mouse::BUTTON_X4, SDL_BUTTON_X2+2},
|
||||
{love::mouse::Mouse::BUTTON_X5, SDL_BUTTON_X2+3},
|
||||
};
|
||||
|
||||
EnumMap<love::mouse::Mouse::Button, Uint8, love::mouse::Mouse::BUTTON_MAX_ENUM> Event::buttons(Event::buttonEntries, sizeof(Event::buttonEntries));
|
||||
|
||||
} // sdl
|
||||
} // event
|
||||
} // love
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
// LOVE
|
||||
#include "event/Event.h"
|
||||
#include "common/runtime.h"
|
||||
#include "common/EnumMap.h"
|
||||
|
||||
// SDL
|
||||
#include <SDL_events.h>
|
||||
@@ -77,9 +76,6 @@ private:
|
||||
static std::map<SDL_Keycode, love::keyboard::Keyboard::Key> createKeyMap();
|
||||
static std::map<SDL_Keycode, love::keyboard::Keyboard::Key> keys;
|
||||
|
||||
static EnumMap<love::mouse::Mouse::Button, Uint8, love::mouse::Mouse::BUTTON_MAX_ENUM>::Entry buttonEntries[];
|
||||
static EnumMap<love::mouse::Mouse::Button, Uint8, love::mouse::Mouse::BUTTON_MAX_ENUM> buttons;
|
||||
|
||||
}; // Event
|
||||
|
||||
} // sdl
|
||||
|
||||
Reference in New Issue
Block a user