Fix for opening screen keyboard with gamepad on login screen
This commit is contained in:
parent
571d3d3ba0
commit
be137155af
@ -27,6 +27,10 @@
|
|||||||
#include "states_screens/state_manager.hpp"
|
#include "states_screens/state_manager.hpp"
|
||||||
#include "utils/log.hpp"
|
#include "utils/log.hpp"
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
#include "../../../lib/irrlicht/source/Irrlicht/CIrrDeviceAndroid.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
@ -407,3 +411,21 @@ bool ScreenKeyboard::onEscapePressed()
|
|||||||
} // onEscapePressed
|
} // onEscapePressed
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
/** A function that determines if screen keyboard should be activated
|
||||||
|
*/
|
||||||
|
bool ScreenKeyboard::shouldUseScreenKeyboard()
|
||||||
|
{
|
||||||
|
bool use_screen_keyboard = UserConfigParams::m_screen_keyboard > 1;
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
if (UserConfigParams::m_screen_keyboard == 1)
|
||||||
|
{
|
||||||
|
int32_t keyboard = AConfiguration_getKeyboard(
|
||||||
|
global_android_app->config);
|
||||||
|
|
||||||
|
use_screen_keyboard = (keyboard != ACONFIGURATION_KEYBOARD_QWERTY);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return use_screen_keyboard;
|
||||||
|
}
|
@ -118,6 +118,8 @@ namespace GUIEngine
|
|||||||
/** Returns true if keyboard is created */
|
/** Returns true if keyboard is created */
|
||||||
static bool isActive() {return m_screen_keyboard != NULL;}
|
static bool isActive() {return m_screen_keyboard != NULL;}
|
||||||
|
|
||||||
|
static bool shouldUseScreenKeyboard();
|
||||||
|
|
||||||
/** Override to be notified of updates */
|
/** Override to be notified of updates */
|
||||||
virtual void onUpdate(float dt);
|
virtual void onUpdate(float dt);
|
||||||
|
|
||||||
|
@ -1291,7 +1291,7 @@ bool CGUIEditBox::processMouse(const SEvent& event)
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (shouldUseScreenKeyboard())
|
else if (GUIEngine::ScreenKeyboard::shouldUseScreenKeyboard())
|
||||||
{
|
{
|
||||||
openScreenKeyboard();
|
openScreenKeyboard();
|
||||||
return true;
|
return true;
|
||||||
@ -1754,24 +1754,6 @@ void CGUIEditBox::deserializeAttributes(io::IAttributes* in, io::SAttributeReadW
|
|||||||
// setOverrideFont(in->getAttributeAsFont("OverrideFont"));
|
// setOverrideFont(in->getAttributeAsFont("OverrideFont"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool CGUIEditBox::shouldUseScreenKeyboard()
|
|
||||||
{
|
|
||||||
bool use_screen_keyboard = UserConfigParams::m_screen_keyboard > 1;
|
|
||||||
|
|
||||||
#ifdef ANDROID
|
|
||||||
if (UserConfigParams::m_screen_keyboard == 1)
|
|
||||||
{
|
|
||||||
int32_t keyboard = AConfiguration_getKeyboard(
|
|
||||||
global_android_app->config);
|
|
||||||
|
|
||||||
use_screen_keyboard = (keyboard != ACONFIGURATION_KEYBOARD_QWERTY);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return use_screen_keyboard;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CGUIEditBox::openScreenKeyboard()
|
void CGUIEditBox::openScreenKeyboard()
|
||||||
{
|
{
|
||||||
if (GUIEngine::ScreenKeyboard::getCurrent() != NULL)
|
if (GUIEngine::ScreenKeyboard::getCurrent() != NULL)
|
||||||
|
@ -119,7 +119,6 @@ using namespace gui;
|
|||||||
virtual irr::gui::IGUIFont* getActiveFont() const { return NULL; }
|
virtual irr::gui::IGUIFont* getActiveFont() const { return NULL; }
|
||||||
virtual void setDrawBackground(bool) { }
|
virtual void setDrawBackground(bool) { }
|
||||||
|
|
||||||
bool shouldUseScreenKeyboard();
|
|
||||||
void openScreenKeyboard();
|
void openScreenKeyboard();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -200,7 +200,7 @@ void TextBoxWidget::setActive(bool active)
|
|||||||
|
|
||||||
EventPropagation TextBoxWidget::onActivationInput(const int playerID)
|
EventPropagation TextBoxWidget::onActivationInput(const int playerID)
|
||||||
{
|
{
|
||||||
if (((MyCGUIEditBox*)m_element)->shouldUseScreenKeyboard())
|
if (GUIEngine::ScreenKeyboard::shouldUseScreenKeyboard())
|
||||||
{
|
{
|
||||||
((MyCGUIEditBox*)m_element)->openScreenKeyboard();
|
((MyCGUIEditBox*)m_element)->openScreenKeyboard();
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "challenges/unlock_manager.hpp"
|
#include "challenges/unlock_manager.hpp"
|
||||||
#include "config/player_manager.hpp"
|
#include "config/player_manager.hpp"
|
||||||
#include "config/user_config.hpp"
|
#include "config/user_config.hpp"
|
||||||
|
#include "guiengine/screen_keyboard.hpp"
|
||||||
#include "guiengine/widgets/check_box_widget.hpp"
|
#include "guiengine/widgets/check_box_widget.hpp"
|
||||||
#include "guiengine/widgets/dynamic_ribbon_widget.hpp"
|
#include "guiengine/widgets/dynamic_ribbon_widget.hpp"
|
||||||
#include "guiengine/widgets/label_widget.hpp"
|
#include "guiengine/widgets/label_widget.hpp"
|
||||||
@ -192,7 +193,7 @@ EventPropagation BaseUserScreen::filterActions(PlayerAction action,
|
|||||||
Input::InputType type,
|
Input::InputType type,
|
||||||
int playerId)
|
int playerId)
|
||||||
{
|
{
|
||||||
if (action == PA_MENU_SELECT)
|
if (action == PA_MENU_SELECT && !ScreenKeyboard::shouldUseScreenKeyboard())
|
||||||
{
|
{
|
||||||
if ((m_username_tb != NULL && m_username_tb->isFocusedForPlayer(PLAYER_ID_GAME_MASTER))
|
if ((m_username_tb != NULL && m_username_tb->isFocusedForPlayer(PLAYER_ID_GAME_MASTER))
|
||||||
|| (m_password_tb != NULL && m_password_tb->isFocusedForPlayer(PLAYER_ID_GAME_MASTER)))
|
|| (m_password_tb != NULL && m_password_tb->isFocusedForPlayer(PLAYER_ID_GAME_MASTER)))
|
||||||
|
Loading…
Reference in New Issue
Block a user