MAINT-2177 User was able to create a landmark for remote location

meow-7.2.2
andreykproductengine 2017-12-11 19:31:36 +02:00
parent d86616cc66
commit 4133caebe3
2 changed files with 24 additions and 2 deletions

View File

@ -395,11 +395,16 @@ void LLPanelPlaces::onOpen(const LLSD& key)
mPlaceInfoType = key_type;
mPosGlobal.setZero();
mItem = NULL;
mRegionId.setNull();
togglePlaceInfoPanel(TRUE);
if (mPlaceInfoType == AGENT_INFO_TYPE)
{
mPlaceProfile->setInfoType(LLPanelPlaceInfo::AGENT);
if (gAgent.getRegion())
{
mRegionId = gAgent.getRegion()->getRegionID();
}
}
else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE)
{
@ -472,6 +477,8 @@ void LLPanelPlaces::onOpen(const LLSD& key)
if (!parcel_mgr)
return;
mParcelLocalId = parcel_mgr->getAgentParcel()->getLocalID();
// Start using LLViewerParcelMgr for land selection if
// information about nearby land is requested.
// Otherwise stop using land selection and deselect land.
@ -828,10 +835,21 @@ void LLPanelPlaces::onOverflowButtonClicked()
{
menu = mPlaceMenu;
bool landmark_item_enabled = false;
LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();
if (is_agent_place_info_visible
&& gAgent.getRegion()
&& mRegionId == gAgent.getRegion()->getRegionID()
&& parcel_mgr
&& parcel_mgr->getAgentParcel()->getLocalID() == mParcelLocalId)
{
// Floater still shows location identical to agent's position
landmark_item_enabled = !LLLandmarkActions::landmarkAlreadyExists();
}
// Enable adding a landmark only for agent current parcel and if
// there is no landmark already pointing to that parcel in agent's inventory.
menu->getChild<LLMenuItemCallGL>("landmark")->setEnabled(is_agent_place_info_visible &&
!LLLandmarkActions::landmarkAlreadyExists());
menu->getChild<LLMenuItemCallGL>("landmark")->setEnabled(landmark_item_enabled);
// STORM-411
// Creating landmarks for remote locations is impossible.
// So hide menu item "Make a Landmark" in "Teleport History Profile" panel.

View File

@ -146,6 +146,10 @@ private:
// Information type currently shown in Place Information panel
std::string mPlaceInfoType;
// Region and parcel ids, to detect location changes in case of AGENT_INFO_TYPE
LLUUID mRegionId;
S32 mParcelLocalId;
bool isLandmarkEditModeOn;
// Holds info whether "My Landmarks" and "Teleport History" tabs have been created.