summaryrefslogtreecommitdiff
path: root/indra/newview/llinventorybridge.h
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-05-15 09:15:57 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-05-15 09:15:57 -0400
commit6fcc9a0eae892a8bfc1079e100a37da7f781330b (patch)
treed8c5cb3ab9aaf52cf4ffa2bed92ff66d465fa2b4 /indra/newview/llinventorybridge.h
parentc3da5bb12d1c7c173929433589a4068555791bea (diff)
parentbb3c36f5cbc0c3b542045fd27255eee24e03da22 (diff)
Merge branch 'main' into release/luau-scripting for Maint X release.
Diffstat (limited to 'indra/newview/llinventorybridge.h')
-rw-r--r--indra/newview/llinventorybridge.h44
1 files changed, 35 insertions, 9 deletions
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index e1e0bbb5bd..b0139e225e 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -114,7 +114,7 @@ public:
virtual BOOL isItemRenameable() const { return TRUE; }
virtual BOOL isMultiPreviewAllowed() { return TRUE; }
//virtual BOOL renameItem(const std::string& new_name) {}
- virtual BOOL isItemRemovable() const;
+ virtual BOOL isItemRemovable(bool check_worn = true) const;
virtual BOOL isItemMovable() const;
virtual BOOL isItemInTrash() const;
virtual bool isItemInOutfits() const;
@@ -162,6 +162,9 @@ protected:
virtual void addLinkReplaceMenuOption(menuentry_vec_t& items,
menuentry_vec_t& disabled_items);
+ virtual bool canMenuDelete();
+ virtual bool canMenuCut();
+
protected:
LLInvFVBridge(LLInventoryPanel* inventory, LLFolderView* root, const LLUUID& uuid);
@@ -272,13 +275,9 @@ class LLFolderBridge : public LLInvFVBridge
public:
LLFolderBridge(LLInventoryPanel* inventory,
LLFolderView* root,
- const LLUUID& uuid)
- : LLInvFVBridge(inventory, root, uuid),
- mCallingCards(FALSE),
- mWearables(FALSE),
- mIsLoading(false),
- mShowDescendantsCount(false)
- {}
+ const LLUUID& uuid);
+
+ ~LLFolderBridge();
BOOL dragItemIntoFolder(LLInventoryItem* inv_item, BOOL drop, std::string& tooltip_msg, BOOL user_confirm = TRUE, LLPointer<LLInventoryCallback> cb = NULL);
BOOL dragCategoryIntoFolder(LLInventoryCategory* inv_category, BOOL drop, std::string& tooltip_msg, BOOL is_link = FALSE, BOOL user_confirm = TRUE, LLPointer<LLInventoryCallback> cb = NULL);
@@ -321,7 +320,7 @@ public:
void* cargo_data,
std::string& tooltip_msg);
- virtual BOOL isItemRemovable() const;
+ virtual BOOL isItemRemovable(bool check_worn = true) const;
virtual BOOL isItemMovable() const ;
virtual BOOL isUpToDate() const;
virtual bool isItemCopyable(bool can_copy_as_link = true) const;
@@ -392,6 +391,31 @@ protected:
LLTimer mTimeSinceRequestStart;
std::string mMessage;
LLRootHandle<LLFolderBridge> mHandle;
+
+private:
+ // checking if folder is cutable or deletable is expensive,
+ // cache values and split check over frames
+ static void onCanDeleteIdle(void* user_data);
+ void initCanDeleteProcessing(LLInventoryModel* model, S32 version);
+ void completeDeleteProcessing();
+ bool canMenuDelete();
+ bool canMenuCut();
+
+ enum ECanDeleteState
+ {
+ CDS_INIT_FOLDER_CHECK,
+ CDS_PROCESSING_ITEMS,
+ CDS_PROCESSING_FOLDERS,
+ CDS_DONE,
+ };
+
+ ECanDeleteState mCanDeleteFolderState;
+ LLInventoryModel::cat_array_t mFoldersToCheck;
+ LLInventoryModel::item_array_t mItemsToCheck;
+ S32 mLastCheckedVersion;
+ S32 mInProgressVersion;
+ bool mCanDelete;
+ bool mCanCut;
};
class LLTextureBridge : public LLItemBridge
@@ -524,6 +548,8 @@ public:
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
virtual BOOL renameItem(const std::string& new_name);
LLInventoryObject* getObject() const;
+ LLViewerInventoryItem* getItem() const;
+ LLViewerInventoryCategory* getCategory() const;
protected:
static LLUUID sContextMenuItemID; // Only valid while the context menu is open.
U32 mAttachPt;