diff options
Diffstat (limited to 'indra')
-rwxr-xr-x | indra/newview/llpanelface.cpp | 19 | ||||
-rwxr-xr-x | indra/newview/llpanelface.h | 12 |
2 files changed, 14 insertions, 17 deletions
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index afc9d5b123..c6d52a0661 100755 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -317,6 +317,7 @@ void LLPanelFace::sendTexture() void LLPanelFace::sendBump(U32 bumpiness) { LLTextureCtrl* bumpytexture_ctrl = getChild<LLTextureCtrl>("bumpytexture control"); + LLUUID current_normal_map = bumpytexture_ctrl->getImageAssetID(); if (bumpiness < BUMPY_TEXTURE) { @@ -329,7 +330,7 @@ void LLPanelFace::sendBump(U32 bumpiness) LLSelectMgr::getInstance()->selectionSetBumpmap( bump ); updateBumpyControls(bumpiness == BUMPY_TEXTURE, true); - LLSelectedTEMaterial::setNormalID(this, bumpytexture_ctrl->getImageAssetID()); + LLSelectedTEMaterial::setNormalID(this, current_normal_map); } void LLPanelFace::sendTexGen() @@ -1443,6 +1444,11 @@ void LLPanelFace::onSelectColor(const LLSD& data) void LLPanelFace::onCommitMaterialsMedia(LLUICtrl* ctrl, void* userdata) { LLPanelFace* self = (LLPanelFace*) userdata; + // Force to default states to side-step problems with menu contents + // and generally reflecting old state when switching tabs or objects + // + self->updateShinyControls(false,true); + self->updateBumpyControls(false,true); self->updateUI(); } @@ -1530,10 +1536,11 @@ void LLPanelFace::updateVisibility() void LLPanelFace::onCommitMaterialType(LLUICtrl* ctrl, void* userdata) { LLPanelFace* self = (LLPanelFace*) userdata; - // This is here to insure that we properly update shared UI elements - // like the texture ctrls for diffuse/norm/spec so that they are correct - // when switching modes - // + // Force to default states to side-step problems with menu contents + // and generally reflecting old state when switching tabs or objects + // + self->updateShinyControls(false,true); + self->updateBumpyControls(false,true); self->updateUI(); } @@ -1801,7 +1808,7 @@ void LLPanelFace::onCommitSpecularTexture( const LLSD& data ) void LLPanelFace::onCommitNormalTexture( const LLSD& data ) { LL_DEBUGS("Materials") << data << LL_ENDL; - sendBump(BUMPY_TEXTURE); + sendBump(getCurrentNormalMap().isNull() ? 0 : BUMPY_TEXTURE); } void LLPanelFace::onCancelSpecularTexture(const LLSD& data) diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h index b6a8df19fe..84aba4dc89 100755 --- a/indra/newview/llpanelface.h +++ b/indra/newview/llpanelface.h @@ -242,7 +242,7 @@ private: // Default to matching expected state of UI // - new_material->setDiffuseAlphaMode(default_alpha_mode); + new_material->setDiffuseAlphaMode(current_material.isNull() ? default_alpha_mode : current_material->getDiffuseAlphaMode()); // Do "It"! // @@ -262,16 +262,6 @@ private: } else { - // Replicate old init behavior - // - if (current_material.isNull()) - { - U8 current_alpha_mode = _panel->getCurrentDiffuseAlphaMode(); - U8 current_alpha_mask_cutoff = _panel->getCurrentAlphaMaskCutoff(); - new_material->setDiffuseAlphaMode(current_alpha_mode); - new_material->setAlphaMaskCutoff(current_alpha_mask_cutoff); - } - LL_DEBUGS("Materials") << "Putting material on object " << object->getID() << " face " << face << ", material: " << new_material->asLLSD() << LL_ENDL; LLMaterialMgr::getInstance()->put(object->getID(),face,*new_material); } |