master
Ansariel 2023-08-19 13:14:50 +02:00
commit fdee1057aa
5 changed files with 19 additions and 10 deletions

View File

@ -251,9 +251,7 @@ public:
BOOL setNextOwnerBits(const LLUUID& agent, const LLUUID& group, BOOL set, PermissionMask bits);
// This is currently only used in the Viewer to handle calling cards
// where the creator is actually used to store the target.
// It is also used for saving a GLTF material on a prim.
// Use with care.
// where the creator is actually used to store the target. Use with care.
void setCreator(const LLUUID& creator) { mCreator = creator; }
//

View File

@ -1836,6 +1836,10 @@ bool can_use_objects_material(LLSelectedTEGetMatData& func, const std::vector<Pe
llassert(LLSelectMgr::getInstance()->getSelection()->getFirstObject());
return false;
}
if (selected_object->isInventoryPending())
{
return false;
}
for (PermissionBit op : ops)
{
if (op == PERM_MODIFY && selected_object->isPermanentEnforced())

View File

@ -2061,11 +2061,10 @@ void LLPanelFace::updateUIGLTF(LLViewerObject* objectp, bool& has_pbr_material,
pbr_ctrl->setImageAssetID(pbr_id);
}
const bool inventory_pending = objectp->isInventoryPending();
getChildView("pbr_from_inventory")->setEnabled(settable);
getChildView("edit_selected_pbr")->setEnabled(editable && !inventory_pending && !has_faces_without_pbr);
getChildView("save_selected_pbr")->setEnabled(saveable && !inventory_pending && identical_pbr);
if (inventory_pending)
getChildView("edit_selected_pbr")->setEnabled(editable && !has_faces_without_pbr);
getChildView("save_selected_pbr")->setEnabled(saveable && identical_pbr);
if (objectp->isInventoryPending())
{
// Reuse the same listener when possible
if (!mInventoryListener || !mInventoryListener->isListeningFor(objectp))

View File

@ -1021,8 +1021,12 @@ BOOL LLToolDragAndDrop::handleDropMaterialProtections(LLViewerObject* hit_obj,
{
hit_obj->updateInventory(new_item, TASK_INVENTORY_ITEM_KEY, true);
}
// TODO: Check to see if adding the item was successful; if not, then
// we should return false here.
// Force the object to update and refetch its inventory so it has this asset.
hit_obj->dirtyInventory();
hit_obj->requestInventory();
// TODO: Check to see if adding the item was successful; if not, then
// we should return false here. This will requre a separate listener
// since without listener, we have no way to receive update
}
else if (!item->getPermissions().allowOperationBy(PERM_TRANSFER,
gAgent.getID()))

View File

@ -198,11 +198,15 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask)
// an item.
BOOL LLToolPie::handleRightMouseDown(S32 x, S32 y, MASK mask)
{
BOOL pick_reflection_probe = gSavedSettings.getBOOL("SelectReflectionProbes");
// don't pick transparent so users can't "pay" transparent objects
mPick = gViewerWindow->pickImmediate(x, y,
/*BOOL pick_transparent*/ gSavedSettings.getBOOL("FSEnableRightclickOnTransparentObjects"), // FALSE, // <FS:Ansariel> FIRE-1396: Allow selecting transparent objects
/*BOOL pick_rigged*/ TRUE,
/*BOOL pick_particle*/ TRUE);
/*BOOL pick_particle*/ TRUE,
/*BOOL pick_unselectable*/ TRUE,
pick_reflection_probe);
mPick.mKeyMask = mask;
// claim not handled so UI focus stays same