#3982 Crash at getChild<LLScrollListCtrl>

Notification about inventory change from fetchInventoryFromCapCoro
Looks like floater was closed a moment before receiving inventoryChanged
master
Andrey Kleshchev 2025-04-25 21:15:49 +03:00 committed by Andrey Kleshchev
parent 8665cd3750
commit 69a81d641a
2 changed files with 15 additions and 8 deletions

View File

@ -89,9 +89,17 @@ bool LLFloaterBulkPermission::postBuild()
{
mBulkChangeNextOwnerTransfer = true;
}
mQueueOutputList = getChild<LLScrollListCtrl>("queue output");
return true;
}
void LLFloaterBulkPermission::onClose(bool app_quitting)
{
removeVOInventoryListener();
LLFloater::onClose(app_quitting);
}
void LLFloaterBulkPermission::doApply()
{
// Inspects a stream of selected object contents and adds modifiable ones to the given array.
@ -216,7 +224,7 @@ void LLFloaterBulkPermission::onCommitCopy()
bool LLFloaterBulkPermission::start()
{
// note: number of top-level objects to modify is mObjectIDs.size().
getChild<LLScrollListCtrl>("queue output")->setCommentText(getString("start_text"));
mQueueOutputList->setCommentText(getString("start_text"));
return nextObject();
}
@ -239,7 +247,7 @@ bool LLFloaterBulkPermission::nextObject()
if(isDone() && !mDone)
{
getChild<LLScrollListCtrl>("queue output")->setCommentText(getString("done_text"));
mQueueOutputList->setCommentText(getString("done_text"));
mDone = true;
}
return successful_start;
@ -294,8 +302,6 @@ void LLFloaterBulkPermission::doCheckUncheckAll(bool check)
void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, LLInventoryObject::object_list_t* inv)
{
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
LLInventoryObject::object_list_t::const_iterator it = inv->begin();
LLInventoryObject::object_list_t::const_iterator end = inv->end();
for ( ; it != end; ++it)
@ -362,7 +368,7 @@ void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, LLInve
status_text.setArg("[STATUS]", "");
}
list->setCommentText(status_text.getString());
mQueueOutputList->setCommentText(status_text.getString());
//TODO if we are an object inside an object we should check a recuse flag and if set
//open the inventory of the object and recurse - Michelle2 Zenovka

View File

@ -41,7 +41,8 @@ class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener
friend class LLFloaterReg;
public:
bool postBuild();
bool postBuild() override;
void onClose(bool app_quitting) override;
private:
@ -57,7 +58,7 @@ private:
/*virtual*/ void inventoryChanged(LLViewerObject* obj,
LLInventoryObject::object_list_t* inv,
S32 serial_num,
void* queue);
void* queue) override;
// This is called by inventoryChanged
void handleInventory(LLViewerObject* viewer_obj,
@ -85,7 +86,7 @@ private:
private:
// UI
LLScrollListCtrl* mMessages;
LLScrollListCtrl* mQueueOutputList = nullptr;
LLButton* mCloseBtn;
// Object Queue