CollisionRenderSettingsDialog: Validate hex inputs

This way we don't have a case where incorrect values are implicitly
converted to the error value of zero (i.e. we shouldn't even accept
bogus strings like "0xzzz")

Not the most ideal UX, but this is still better than not doing anything
about it.
This commit is contained in:
Lioncache
2025-12-03 16:34:57 -05:00
parent 454d9b3ee2
commit 478060ce75

View File

@@ -1,7 +1,11 @@
#include "CCollisionRenderSettingsDialog.h"
#include "ui_CCollisionRenderSettingsDialog.h"
#include "CWorldEditor.h"
#include "Editor/UICommon.h"
#include "Editor/WorldEditor/CWorldEditor.h"
#include <QRegularExpression>
#include <QRegularExpressionValidator>
CCollisionRenderSettingsDialog::CCollisionRenderSettingsDialog(CWorldEditor *pEditor, QWidget *pParent /*= 0*/)
: QDialog(pParent)
@@ -35,8 +39,14 @@ void CCollisionRenderSettingsDialog::SetupWidgets()
EGame Game = mpEditor->CurrentGame();
// Set widgets to match current render setting values
mpUi->HideMaskLineEdit->setText(QStringLiteral("0x") + QString::number(rSettings.HideMask, 16).toUpper());
mpUi->HighlightMaskLineEdit->setText(QStringLiteral("0x") + QString::number(rSettings.HighlightMask, 16).toUpper());
auto* hexValidator = new QRegularExpressionValidator(QRegularExpression(QStringLiteral("^(?:0[xX])?([0-9]|[A-F]|[a-f]){1,16}$")));
mpUi->HideMaskLineEdit->setText(QString::number(rSettings.HideMask, 16).toUpper());
mpUi->HighlightMaskLineEdit->setText(QString::number(rSettings.HighlightMask, 16).toUpper());
mpUi->HideMaskLineEdit->setValidator(hexValidator);
mpUi->HighlightMaskLineEdit->setValidator(hexValidator);
mpUi->HideMaskLineEdit->setToolTip(tr("Must be hex characters (0x optional)"));
mpUi->HighlightMaskLineEdit->setToolTip(tr("Must be hex characters (0x optional)"));
mpUi->WireframeCheckBox->setChecked(rSettings.DrawWireframe);
mpUi->SurfaceTypeCheckBox->setChecked(rSettings.TintWithSurfaceColor);
mpUi->StandableTrisCheckBox->setChecked(rSettings.TintUnwalkableTris);