Fallback to old dialog system when last input was by Keyboard

This commit is contained in:
Devlrxxh 2026-03-05 19:04:38 +01:00
parent c32230a320
commit 6c8f0e7877
6 changed files with 76 additions and 51 deletions

View file

@ -328,13 +328,23 @@ void UIScene_AnvilMenu::handleEditNamePressed()
{
setIgnoreInput(true);
#ifdef _WINDOWS64
KeyboardInitData kbData;
kbData.title = app.GetString(IDS_TITLE_RENAME);
kbData.initialText = m_textInputAnvil.getLabel();
kbData.charLimit = 30;
kbData.lpParam = this;
kbData.Func = &UIScene_AnvilMenu::KeyboardCompleteCallbackNew;
ui.NavigateToScene(m_iPad, eUIScene_Keyboard, &kbData);
if (!g_KBMInput.IsKBMActive())
{
KeyboardInitData kbData;
kbData.title = app.GetString(IDS_TITLE_RENAME);
kbData.initialText = m_textInputAnvil.getLabel();
kbData.charLimit = 30;
kbData.lpParam = this;
kbData.Func = &UIScene_AnvilMenu::KeyboardCompleteCallbackNew;
ui.NavigateToScene(m_iPad, eUIScene_Keyboard, &kbData);
}
else
{
InputManager.RequestKeyboard(app.GetString(IDS_TITLE_RENAME), m_textInputAnvil.getLabel(), (DWORD)m_iPad, 30, &UIScene_AnvilMenu::KeyboardCompleteCallback, this, C_4JInput::EKeyboardMode_Alphabet_Extended);
}
#elif defined(__PS3__) || defined(__ORBIS__) || defined __PSVITA__
int language = XGetLanguage();
switch(language)

View file

@ -418,13 +418,20 @@ void UIScene_CreateWorldMenu::handlePress(F64 controlId, F64 childId)
{
m_bIgnoreInput=true;
#ifdef _WINDOWS64
KeyboardInitData kbData;
kbData.title = app.GetString(IDS_CREATE_NEW_WORLD);
kbData.initialText = m_worldName;
kbData.charLimit = 25;
kbData.lpParam = this;
kbData.Func = &UIScene_CreateWorldMenu::KeyboardCompleteWorldNameCallbackNew;
ui.NavigateToScene(m_iPad, eUIScene_Keyboard, &kbData);
if (!g_KBMInput.IsKBMActive())
{
KeyboardInitData kbData;
kbData.title = app.GetString(IDS_CREATE_NEW_WORLD);
kbData.initialText = m_worldName;
kbData.charLimit = 25;
kbData.lpParam = this;
kbData.Func = &UIScene_CreateWorldMenu::KeyboardCompleteWorldNameCallbackNew;
ui.NavigateToScene(m_iPad, eUIScene_Keyboard, &kbData);
}
else
{
InputManager.RequestKeyboard(app.GetString(IDS_CREATE_NEW_WORLD), m_editWorldName.getLabel(), (DWORD)0, 25, &UIScene_CreateWorldMenu::KeyboardCompleteWorldNameCallback, this, C_4JInput::EKeyboardMode_Default);
}
#else
InputManager.RequestKeyboard(app.GetString(IDS_CREATE_NEW_WORLD),m_editWorldName.getLabel(),(DWORD)0,25,&UIScene_CreateWorldMenu::KeyboardCompleteWorldNameCallback,this,C_4JInput::EKeyboardMode_Default);
#endif

View file

@ -115,13 +115,21 @@ void UIScene_DebugCreateSchematic::handlePress(F64 controlId, F64 childId)
m_keyboardCallbackControl = (eControls)((int)controlId);
#ifdef _WINDOWS64
{
KeyboardInitData kbData;
kbData.title = L"Enter something";
kbData.initialText = L"";
kbData.charLimit = 25;
kbData.lpParam = this;
kbData.Func = &UIScene_DebugCreateSchematic::KeyboardCompleteCallbackNew;
ui.NavigateToScene(m_iPad, eUIScene_Keyboard, &kbData);
if (!g_KBMInput.IsKBMActive())
{
KeyboardInitData kbData;
kbData.title = L"Enter something";
kbData.initialText = L"";
kbData.charLimit = 25;
kbData.lpParam = this;
kbData.Func = &UIScene_DebugCreateSchematic::KeyboardCompleteCallbackNew;
ui.NavigateToScene(m_iPad, eUIScene_Keyboard, &kbData);
}
else
{
InputManager.RequestKeyboard(L"Enter something", L"", (DWORD)0, 25, &UIScene_DebugCreateSchematic::KeyboardCompleteCallback, this, C_4JInput::EKeyboardMode_Default);
}
}
#else
InputManager.RequestKeyboard(L"Enter something",L"",(DWORD)0,25,&UIScene_DebugCreateSchematic::KeyboardCompleteCallback,this,C_4JInput::EKeyboardMode_Default);

View file

@ -574,13 +574,20 @@ void UIScene_LaunchMoreOptionsMenu::handlePress(F64 controlId, F64 childId)
{
m_bIgnoreInput=true;
#ifdef _WINDOWS64
KeyboardInitData kbData;
kbData.title = app.GetString(IDS_CREATE_NEW_WORLD_SEED);
kbData.initialText = m_editSeed.getLabel();
kbData.charLimit = 60;
kbData.lpParam = this;
kbData.Func = &UIScene_LaunchMoreOptionsMenu::KeyboardCompleteSeedCallbackNew;
ui.NavigateToScene(m_iPad, eUIScene_Keyboard, &kbData);
if (!g_KBMInput.IsKBMActive())
{
KeyboardInitData kbData;
kbData.title = app.GetString(IDS_CREATE_NEW_WORLD_SEED);
kbData.initialText = m_editSeed.getLabel();
kbData.charLimit = 60;
kbData.lpParam = this;
kbData.Func = &UIScene_LaunchMoreOptionsMenu::KeyboardCompleteSeedCallbackNew;
ui.NavigateToScene(m_iPad, eUIScene_Keyboard, &kbData);
}
else
{
InputManager.RequestKeyboard(app.GetString(IDS_CREATE_NEW_WORLD_SEED), m_editSeed.getLabel(), (DWORD)0, 60, &UIScene_LaunchMoreOptionsMenu::KeyboardCompleteSeedCallback, this, C_4JInput::EKeyboardMode_Alphabet_Extended);
}
#elif defined(__PS3__)
int language = XGetLanguage();
switch(language)

View file

@ -172,13 +172,20 @@ void UIScene_SignEntryMenu::handlePress(F64 controlId, F64 childId)
m_iEditingLine = (int)controlId;
m_bIgnoreInput = true;
#ifdef _WINDOWS64
KeyboardInitData kbData;
kbData.title = app.GetString(IDS_SIGN_TITLE);
kbData.initialText = m_textInputLines[m_iEditingLine].getLabel();
kbData.charLimit = 15;
kbData.lpParam = this;
kbData.Func = &UIScene_SignEntryMenu::KeyboardCompleteCallbackNew;
ui.NavigateToScene(m_iPad, eUIScene_Keyboard, &kbData);
if (!g_KBMInput.IsKBMActive())
{
KeyboardInitData kbData;
kbData.title = app.GetString(IDS_SIGN_TITLE);
kbData.initialText = m_textInputLines[m_iEditingLine].getLabel();
kbData.charLimit = 15;
kbData.lpParam = this;
kbData.Func = &UIScene_SignEntryMenu::KeyboardCompleteCallbackNew;
ui.NavigateToScene(m_iPad, eUIScene_Keyboard, &kbData);
}
else
{
InputManager.RequestKeyboard(app.GetString(IDS_SIGN_TITLE), m_textInputLines[m_iEditingLine].getLabel(), (DWORD)m_iPad, 15, &UIScene_SignEntryMenu::KeyboardCompleteCallback, this, C_4JInput::EKeyboardMode_Alphabet);
}
#elif defined(_XBOX_ONE)
// 4J-PB - Xbox One uses the Windows virtual keyboard, and doesn't have the Xbox 360 Latin keyboard type, so we can't restrict the input set to alphanumeric. The closest we get is the emailSmtpAddress type.
int language = XGetLanguage();

View file

@ -735,24 +735,10 @@ uint16_t *GetGlobalText()
void SeedEditBox()
{
KeyboardInitData kbData;
kbData.title =
reinterpret_cast<wchar_t*>(chGlobalText);
kbData.initialText =
reinterpret_cast<wchar_t*>(chGlobalText);
kbData.charLimit = 25;
kbData.lpParam = nullptr;
ui.NavigateToScene(
ProfileManager.GetPrimaryPad(),
eUIScene_Keyboard,
&kbData);
DialogBox(hMyInst, MAKEINTRESOURCE(IDD_SEED),
g_hWnd, reinterpret_cast<DLGPROC>(DlgProc));
}
//---------------------------------------------------------------------------
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{