PATH-764,PATH-765: Adding in a context menu option on right-click of an object to show in the linksets floater if all objects are non-characters, or to show in the characters floater if all objects are characters.
parent
1ca92d37dd
commit
328322436c
|
|
@ -74,9 +74,10 @@ BOOL LLFloaterPathfindingCharacters::isPhysicsCapsuleEnabled(LLUUID& id, LLVecto
|
|||
return (isShowPhysicsCapsule() && getCapsuleRenderData(pos, rot ));
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingCharacters::openCharactersViewer()
|
||||
void LLFloaterPathfindingCharacters::openCharactersWithSelectedObjects()
|
||||
{
|
||||
LLFloaterReg::toggleInstanceOrBringToFront("pathfinding_characters");
|
||||
LLFloaterPathfindingCharacters *charactersFloater = LLFloaterReg::getTypedInstance<LLFloaterPathfindingCharacters>("pathfinding_characters");
|
||||
charactersFloater->showFloaterWithSelectionObjects();
|
||||
}
|
||||
|
||||
LLHandle<LLFloaterPathfindingCharacters> LLFloaterPathfindingCharacters::getInstanceHandle()
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public:
|
|||
|
||||
BOOL isPhysicsCapsuleEnabled(LLUUID& id, LLVector3& pos, LLQuaternion& rot ) const;
|
||||
|
||||
static void openCharactersViewer();
|
||||
static void openCharactersWithSelectedObjects();
|
||||
static LLHandle<LLFloaterPathfindingCharacters> getInstanceHandle();
|
||||
|
||||
protected:
|
||||
|
|
|
|||
|
|
@ -60,9 +60,10 @@
|
|||
// LLFloaterPathfindingLinksets
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void LLFloaterPathfindingLinksets::openLinksetsEditor()
|
||||
void LLFloaterPathfindingLinksets::openLinksetsWithSelectedObjects()
|
||||
{
|
||||
LLFloaterReg::toggleInstanceOrBringToFront("pathfinding_linksets");
|
||||
LLFloaterPathfindingLinksets *linksetsFloater = LLFloaterReg::getTypedInstance<LLFloaterPathfindingLinksets>("pathfinding_linksets");
|
||||
linksetsFloater->showFloaterWithSelectionObjects();
|
||||
}
|
||||
|
||||
LLFloaterPathfindingLinksets::LLFloaterPathfindingLinksets(const LLSD& pSeed)
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class LLVector3;
|
|||
class LLFloaterPathfindingLinksets : public LLFloaterPathfindingObjects
|
||||
{
|
||||
public:
|
||||
static void openLinksetsEditor();
|
||||
static void openLinksetsWithSelectedObjects();
|
||||
|
||||
protected:
|
||||
friend class LLFloaterReg;
|
||||
|
|
|
|||
|
|
@ -173,6 +173,8 @@ LLFloaterPathfindingObjects::LLFloaterPathfindingObjects(const LLSD &pSeed)
|
|||
mMessagingRequestId(0U),
|
||||
mObjectList(),
|
||||
mObjectsSelection(),
|
||||
mHasObjectsToBeSelected(false),
|
||||
mObjectsToBeSelected(),
|
||||
mSelectionUpdateSlot(),
|
||||
mRegionBoundaryCrossingSlot()
|
||||
{
|
||||
|
|
@ -318,17 +320,19 @@ void LLFloaterPathfindingObjects::handleUpdateObjectList(LLPathfindingManager::r
|
|||
|
||||
void LLFloaterPathfindingObjects::rebuildObjectsScrollList()
|
||||
{
|
||||
std::vector<LLScrollListItem*> selectedItems = mObjectsScrollList->getAllSelected();
|
||||
int numSelectedItems = selectedItems.size();
|
||||
uuid_vec_t selectedUUIDs;
|
||||
if (numSelectedItems > 0)
|
||||
if (!mHasObjectsToBeSelected)
|
||||
{
|
||||
selectedUUIDs.reserve(selectedItems.size());
|
||||
for (std::vector<LLScrollListItem*>::const_iterator itemIter = selectedItems.begin();
|
||||
itemIter != selectedItems.end(); ++itemIter)
|
||||
std::vector<LLScrollListItem*> selectedItems = mObjectsScrollList->getAllSelected();
|
||||
int numSelectedItems = selectedItems.size();
|
||||
if (numSelectedItems > 0)
|
||||
{
|
||||
const LLScrollListItem *listItem = *itemIter;
|
||||
selectedUUIDs.push_back(listItem->getUUID());
|
||||
mObjectsToBeSelected.reserve(selectedItems.size());
|
||||
for (std::vector<LLScrollListItem*>::const_iterator itemIter = selectedItems.begin();
|
||||
itemIter != selectedItems.end(); ++itemIter)
|
||||
{
|
||||
const LLScrollListItem *listItem = *itemIter;
|
||||
mObjectsToBeSelected.push_back(listItem->getUUID());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -346,8 +350,19 @@ void LLFloaterPathfindingObjects::rebuildObjectsScrollList()
|
|||
}
|
||||
}
|
||||
|
||||
mObjectsScrollList->selectMultiple(selectedUUIDs);
|
||||
mObjectsScrollList->setScrollPos(origScrollPosition);
|
||||
mObjectsScrollList->selectMultiple(mObjectsToBeSelected);
|
||||
if (mHasObjectsToBeSelected)
|
||||
{
|
||||
mObjectsScrollList->scrollToShowSelected();
|
||||
}
|
||||
else
|
||||
{
|
||||
mObjectsScrollList->setScrollPos(origScrollPosition);
|
||||
}
|
||||
|
||||
mObjectsToBeSelected.clear();
|
||||
mHasObjectsToBeSelected = false;
|
||||
|
||||
updateControlsOnScrollListChange();
|
||||
}
|
||||
|
||||
|
|
@ -401,6 +416,44 @@ S32 LLFloaterPathfindingObjects::getBeaconWidth() const
|
|||
return DEFAULT_BEACON_WIDTH;
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingObjects::showFloaterWithSelectionObjects()
|
||||
{
|
||||
mObjectsToBeSelected.clear();
|
||||
|
||||
LLObjectSelectionHandle selectedObjectsHandle = LLSelectMgr::getInstance()->getSelection();
|
||||
if (selectedObjectsHandle.notNull())
|
||||
{
|
||||
LLObjectSelection *selectedObjects = selectedObjectsHandle.get();
|
||||
if (!selectedObjects->isEmpty())
|
||||
{
|
||||
for (LLObjectSelection::valid_iterator objectIter = selectedObjects->valid_begin();
|
||||
objectIter != selectedObjects->valid_end(); ++objectIter)
|
||||
{
|
||||
LLSelectNode *object = *objectIter;
|
||||
LLViewerObject *viewerObject = object->getObject();
|
||||
mObjectsToBeSelected.push_back(viewerObject->getID());
|
||||
}
|
||||
}
|
||||
}
|
||||
mHasObjectsToBeSelected = true;
|
||||
|
||||
if (!isShown())
|
||||
{
|
||||
openFloater();
|
||||
setVisibleAndFrontmost();
|
||||
}
|
||||
else
|
||||
{
|
||||
rebuildObjectsScrollList();
|
||||
if (isMinimized())
|
||||
{
|
||||
setMinimized(FALSE);
|
||||
}
|
||||
setVisibleAndFrontmost();
|
||||
}
|
||||
setFocus(TRUE);
|
||||
}
|
||||
|
||||
BOOL LLFloaterPathfindingObjects::isShowBeacons() const
|
||||
{
|
||||
return mShowBeaconCheckBox->get();
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
#include "llpathfindingobject.h"
|
||||
#include "llpathfindingobjectlist.h"
|
||||
#include "llselectmgr.h"
|
||||
#include "lluuid.h"
|
||||
#include "v4color.h"
|
||||
|
||||
class LLAvatarName;
|
||||
|
|
@ -90,6 +91,8 @@ protected:
|
|||
virtual const LLColor4 &getBeaconTextColor() const;
|
||||
virtual S32 getBeaconWidth() const;
|
||||
|
||||
void showFloaterWithSelectionObjects();
|
||||
|
||||
BOOL isShowBeacons() const;
|
||||
void clearAllObjects();
|
||||
void selectAllObjects();
|
||||
|
|
@ -158,6 +161,9 @@ private:
|
|||
|
||||
LLObjectSelectionHandle mObjectsSelection;
|
||||
|
||||
bool mHasObjectsToBeSelected;
|
||||
uuid_vec_t mObjectsToBeSelected;
|
||||
|
||||
boost::signals2::connection mSelectionUpdateSlot;
|
||||
boost::signals2::connection mRegionBoundaryCrossingSlot;
|
||||
LLAgent::god_level_change_slot_t mGodLevelChangeSlot;
|
||||
|
|
|
|||
|
|
@ -60,6 +60,8 @@
|
|||
#include "llfloatergodtools.h"
|
||||
#include "llfloaterinventory.h"
|
||||
#include "llfloaterland.h"
|
||||
#include "llfloaterpathfindingcharacters.h"
|
||||
#include "llfloaterpathfindinglinksets.h"
|
||||
#include "llfloaterpay.h"
|
||||
#include "llfloaterreporter.h"
|
||||
#include "llfloatersearch.h"
|
||||
|
|
@ -2735,6 +2737,16 @@ bool enable_object_build()
|
|||
return !enable_object_edit();
|
||||
}
|
||||
|
||||
bool enable_object_select_in_pathfinding_linksets()
|
||||
{
|
||||
return LLSelectMgr::getInstance()->selectGetNonCharacter();
|
||||
}
|
||||
|
||||
bool enable_object_select_in_pathfinding_characters()
|
||||
{
|
||||
return LLSelectMgr::getInstance()->selectGetCharacter();
|
||||
}
|
||||
|
||||
class LLSelfRemoveAllAttachments : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
|
|
@ -8485,6 +8497,10 @@ void initialize_menus()
|
|||
enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar));
|
||||
enable.add("EnableEdit", boost::bind(&enable_object_edit));
|
||||
enable.add("VisibleBuild", boost::bind(&enable_object_build));
|
||||
commit.add("Pathfinding.Linksets.Select", boost::bind(&LLFloaterPathfindingLinksets::openLinksetsWithSelectedObjects));
|
||||
enable.add("EnableSelectInPathfindingLinksets", boost::bind(&enable_object_select_in_pathfinding_linksets));
|
||||
commit.add("Pathfinding.Characters.Select", boost::bind(&LLFloaterPathfindingCharacters::openCharactersWithSelectedObjects));
|
||||
enable.add("EnableSelectInPathfindingCharacters", boost::bind(&enable_object_select_in_pathfinding_characters));
|
||||
|
||||
view_listener_t::addMenu(new LLFloaterVisible(), "FloaterVisible");
|
||||
view_listener_t::addMenu(new LLShowSidetrayPanel(), "ShowSidetrayPanel");
|
||||
|
|
|
|||
|
|
@ -1,179 +1,199 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<context_menu
|
||||
layout="topleft"
|
||||
name="Object Pie">
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Touch"
|
||||
name="Object Touch">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Touch" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableTouch"
|
||||
name="EnableTouch"
|
||||
parameter="Touch" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Edit"
|
||||
name="Edit...">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Edit" />
|
||||
layout="topleft"
|
||||
name="Object Pie">
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Touch"
|
||||
name="Object Touch">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Touch" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableEdit"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
function="Object.EnableTouch"
|
||||
name="EnableTouch"
|
||||
parameter="Touch" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Edit"
|
||||
name="Edit...">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Edit" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableEdit"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Build"
|
||||
name="Build">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Build" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableEdit"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Open"
|
||||
name="Open">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Open" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableOpen" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Sit Here"
|
||||
name="Object Sit">
|
||||
<menu_item_call.on_click
|
||||
function="Object.SitOrStand" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableSit" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Stand Up"
|
||||
name="Object Stand Up">
|
||||
<menu_item_call.on_click
|
||||
function="Object.SitOrStand" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableStandUp" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Object Profile"
|
||||
name="Object Inspect">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Inspect" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableInspect" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Zoom In"
|
||||
name="Zoom In">
|
||||
<menu_item_call.on_click
|
||||
function="Object.ZoomIn" />
|
||||
function="Object.Build" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableEdit"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator layout="topleft" />
|
||||
<context_menu
|
||||
label="Put On"
|
||||
name="Put On" >
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Wear"
|
||||
name="Wear">
|
||||
<menu_item_call.on_click
|
||||
function="Object.AttachToAvatar" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableWear" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Add"
|
||||
name="Add">
|
||||
<menu_item_call.on_click
|
||||
function="Object.AttachAddToAvatar" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableWear" />
|
||||
</menu_item_call>
|
||||
<context_menu
|
||||
label="Attach"
|
||||
name="Object Attach" />
|
||||
<context_menu
|
||||
label="Attach HUD"
|
||||
name="Object Attach HUD" />
|
||||
</context_menu>
|
||||
<context_menu
|
||||
label="Manage"
|
||||
name="Remove">
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Report Abuse"
|
||||
name="Report Abuse...">
|
||||
<menu_item_call.on_click
|
||||
function="Object.ReportAbuse" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableReportAbuse" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Block"
|
||||
name="Object Mute">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Mute" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableMute" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Return"
|
||||
name="Return...">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Return" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableReturn" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
<menu_item_separator layout="topleft" />
|
||||
<menu_item_call
|
||||
label="Take"
|
||||
layout="topleft"
|
||||
name="Pie Object Take">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Take"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Object.VisibleTake"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Take Copy"
|
||||
name="Take Copy">
|
||||
<menu_item_call.on_click
|
||||
function="Tools.TakeCopy" />
|
||||
<menu_item_call.on_enable
|
||||
function="Tools.EnableTakeCopy" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Pay"
|
||||
name="Pay...">
|
||||
<menu_item_call.on_click
|
||||
function="PayObject" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnablePayObject" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Buy"
|
||||
name="Buy...">
|
||||
label="Show in linksets"
|
||||
name="show_in_linksets">
|
||||
<menu_item_call.on_click
|
||||
function="Pathfinding.Linksets.Select" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableSelectInPathfindingLinksets"/>
|
||||
<menu_item_call.on_visible
|
||||
function="EnableSelectInPathfindingLinksets"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Show in characters"
|
||||
name="show_in_characters">
|
||||
<menu_item_call.on_click
|
||||
function="Pathfinding.Characters.Select" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableSelectInPathfindingCharacters"/>
|
||||
<menu_item_call.on_visible
|
||||
function="EnableSelectInPathfindingCharacters"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Open"
|
||||
name="Open">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Open" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableOpen" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Sit Here"
|
||||
name="Object Sit">
|
||||
<menu_item_call.on_click
|
||||
function="Object.SitOrStand" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableSit" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Stand Up"
|
||||
name="Object Stand Up">
|
||||
<menu_item_call.on_click
|
||||
function="Object.SitOrStand" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableStandUp" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Object Profile"
|
||||
name="Object Inspect">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Inspect" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableInspect" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Zoom In"
|
||||
name="Zoom In">
|
||||
<menu_item_call.on_click
|
||||
function="Object.ZoomIn" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator layout="topleft" />
|
||||
<context_menu
|
||||
label="Put On"
|
||||
name="Put On" >
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Wear"
|
||||
name="Wear">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Buy" />
|
||||
function="Object.AttachToAvatar" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableBuy" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Delete"
|
||||
name="Delete">
|
||||
function="Object.EnableWear" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Add"
|
||||
name="Add">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Delete" />
|
||||
function="Object.AttachAddToAvatar" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableDelete" />
|
||||
function="Object.EnableWear" />
|
||||
</menu_item_call>
|
||||
<context_menu
|
||||
label="Attach"
|
||||
name="Object Attach" />
|
||||
<context_menu
|
||||
label="Attach HUD"
|
||||
name="Object Attach HUD" />
|
||||
</context_menu>
|
||||
<context_menu
|
||||
label="Manage"
|
||||
name="Remove">
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Report Abuse"
|
||||
name="Report Abuse...">
|
||||
<menu_item_call.on_click
|
||||
function="Object.ReportAbuse" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableReportAbuse" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Block"
|
||||
name="Object Mute">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Mute" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableMute" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Return"
|
||||
name="Return...">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Return" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableReturn" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
<menu_item_separator layout="topleft" />
|
||||
<menu_item_call
|
||||
label="Take"
|
||||
layout="topleft"
|
||||
name="Pie Object Take">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Take"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Object.VisibleTake"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Take Copy"
|
||||
name="Take Copy">
|
||||
<menu_item_call.on_click
|
||||
function="Tools.TakeCopy" />
|
||||
<menu_item_call.on_enable
|
||||
function="Tools.EnableTakeCopy" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Pay"
|
||||
name="Pay...">
|
||||
<menu_item_call.on_click
|
||||
function="PayObject" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnablePayObject" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Buy"
|
||||
name="Buy...">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Buy" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableBuy" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Delete"
|
||||
name="Delete">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Delete" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableDelete" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
|
|
|
|||
Loading…
Reference in New Issue