Make sure that at least one backspace action is triggered when backspace key was used on screen keyboard.
This makes it working for gamepads.
This commit is contained in:
parent
e585c26833
commit
2a4c5ad557
@ -83,6 +83,7 @@ ScreenKeyboard::ScreenKeyboard(float percent_width, float percent_height,
|
||||
m_edit_box = edit_box;
|
||||
m_back_button = NULL;
|
||||
m_repeat_time = 0;
|
||||
m_back_button_pressed = false;
|
||||
|
||||
init();
|
||||
} // ScreenKeyboard
|
||||
@ -264,7 +265,7 @@ void ScreenKeyboard::assignButtons(ButtonsType buttons_type)
|
||||
|
||||
void ScreenKeyboard::onUpdate(float dt)
|
||||
{
|
||||
if (m_back_button->isPressed())
|
||||
if (m_back_button->isPressed() || m_back_button_pressed)
|
||||
{
|
||||
const unsigned int repeat_rate = 40;
|
||||
const unsigned int repeat_delay = 400;
|
||||
@ -290,8 +291,10 @@ void ScreenKeyboard::onUpdate(float dt)
|
||||
|
||||
m_repeat_time += (unsigned int)(dt * 1000);
|
||||
}
|
||||
else
|
||||
|
||||
if (!m_back_button->isPressed())
|
||||
{
|
||||
m_back_button_pressed = false;
|
||||
m_repeat_time = 0;
|
||||
}
|
||||
}
|
||||
@ -348,6 +351,7 @@ EventPropagation ScreenKeyboard::processEvent(const std::string& eventSource)
|
||||
else if (eventSource == "Back")
|
||||
{
|
||||
send_event = false;
|
||||
m_back_button_pressed = true;
|
||||
}
|
||||
else if (eventSource == "Space")
|
||||
{
|
||||
|
@ -71,6 +71,9 @@ namespace GUIEngine
|
||||
/** A time for repeat key feature */
|
||||
unsigned int m_repeat_time;
|
||||
|
||||
/** True if backspace button was pressed */
|
||||
bool m_back_button_pressed;
|
||||
|
||||
/** The edit box that is assigned to the keyboard */
|
||||
CGUIEditBox* m_edit_box;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user