mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-08-03 15:27:13 -04:00
Don't reset an unbound input action to its default binding if the key/mouse button for that default binding is already used by another action (Fixes #1960)
This commit is contained in:
parent
46adf6344a
commit
f9b6cc468d
@ -936,9 +936,11 @@ namespace MWInput
|
||||
{
|
||||
clearAllBindings (control);
|
||||
|
||||
if (defaultKeyBindings.find(i) != defaultKeyBindings.end())
|
||||
if (defaultKeyBindings.find(i) != defaultKeyBindings.end()
|
||||
&& !mInputBinder->isKeyBound(defaultKeyBindings[i]))
|
||||
mInputBinder->addKeyBinding(control, defaultKeyBindings[i], ICS::Control::INCREASE);
|
||||
else if (defaultMouseButtonBindings.find(i) != defaultMouseButtonBindings.end())
|
||||
else if (defaultMouseButtonBindings.find(i) != defaultMouseButtonBindings.end()
|
||||
&& !mInputBinder->isMouseButtonBound(defaultMouseButtonBindings[i]))
|
||||
mInputBinder->addMouseButtonBinding (control, defaultMouseButtonBindings[i], ICS::Control::INCREASE);
|
||||
}
|
||||
}
|
||||
|
4
extern/oics/ICSInputControlSystem.h
vendored
4
extern/oics/ICSInputControlSystem.h
vendored
@ -119,9 +119,11 @@ namespace ICS
|
||||
//bool sliderMoved(const OIS::JoyStickEvent &evt, int index);
|
||||
|
||||
void addKeyBinding(Control* control, SDL_Scancode key, Control::ControlChangingDirection direction);
|
||||
bool isKeyBound(SDL_Scancode key) const;
|
||||
void addMouseAxisBinding(Control* control, NamedAxis axis, Control::ControlChangingDirection direction);
|
||||
void addMouseButtonBinding(Control* control, unsigned int button, Control::ControlChangingDirection direction);
|
||||
void addJoystickAxisBinding(Control* control, int deviceId, int axis, Control::ControlChangingDirection direction);
|
||||
bool isMouseButtonBound(unsigned int button) const;
|
||||
void addJoystickAxisBinding(Control* control, int deviceId, int axis, Control::ControlChangingDirection direction);
|
||||
void addJoystickButtonBinding(Control* control, int deviceId, unsigned int button, Control::ControlChangingDirection direction);
|
||||
void addJoystickPOVBinding(Control* control, int deviceId, int index, POVAxis axis, Control::ControlChangingDirection direction);
|
||||
void addJoystickSliderBinding(Control* control, int deviceId, int index, Control::ControlChangingDirection direction);
|
||||
|
@ -61,6 +61,11 @@ namespace ICS
|
||||
mControlsKeyBinderMap[ key ] = controlKeyBinderItem;
|
||||
}
|
||||
|
||||
bool InputControlSystem::isKeyBound(SDL_Scancode key) const
|
||||
{
|
||||
return mControlsKeyBinderMap.find(key) != mControlsKeyBinderMap.end();
|
||||
}
|
||||
|
||||
void InputControlSystem::removeKeyBinding(SDL_Scancode key)
|
||||
{
|
||||
ControlsKeyBinderMapType::iterator it = mControlsKeyBinderMap.find(key);
|
||||
|
5
extern/oics/ICSInputControlSystem_mouse.cpp
vendored
5
extern/oics/ICSInputControlSystem_mouse.cpp
vendored
@ -139,6 +139,11 @@ namespace ICS
|
||||
mControlsMouseButtonBinderMap[ button ] = controlMouseButtonBinderItem;
|
||||
}
|
||||
|
||||
bool InputControlSystem::isMouseButtonBound(unsigned int button) const
|
||||
{
|
||||
return mControlsMouseButtonBinderMap.find(button) != mControlsMouseButtonBinderMap.end();
|
||||
}
|
||||
|
||||
// get bindings
|
||||
InputControlSystem::NamedAxis InputControlSystem::getMouseAxisBinding(Control* control, ICS::Control::ControlChangingDirection direction)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user