viewer#1104 Crash at populateFoldersList
Ensure folder creation callbacks remain alive # Conflicts: # indra/newview/llfloatercreatelandmark.cpp # indra/newview/llfloatercreatelandmark.hmaster
parent
f2042fe9d8
commit
d8f3c242d4
|
|
@ -31,6 +31,7 @@
|
|||
#include "llagent.h"
|
||||
#include "llagentui.h"
|
||||
#include "llcombobox.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "llinventoryfunctions.h"
|
||||
#include "llinventoryobserver.h"
|
||||
#include "lllandmarkactions.h"
|
||||
|
|
@ -296,7 +297,7 @@ void LLFloaterCreateLandmark::onCreateFolderClicked()
|
|||
|
||||
void LLFloaterCreateLandmark::folderCreatedCallback(LLUUID folder_id)
|
||||
{
|
||||
populateFoldersList(folder_id);
|
||||
populateFoldersList(folder_id);
|
||||
}
|
||||
|
||||
void LLFloaterCreateLandmark::onSaveClicked()
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ private:
|
|||
void onSaveClicked();
|
||||
void onCancelClicked();
|
||||
|
||||
void folderCreatedCallback(LLUUID folder_id);
|
||||
static void folderCreatedCallback(LLUUID folder_id);
|
||||
|
||||
LLComboBox* mFolderCombo;
|
||||
LLLineEditor* mLandmarkTitleEditor;
|
||||
|
|
|
|||
|
|
@ -5315,7 +5315,7 @@ void LLFolderBridge::dropToMyOutfits(LLInventoryCategory* inv_cat, LLPointer<LLI
|
|||
|
||||
// Note: creation will take time, so passing folder id to callback is slightly unreliable,
|
||||
// but so is collecting and passing descendants' ids
|
||||
inventory_func_type func = boost::bind(&LLFolderBridge::outfitFolderCreatedCallback, this, inv_cat->getUUID(), _1, cb);
|
||||
inventory_func_type func = boost::bind(outfitFolderCreatedCallback, inv_cat->getUUID(), _1, cb, mInventoryPanel);
|
||||
gInventory.createNewCategory(dest_id,
|
||||
LLFolderType::FT_OUTFIT,
|
||||
inv_cat->getName(),
|
||||
|
|
@ -5323,11 +5323,25 @@ void LLFolderBridge::dropToMyOutfits(LLInventoryCategory* inv_cat, LLPointer<LLI
|
|||
inv_cat->getThumbnailUUID());
|
||||
}
|
||||
|
||||
void LLFolderBridge::outfitFolderCreatedCallback(LLUUID cat_source_id, LLUUID cat_dest_id, LLPointer<LLInventoryCallback> cb)
|
||||
void LLFolderBridge::outfitFolderCreatedCallback(LLUUID cat_source_id,
|
||||
LLUUID cat_dest_id,
|
||||
LLPointer<LLInventoryCallback> cb,
|
||||
LLHandle<LLInventoryPanel> inventory_panel)
|
||||
{
|
||||
LLInventoryModel::cat_array_t* categories;
|
||||
LLInventoryModel::item_array_t* items;
|
||||
getInventoryModel()->getDirectDescendentsOf(cat_source_id, categories, items);
|
||||
|
||||
LLInventoryPanel* panel = inventory_panel.get();
|
||||
if (!panel)
|
||||
{
|
||||
return;
|
||||
}
|
||||
LLInventoryModel* model = panel->getModel();
|
||||
if (!model)
|
||||
{
|
||||
return;
|
||||
}
|
||||
model->getDirectDescendentsOf(cat_source_id, categories, items);
|
||||
|
||||
LLInventoryObject::const_object_list_t link_array;
|
||||
|
||||
|
|
|
|||
|
|
@ -378,7 +378,10 @@ public:
|
|||
static void staticFolderOptionsMenu();
|
||||
|
||||
protected:
|
||||
void outfitFolderCreatedCallback(LLUUID cat_source_id, LLUUID cat_dest_id, LLPointer<LLInventoryCallback> cb);
|
||||
static void outfitFolderCreatedCallback(LLUUID cat_source_id,
|
||||
LLUUID cat_dest_id,
|
||||
LLPointer<LLInventoryCallback> cb,
|
||||
LLHandle<LLInventoryPanel> inventory_panel);
|
||||
void callback_pasteFromClipboard(const LLSD& notification, const LLSD& response);
|
||||
void perform_pasteFromClipboard();
|
||||
void gatherMessage(std::string& message, S32 depth, LLError::ELevel log_level);
|
||||
|
|
|
|||
Loading…
Reference in New Issue