diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2021-03-19 13:47:32 +0200 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2021-03-19 13:47:32 +0200 | 
| commit | 65352e988410d8001d485fa9d72858e21cc80df7 (patch) | |
| tree | b755439534bb91bb318db057767c5362a0b6c92d | |
| parent | 5f6a025397d0bcca27adc01fcb6fc324b7bdbd4d (diff) | |
SL-14927 Some avatar names not resolving in chat
| -rw-r--r-- | indra/llui/llfolderviewitem.cpp | 8 | ||||
| -rw-r--r-- | indra/llui/llfolderviewitem.h | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsessiontab.cpp | 2 | 
3 files changed, 8 insertions, 4 deletions
| diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index 9f6ceac768..285bf9f484 100644 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -1608,7 +1608,7 @@ void LLFolderViewFolder::destroyView()  // extractItem() removes the specified item from the folder, but  // doesn't delete it. -void LLFolderViewFolder::extractItem( LLFolderViewItem* item ) +void LLFolderViewFolder::extractItem( LLFolderViewItem* item, bool deparent_model )  {  	if (item->isSelected())  		getRoot()->clearSelection(); @@ -1631,7 +1631,11 @@ void LLFolderViewFolder::extractItem( LLFolderViewItem* item )  		mItems.erase(it);  	}  	//item has been removed, need to update filter -	getViewModelItem()->removeChild(item->getViewModelItem()); +    if (deparent_model) +    { +        // in some cases model does not belong to parent view, is shared between views +        getViewModelItem()->removeChild(item->getViewModelItem()); +    }  	//because an item is going away regardless of filter status, force rearrange  	requestArrange();  	removeChild(item); diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h index da09d139e9..616d2e7d86 100644 --- a/indra/llui/llfolderviewitem.h +++ b/indra/llui/llfolderviewitem.h @@ -387,7 +387,7 @@ public:  	// extractItem() removes the specified item from the folder, but  	// doesn't delete it. -	virtual void extractItem( LLFolderViewItem* item ); +	virtual void extractItem( LLFolderViewItem* item, bool deparent_model = true);  	// This function is called by a child that needs to be resorted.  	void resort(LLFolderViewItem* item); diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp index 80165f9b9a..ed1d7a81cc 100644 --- a/indra/newview/llfloaterimsessiontab.cpp +++ b/indra/newview/llfloaterimsessiontab.cpp @@ -532,7 +532,7 @@ void LLFloaterIMSessionTab::removeConversationViewParticipant(const LLUUID& part  	LLFolderViewItem* widget = get_ptr_in_map(mConversationsWidgets,participant_id);  	if (widget)  	{ -		mConversationsRoot->extractItem(widget); +		mConversationsRoot->extractItem(widget, false);  		delete widget;  	}  	mConversationsWidgets.erase(participant_id); | 
