summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Linden <none@none>2012-07-25 14:30:17 -0700
committerRichard Linden <none@none>2012-07-25 14:30:17 -0700
commitc4f59fd5882d8b019830292e9e5ed1d2480f73ef (patch)
tree96e4c2196676355f192d8e9296a5df1c3bafa8b8
parentdecd8a435d8fb15bab52eec9e447b176e33eb5cf (diff)
CHUI-239 FIX Viewer crash when opening object with contents
-rw-r--r--indra/newview/llfloatertools.cpp4
-rw-r--r--indra/newview/llfolderviewmodelinventory.cpp10
-rw-r--r--indra/newview/llfolderviewmodelinventory.h10
-rw-r--r--indra/newview/llinventorybridge.cpp5
-rw-r--r--indra/newview/llinventorypanel.h1
-rw-r--r--indra/newview/llpanelobjectinventory.cpp8
-rw-r--r--indra/newview/llpanelobjectinventory.h2
-rw-r--r--indra/newview/llplacesinventorybridge.cpp2
8 files changed, 21 insertions, 21 deletions
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 6978e6a430..43465d4209 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -660,8 +660,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
mBtnEdit ->setToggleState( edit_visible );
mRadioGroupEdit->setVisible( edit_visible );
- bool linked_parts = gSavedSettings.getBOOL("EditLinkedParts");
- getChildView("RenderingCost")->setVisible( !linked_parts && (edit_visible || focus_visible || move_visible) && sShowObjectCost);
+ //bool linked_parts = gSavedSettings.getBOOL("EditLinkedParts");
+ //getChildView("RenderingCost")->setVisible( !linked_parts && (edit_visible || focus_visible || move_visible) && sShowObjectCost);
mBtnLink->setVisible(edit_visible);
mBtnUnlink->setVisible(edit_visible);
diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp
index dff1e1be90..e8135496d5 100644
--- a/indra/newview/llfolderviewmodelinventory.cpp
+++ b/indra/newview/llfolderviewmodelinventory.cpp
@@ -109,7 +109,7 @@ bool LLFolderViewModelInventory::contentsReady()
void LLFolderViewModelItemInventory::requestSort()
{
LLFolderViewModelItemCommon::requestSort();
- if (mRootViewModel->getSorter().isByDate())
+ if (mRootViewModel.getSorter().isByDate())
{
// sort by date potentially affects parent folders which use a date
// derived from newest item in them
@@ -123,14 +123,14 @@ void LLFolderViewModelItemInventory::requestSort()
bool LLFolderViewModelItemInventory::potentiallyVisible()
{
return passedFilter() // we've passed the filter
- || getLastFilterGeneration() < mRootViewModel->getFilter()->getFirstSuccessGeneration() // or we don't know yet
+ || getLastFilterGeneration() < mRootViewModel.getFilter()->getFirstSuccessGeneration() // or we don't know yet
|| descendantsPassedFilter();
}
bool LLFolderViewModelItemInventory::passedFilter(S32 filter_generation)
{
- if (filter_generation < 0 && mRootViewModel)
- filter_generation = mRootViewModel->getFilter()->getFirstSuccessGeneration();
+ if (filter_generation < 0)
+ filter_generation = mRootViewModel.getFilter()->getFirstSuccessGeneration();
return mPassedFolderFilter
&& mLastFilterGeneration >= filter_generation
@@ -139,7 +139,7 @@ bool LLFolderViewModelItemInventory::passedFilter(S32 filter_generation)
bool LLFolderViewModelItemInventory::descendantsPassedFilter(S32 filter_generation)
{
- if (filter_generation < 0) filter_generation = mRootViewModel->getFilter()->getFirstSuccessGeneration();
+ if (filter_generation < 0) filter_generation = mRootViewModel.getFilter()->getFirstSuccessGeneration();
return mMostFilteredDescendantGeneration >= filter_generation;
}
diff --git a/indra/newview/llfolderviewmodelinventory.h b/indra/newview/llfolderviewmodelinventory.h
index 12a977b28b..eb2a4bfdec 100644
--- a/indra/newview/llfolderviewmodelinventory.h
+++ b/indra/newview/llfolderviewmodelinventory.h
@@ -37,13 +37,9 @@ class LLFolderViewModelItemInventory
: public LLFolderViewModelItemCommon
{
public:
- LLFolderViewModelItemInventory()
- : mRootViewModel(NULL)
+ LLFolderViewModelItemInventory(class LLFolderViewModelInventory& root_view_model)
+ : mRootViewModel(root_view_model)
{}
- void setRootViewModel(class LLFolderViewModelInventory* root_view_model)
- {
- mRootViewModel = root_view_model;
- }
virtual const LLUUID& getUUID() const = 0;
virtual time_t getCreationDate() const = 0; // UTC seconds
virtual void setCreationDate(time_t creation_date_utc) = 0;
@@ -70,7 +66,7 @@ public:
virtual LLToolDragAndDrop::ESource getDragSource() const = 0;
protected:
- class LLFolderViewModelInventory* mRootViewModel;
+ class LLFolderViewModelInventory& mRootViewModel;
};
class LLInventorySort
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index d17c25d9f3..9f1d4bdec9 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -190,7 +190,8 @@ LLInvFVBridge::LLInvFVBridge(LLInventoryPanel* inventory,
mUUID(uuid),
mRoot(root),
mInvType(LLInventoryType::IT_NONE),
- mIsLink(FALSE)
+ mIsLink(FALSE),
+ LLFolderViewModelItemInventory(inventory->getRootViewModel())
{
mInventoryPanel = inventory->getInventoryPanelHandle();
const LLInventoryObject* obj = getInventoryObject();
@@ -1158,7 +1159,6 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
if (new_listener)
{
new_listener->mInvType = inv_type;
- new_listener->setRootViewModel(view_model);
}
return new_listener;
@@ -6484,7 +6484,6 @@ LLInvFVBridge* LLRecentInventoryBridgeBuilder::createBridge(
&& actual_asset_type != LLAssetType::AT_LINK_FOLDER)
{
new_listener = new LLRecentItemsFolderBridge(inv_type, inventory, root, uuid);
- new_listener->setRootViewModel(view_model);
}
else
{
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 4fcc93b0c4..910325cdbc 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -104,6 +104,7 @@ public:
public:
LLInventoryModel* getModel() { return mInventory; }
+ LLFolderViewModelInventory& getRootViewModel() { return mInventoryViewModel; }
// LLView methods
void draw();
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 937d3bb8c5..9bd716e900 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -155,7 +155,8 @@ LLTaskInvFVBridge::LLTaskInvFVBridge(
LLPanelObjectInventory* panel,
const LLUUID& uuid,
const std::string& name,
- U32 flags):
+ U32 flags)
+: LLFolderViewModelItemInventory(panel->getRootViewModel()),
mUUID(uuid),
mName(name),
mPanel(panel),
@@ -1915,7 +1916,10 @@ void LLPanelObjectInventory::idle(void* user_data)
{
LLPanelObjectInventory* self = (LLPanelObjectInventory*)user_data;
-
+ if (self->mFolders)
+ {
+ self->mFolders->update();
+ }
if (self->mInventoryNeedsUpdate)
{
self->updateInventory();
diff --git a/indra/newview/llpanelobjectinventory.h b/indra/newview/llpanelobjectinventory.h
index 7e857f8b31..593fb43b6d 100644
--- a/indra/newview/llpanelobjectinventory.h
+++ b/indra/newview/llpanelobjectinventory.h
@@ -56,6 +56,8 @@ public:
virtual BOOL postBuild();
+ LLFolderViewModelInventory& getRootViewModel() { return mInventoryViewModel; }
+
void doToSelected(const LLSD& userdata);
void refresh();
diff --git a/indra/newview/llplacesinventorybridge.cpp b/indra/newview/llplacesinventorybridge.cpp
index af29ab7ea9..1a5f64e295 100644
--- a/indra/newview/llplacesinventorybridge.cpp
+++ b/indra/newview/llplacesinventorybridge.cpp
@@ -165,7 +165,6 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
new_listener = new LLPlacesLandmarkBridge(inv_type, inventory, root, uuid, flags);
- new_listener->setRootViewModel(view_model);
break;
case LLAssetType::AT_CATEGORY:
if (actual_asset_type == LLAssetType::AT_LINK_FOLDER)
@@ -183,7 +182,6 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
break;
}
new_listener = new LLPlacesFolderBridge(inv_type, inventory, root, uuid);
- new_listener->setRootViewModel(view_model);
break;
default:
new_listener = LLInventoryFVBridgeBuilder::createBridge(