overlays/osk: Clear text properly in continuous mode

This commit is contained in:
Megamouse 2023-01-24 00:13:14 +01:00
parent 9b6d7a5275
commit d3dbf9e83f
6 changed files with 37 additions and 6 deletions

View file

@ -182,7 +182,7 @@ void osk_dialog_frame::Create(const osk_params& params)
void osk_dialog_frame::SetOskText(const QString& text)
{
std::memcpy(osk_text, utils::bless<char16_t>(text.constData()), (text.size() + 1u) * sizeof(char16_t));
std::memcpy(osk_text.data(), utils::bless<char16_t>(text.constData()), std::min(osk_text.size(), text.size() + 1ull) * sizeof(char16_t));
}
void osk_dialog_frame::Close(s32 status)
@ -203,3 +203,11 @@ void osk_dialog_frame::Close(s32 status)
}
}
}
void osk_dialog_frame::Clear()
{
if (m_dialog)
{
SetOskText("");
}
}