summaryrefslogtreecommitdiff
path: root/indra/newview/llinventorybridge.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llinventorybridge.cpp')
-rwxr-xr-xindra/newview/llinventorybridge.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 3877f9f040..74837bac37 100755
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -2984,8 +2984,45 @@ std::string LLFolderBridge::getLabelSuffix() const
: LLStringUtil::null;
}
+class ScrollOnRenameObserver: public LLInventoryObserver
+{
+public:
+ LLFolderView *mView;
+ LLUUID mUUID;
+
+ ScrollOnRenameObserver(const LLUUID& uuid, LLFolderView *view):
+ mUUID(uuid),
+ mView(view)
+ {
+ }
+ void changed(U32 mask)
+ {
+ if (mask & LLInventoryObserver::LABEL)
+ {
+ // TODO - check for whether this is the item we're waiting for a rename of
+ const uuid_set_t& changed_item_ids = gInventory.getChangedIDs();
+ for (uuid_set_t::const_iterator it = changed_item_ids.begin(); it != changed_item_ids.end(); ++it)
+ {
+ const LLUUID& id = *it;
+ if (id == mUUID)
+ {
+ mView->scrollToShowSelection();
+
+ gInventory.removeObserver(this);
+ delete this;
+ return;
+ }
+ }
+ }
+ }
+};
+
BOOL LLFolderBridge::renameItem(const std::string& new_name)
{
+
+ LLScrollOnRenameObserver *observer = new LLScrollOnRenameObserver(mUUID, mRoot);
+ gInventory.addObserver(observer);
+
rename_category(getInventoryModel(), mUUID, new_name);
// return FALSE because we either notified observers (& therefore