diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 0050531d2f..62a5b16441 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -2314,6 +2314,9 @@ void LLLineEditor::clear() { mText.clear(); setCursor(0); + mFontBufferPreSelection.reset(); + mFontBufferSelection.reset(); + mFontBufferPostSelection.reset(); } //virtual diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 82930a5978..eac7da1692 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1651,19 +1651,7 @@ void LLTextBase::draw() bg_rect.intersectWith( text_rect ); gl_rect_2d( text_rect, bg_color, true ); - - // Additionally set the font color of highlighted text instead of using LabelTextColor - const LLColor4& font_color = ll::ui::SearchableControl::getHighlightFontColor(); - setColor(font_color); - // } - // Set the font color back to LabelTextColor if not highlighted - else - { - const LLColor4& font_color = LLUIColorTable::instance().getColor("LabelTextColor"); - setColor(font_color); - } - // bool should_clip = mClip || mScroller != NULL; // Fix text bleeding at top edge of scrolling text editors diff --git a/indra/newview/fspanelface.cpp b/indra/newview/fspanelface.cpp index 8ff008372c..e041218009 100644 --- a/indra/newview/fspanelface.cpp +++ b/indra/newview/fspanelface.cpp @@ -737,7 +737,6 @@ void FSPanelFace::onMatTabChange() if(objectp) { last_mat = curr_mat; - gSavedSettings.setBOOL("FSShowSelectedInBlinnPhong", (curr_mat == MATMEDIA_MATERIAL)); // Iterate through the linkset and mark each object for update for (LLObjectSelection::iterator iter = LLSelectMgr::getInstance()->getSelection()->begin(); iter != LLSelectMgr::getInstance()->getSelection()->end(); ++iter) @@ -760,6 +759,7 @@ void FSPanelFace::onMatTabChange() // Since we allow both PBR and BP textures to be applied at the same time, // we need to hide or show the GLTF material only locally based on the current tab. + gSavedSettings.setBOOL("FSShowSelectedInBlinnPhong", (curr_mat == MATMEDIA_MATERIAL)); if (curr_mat != MATMEDIA_PBR) LLSelectMgr::getInstance()->hideGLTFMaterial(); else diff --git a/indra/newview/fsslurl.cpp b/indra/newview/fsslurl.cpp index 88c67963a2..b0028dce9f 100644 --- a/indra/newview/fsslurl.cpp +++ b/indra/newview/fsslurl.cpp @@ -234,17 +234,25 @@ LLSLURL::LLSLURL(const std::string& slurl) } else { - LL_DEBUGS("SLURL") << "secondlife://" << LL_ENDL; - // it wasn't a /secondlife/ or /app/, so it must be secondlife:// - // therefore the hostname will be the region name, and it's a location type - mType = LOCATION; + if (slurl_uri.hostName() == LLSLURL::SLURL_APP_PATH) + { + LL_DEBUGS("SLURL") << "hostname is an app path" << LL_ENDL; + mType = APP; + } + else + { + LL_DEBUGS("SLURL") << "secondlife://" << LL_ENDL; + // it wasn't a /secondlife/ or /app/, so it must be secondlife:// + // therefore the hostname will be the region name, and it's a location type + mType = LOCATION; - //AW: use current grid for compatibility - //with viewer 1 slurls. - mGrid = LLGridManager::getInstance()->getGrid(); + // AW: use current grid for compatibility + // with viewer 1 slurls. + mGrid = LLGridManager::getInstance()->getGrid(); - // 'normalize' it so the region name is in fact the head of the path_array - path_array.insert(0, slurl_uri.hostNameAndPort()); + // 'normalize' it so the region name is in fact the head of the path_array + path_array.insert(0, slurl_uri.hostNameAndPort()); + } } } else if((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME) diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 260dd31cd3..a4224638ca 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -8014,7 +8014,7 @@ bool LLSelectMgr::canSelectObject(LLViewerObject* object, bool ignore_select_own { return false; } - // // Can't select objects that are not owned by you or group + // } // Can't select orphans diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 869c744983..74c4d9b4f5 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -7762,6 +7762,16 @@ void LLViewerObject::setRenderMaterialID(S32 te_in, const LLUUID& id, bool updat start_idx = llmax(start_idx, 0); end_idx = llmin(end_idx, (S32) getNumTEs()); + // [FIRE-35138] If we are hiding the GLTF material, call the function again but with a null material id + static LLCachedControl showSelectedinBP(gSavedSettings, "FSShowSelectedInBlinnPhong"); + bool hiding_gltf_material = showSelectedinBP && isSelected(); + if (hiding_gltf_material && id.notNull()) + { + setRenderMaterialID(te_in, LLUUID::null, update_server, local_origin); + return; + } + // + LLRenderMaterialParams* param_block = (LLRenderMaterialParams*)getParameterEntry(LLNetworkData::PARAMS_RENDER_MATERIAL); if (!param_block && id.notNull()) { // block doesn't exist, but it will need to @@ -7798,43 +7808,53 @@ void LLViewerObject::setRenderMaterialID(S32 te_in, const LLUUID& id, bool updat } } - if (update_server || material_changed) - { - tep->setGLTFRenderMaterial(nullptr); - } - - if (new_material != tep->getGLTFMaterial()) - { - tep->setGLTFMaterial(new_material, !update_server); - } - - if (material_changed && new_material) - { - // Sometimes, the material may change out from underneath the overrides. - // This is usually due to the server sending a new material ID, but - // the overrides have not changed due to being only texture - // transforms. Re-apply the overrides to the render material here, - // if present. - const LLGLTFMaterial* override_material = tep->getGLTFMaterialOverride(); - if (override_material) + // [FIRE-35138] Only set GLTF material if not hiding it + if (!hiding_gltf_material) + { // + if (update_server || material_changed) { - new_material->onMaterialComplete([obj_id = getID(), te]() - { - LLViewerObject* obj = gObjectList.findObject(obj_id); - if (!obj) { return; } - LLTextureEntry* tep = obj->getTE(te); - if (!tep) { return; } - const LLGLTFMaterial* new_material = tep->getGLTFMaterial(); - if (!new_material) { return; } - const LLGLTFMaterial* override_material = tep->getGLTFMaterialOverride(); - if (!override_material) { return; } - LLGLTFMaterial* render_material = new LLFetchedGLTFMaterial(); - *render_material = *new_material; - render_material->applyOverride(*override_material); - tep->setGLTFRenderMaterial(render_material); - }); + tep->setGLTFRenderMaterial(nullptr); } - } + + if (new_material != tep->getGLTFMaterial()) + { + tep->setGLTFMaterial(new_material, !update_server); + } + + if (material_changed && new_material) + { + // Sometimes, the material may change out from underneath the overrides. + // This is usually due to the server sending a new material ID, but + // the overrides have not changed due to being only texture + // transforms. Re-apply the overrides to the render material here, + // if present. + const LLGLTFMaterial* override_material = tep->getGLTFMaterialOverride(); + if (override_material) + { + new_material->onMaterialComplete([obj_id = getID(), te]() + { + LLViewerObject* obj = gObjectList.findObject(obj_id); + if (!obj) { return; } + LLTextureEntry* tep = obj->getTE(te); + if (!tep) { return; } + const LLGLTFMaterial* new_material = tep->getGLTFMaterial(); + if (!new_material) { return; } + const LLGLTFMaterial* override_material = tep->getGLTFMaterialOverride(); + if (!override_material) { return; } + LLGLTFMaterial* render_material = new LLFetchedGLTFMaterial(); + *render_material = *new_material; + render_material->applyOverride(*override_material); + tep->setGLTFRenderMaterial(render_material); + }); + } + } + + // [FIRE-35138] Update the saved GLTF material since we got an update + if (material_changed) + { + updateSavedGLTFMaterial(te); + } + } // } // signal to render pipe that render batches must be rebuilt for this object @@ -7913,6 +7933,28 @@ void LLViewerObject::saveGLTFMaterials() } } +void LLViewerObject::updateSavedGLTFMaterial(S32 te) +{ + if (te >= mSavedGLTFMaterialIds.size()) + { + // Nothing is saved, so don't need to update anything + return; + } + + mSavedGLTFMaterialIds[te] = getRenderMaterialID(te); + + LLPointer old_override = getTE(te)->getGLTFMaterialOverride(); + if (old_override.notNull()) + { + LLGLTFMaterial* copy = new LLGLTFMaterial(*old_override); + mSavedGLTFOverrideMaterials[te] = copy; + } + else + { + mSavedGLTFOverrideMaterials[te] = nullptr; + } +} + void LLViewerObject::clearSavedGLTFMaterials() { mSavedGLTFMaterialIds.clear(); diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 9adfbd0c73..0544286636 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -214,6 +214,7 @@ public: const uuid_vec_t& getSavedGLTFMaterialIds() const { return mSavedGLTFMaterialIds; }; const gltf_materials_vec_t& getSavedGLTFOverrideMaterials() const { return mSavedGLTFOverrideMaterials; }; void saveGLTFMaterials(); + void updateSavedGLTFMaterial(S32 te); void clearSavedGLTFMaterials(); // diff --git a/indra/newview/skins/default/xui/fr/floater_fs_area_search.xml b/indra/newview/skins/default/xui/fr/floater_fs_area_search.xml index 038344c6e2..e87cda5fd1 100644 --- a/indra/newview/skins/default/xui/fr/floater_fs_area_search.xml +++ b/indra/newview/skins/default/xui/fr/floater_fs_area_search.xml @@ -42,6 +42,7 @@ + et Action du clic : @@ -63,6 +64,7 @@ +