Skip to content

Commit

Permalink
#5532: Disable a few more controls, don't leak exceptions when parsin…
Browse files Browse the repository at this point in the history
…g empty expression strings
  • Loading branch information
codereader committed Mar 21, 2021
1 parent 509bcbb commit 8b9dba0
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 14 deletions.
4 changes: 2 additions & 2 deletions install/ui/materialeditor.fbp
Expand Up @@ -8588,7 +8588,7 @@
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="enabled">0</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
Expand Down Expand Up @@ -13362,7 +13362,7 @@
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">6</property>
<property name="border">0</property>
<property name="flag">wxBOTTOM|wxEXPAND|wxTOP</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="0">
Expand Down
3 changes: 2 additions & 1 deletion install/ui/materialeditor.xrc
Expand Up @@ -1468,6 +1468,7 @@
<flag>wxALIGN_CENTER_VERTICAL</flag>
<border>0</border>
<object class="wxTextCtrl" name="MaterialGuiSurfPath">
<enabled>0</enabled>
<value></value>
</object>
</object>
Expand Down Expand Up @@ -2313,7 +2314,7 @@
<object class="sizeritem">
<option>0</option>
<flag>wxBOTTOM|wxEXPAND|wxTOP</flag>
<border>6</border>
<border>0</border>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
Expand Down
16 changes: 7 additions & 9 deletions radiant/ui/materials/MaterialEditor.cpp
Expand Up @@ -1206,6 +1206,8 @@ void MaterialEditor::updateStageListFromMaterial()

void MaterialEditor::updateMaterialPropertiesFromMaterial()
{
util::ScopedBoolLock lock(_materialUpdateInProgress);

getControl<wxPanel>("MaterialEditorMaterialPropertiesPanel")->Enable(_material != nullptr);

// Update all registered bindings
Expand Down Expand Up @@ -1268,10 +1270,7 @@ void MaterialEditor::updateMaterialPropertiesFromMaterial()
auto clampTypeString = shaders::getStringForClampType(_material->getClampType());
clampDropdown->SetStringSelection(clampTypeString);

// Light Falloff
auto lightFalloffMap = _material->getLightFalloffExpression();
getControl<wxTextCtrl>("MaterialLightFalloffMap")->SetValue(lightFalloffMap ? lightFalloffMap->getExpressionString() : "");

// Light Falloff type
auto lightFalloffCubeMapType = _material->getLightFalloffCubeMapType();
getControl<wxChoice>("MaterialLightFalloffCubeMapType")->SetStringSelection(shaders::getStringForMapType(lightFalloffCubeMapType));

Expand All @@ -1295,11 +1294,11 @@ void MaterialEditor::updateMaterialPropertiesFromMaterial()
decalInfo.endColour.x(), decalInfo.endColour.y(), decalInfo.endColour.z(), decalInfo.endColour.w()));

getControl<wxCheckBox>("MaterialHasRenderBump")->SetValue(!_material->getRenderBumpArguments().empty());
getControl<wxTextCtrl>("MaterialRenderBumpArguments")->Enable(!_material->getRenderBumpArguments().empty());
//getControl<wxTextCtrl>("MaterialRenderBumpArguments")->Enable(!_material->getRenderBumpArguments().empty());
getControl<wxTextCtrl>("MaterialRenderBumpArguments")->SetValue(_material->getRenderBumpArguments());

getControl<wxCheckBox>("MaterialHasRenderBumpFlat")->SetValue(!_material->getRenderBumpFlatArguments().empty());
getControl<wxTextCtrl>("MaterialRenderBumpFlatArguments")->Enable(!_material->getRenderBumpFlatArguments().empty());
//getControl<wxTextCtrl>("MaterialRenderBumpFlatArguments")->Enable(!_material->getRenderBumpFlatArguments().empty());
getControl<wxTextCtrl>("MaterialRenderBumpFlatArguments")->SetValue(_material->getRenderBumpFlatArguments());

// guisurf
Expand All @@ -1308,8 +1307,8 @@ void MaterialEditor::updateMaterialPropertiesFromMaterial()

bool isEntityGui = (_material->getSurfaceFlags() & (Material::SURF_ENTITYGUI | Material::SURF_ENTITYGUI2 | Material::SURF_ENTITYGUI3)) != 0;

getControl<wxTextCtrl>("MaterialGuiSurfPath")->Enable(!isEntityGui);
getControl<wxPanel>("MaterialGuiSurfPanel")->Enable(_material->getSurfaceFlags() & Material::SURF_GUISURF);
//getControl<wxTextCtrl>("MaterialGuiSurfPath")->Enable(!isEntityGui);
//getControl<wxPanel>("MaterialGuiSurfPanel")->Enable(_material->getSurfaceFlags() & Material::SURF_GUISURF);

getControl<wxRadioButton>("MaterialGuiSurfRegular")->SetValue(!isEntityGui);
getControl<wxRadioButton>("MaterialGuiSurfEntity")->SetValue(_material->getSurfaceFlags() & Material::SURF_ENTITYGUI);
Expand Down Expand Up @@ -1338,7 +1337,6 @@ void MaterialEditor::updateMaterialPropertiesFromMaterial()

getControl<wxCheckBox>("MaterialHasSpectrum")->SetValue(false);
getControl<wxSpinCtrl>("MaterialSpectrumValue")->SetValue(0);
getControl<wxTextCtrl>("MaterialLightFalloffMap")->SetValue("");
getControl<wxTextCtrl>("MaterialDescription")->SetValue("");
_sourceView->SetValue("");
}
Expand Down
11 changes: 9 additions & 2 deletions radiantcore/shaders/MapExpression.cpp
Expand Up @@ -94,8 +94,15 @@ MapExpressionPtr MapExpression::createForToken(DefTokeniser& token)

MapExpressionPtr MapExpression::createForString(const std::string& str)
{
parser::BasicDefTokeniser<std::string> token(str);
return createForToken(token);
try
{
parser::BasicDefTokeniser<std::string> token(str);
return createForToken(token);
}
catch (const parser::ParseException&)
{
return MapExpressionPtr();
}
}

ImagePtr MapExpression::getResampled(const ImagePtr& input, std::size_t width, std::size_t height)
Expand Down

0 comments on commit 8b9dba0

Please sign in to comment.