From 478060ce753fdee1a0c59374dc5130c0015b3745 Mon Sep 17 00:00:00 2001 From: Lioncache Date: Wed, 3 Dec 2025 16:34:57 -0500 Subject: [PATCH] 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. --- .../CCollisionRenderSettingsDialog.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Editor/WorldEditor/CCollisionRenderSettingsDialog.cpp b/src/Editor/WorldEditor/CCollisionRenderSettingsDialog.cpp index 06192a8c..48710c8e 100644 --- a/src/Editor/WorldEditor/CCollisionRenderSettingsDialog.cpp +++ b/src/Editor/WorldEditor/CCollisionRenderSettingsDialog.cpp @@ -1,7 +1,11 @@ #include "CCollisionRenderSettingsDialog.h" #include "ui_CCollisionRenderSettingsDialog.h" -#include "CWorldEditor.h" + #include "Editor/UICommon.h" +#include "Editor/WorldEditor/CWorldEditor.h" + +#include +#include 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);