summaryrefslogtreecommitdiff
path: root/indra/newview/llselectmgr.cpp
diff options
context:
space:
mode:
authorSteven Bennetts <steve@lindenlab.com>2007-03-06 00:37:09 +0000
committerSteven Bennetts <steve@lindenlab.com>2007-03-06 00:37:09 +0000
commit14360b815ed486c90c57b8025f8c93376ca6b6c6 (patch)
tree30707bf0bf390ebf6357325aa31e34ad8553f2ac /indra/newview/llselectmgr.cpp
parentb06b9cd30464188f68a1125db9ecc588fdf5ca71 (diff)
merge -r 58641:58711 maintenance -> release
Diffstat (limited to 'indra/newview/llselectmgr.cpp')
-rw-r--r--indra/newview/llselectmgr.cpp37
1 files changed, 23 insertions, 14 deletions
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 27cf29cee0..434d7a4492 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -2799,6 +2799,8 @@ void LLSelectMgr::selectDelete()
return;
}
+ LLObjectSelectionHandle* selection_handlep = new LLObjectSelectionHandle(getSelection());
+
if(locked_but_deleteable_object ||
no_copy_but_deleteable_object ||
!all_owned_by_you)
@@ -2815,49 +2817,49 @@ void LLSelectMgr::selectDelete()
//Locked only
gViewerWindow->alertXml( "ConfirmObjectDeleteLock",
&LLSelectMgr::confirmDelete,
- this);
+ selection_handlep);
}
else if(!locked_but_deleteable_object && no_copy_but_deleteable_object && all_owned_by_you)
{
//No Copy only
gViewerWindow->alertXml( "ConfirmObjectDeleteNoCopy",
&LLSelectMgr::confirmDelete,
- this);
+ selection_handlep);
}
else if(!locked_but_deleteable_object && !no_copy_but_deleteable_object && !all_owned_by_you)
{
//not owned only
gViewerWindow->alertXml( "ConfirmObjectDeleteNoOwn",
&LLSelectMgr::confirmDelete,
- this);
+ selection_handlep);
}
else if(locked_but_deleteable_object && no_copy_but_deleteable_object && all_owned_by_you)
{
//locked and no copy
gViewerWindow->alertXml( "ConfirmObjectDeleteLockNoCopy",
&LLSelectMgr::confirmDelete,
- this);
+ selection_handlep);
}
else if(locked_but_deleteable_object && !no_copy_but_deleteable_object && !all_owned_by_you)
{
//locked and not owned
gViewerWindow->alertXml( "ConfirmObjectDeleteLockNoOwn",
&LLSelectMgr::confirmDelete,
- this);
+ selection_handlep);
}
else if(!locked_but_deleteable_object && no_copy_but_deleteable_object && !all_owned_by_you)
{
//no copy and not owned
gViewerWindow->alertXml( "ConfirmObjectDeleteNoCopyNoOwn",
&LLSelectMgr::confirmDelete,
- this);
+ selection_handlep);
}
else
{
//locked, no copy and not owned
gViewerWindow->alertXml( "ConfirmObjectDeleteLockNoCopyNoOwn",
&LLSelectMgr::confirmDelete,
- this);
+ selection_handlep);
}
@@ -2872,8 +2874,15 @@ void LLSelectMgr::selectDelete()
// static
void LLSelectMgr::confirmDelete(S32 option, void* data)
{
- LLSelectMgr* self = (LLSelectMgr*)data;
- if(!self) return;
+ LLObjectSelectionHandle handle = *(LLObjectSelectionHandle*)data;
+ delete (LLObjectSelectionHandle*)data;
+
+ if (!handle->getObjectCount())
+ {
+ llwarns << "Nothing to delete!" << llendl;
+ return;
+ }
+
switch(option)
{
case 0:
@@ -2882,19 +2891,19 @@ void LLSelectMgr::confirmDelete(S32 option, void* data)
LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
// attempt to derez into the trash.
LLDeRezInfo* info = new LLDeRezInfo(DRD_TRASH, trash_id);
- self->sendListToRegions("DeRezObject",
+ gSelectMgr->sendListToRegions("DeRezObject",
packDeRezHeader,
packObjectLocalID,
(void*)info,
SEND_ONLY_ROOTS);
// VEFFECT: Delete Object - one effect for all deletes
- if (self->mSelectedObjects->mSelectType != SELECT_TYPE_HUD)
+ if (gSelectMgr->mSelectedObjects->mSelectType != SELECT_TYPE_HUD)
{
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)gHUDManager->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE);
- effectp->setPositionGlobal( self->getSelectionCenterGlobal() );
+ effectp->setPositionGlobal( gSelectMgr->getSelectionCenterGlobal() );
effectp->setColor(LLColor4U(gAgent.getEffectColor()));
F32 duration = 0.5f;
- duration += self->mSelectedObjects->getObjectCount() / 64.f;
+ duration += gSelectMgr->mSelectedObjects->getObjectCount() / 64.f;
effectp->setDuration(duration);
}
@@ -2902,7 +2911,7 @@ void LLSelectMgr::confirmDelete(S32 option, void* data)
// Keep track of how many objects have been deleted.
F64 obj_delete_count = gViewerStats->getStat(LLViewerStats::ST_OBJECT_DELETE_COUNT);
- obj_delete_count += self->mSelectedObjects->getObjectCount();
+ obj_delete_count += gSelectMgr->mSelectedObjects->getObjectCount();
gViewerStats->setStat(LLViewerStats::ST_OBJECT_DELETE_COUNT, obj_delete_count );
}
break;