MemoryWidget: Fix "Hex Byte String" validation failures

Fix the input string failing to validate when the "Hex Byte
String" input type is selected and either the user adds a 0x prefix or
the "Hex" box is checked (or both).

The latter failure was particularly troublesome because when "Hex Byte
String" is selected the "Hex" checkbox is disabled. Users would have to
switch to a data type that enabled the box, toggle it, then switch back
to "Hex Byte String" to fix it.

Fix these errors by not adding a prefix when the "Hex" box is checked,
and removing the "0x" prefix from the user's input if present.
This commit is contained in:
Dentomologist
2025-06-30 00:05:44 -07:00
parent 8f4a0b0e77
commit 0093ed1ac8

View File

@ -618,7 +618,14 @@ void MemoryWidget::ValidateAndPreviewInputValue()
if (input_type != Type::ASCII)
input_text.remove(QLatin1Char(' '));
if (m_base_check->isChecked())
if (input_type == Type::HexString)
{
// Hex strings are parsed using QByteArray::fromHex which doesn't expect a 0x prefix. If the
// user has inserted one, remove it.
if (input_text.startsWith(QStringLiteral("0x"), Qt::CaseInsensitive))
input_text.remove(0, 2);
}
else if (m_base_check->isChecked())
{
// Add 0x to the front of the input (after the '-', if present), but only if the user didn't
// already do so.