From 4133caebe36b3433036c6b7a4301288f0f695de9 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Mon, 11 Dec 2017 19:31:36 +0200 Subject: MAINT-2177 User was able to create a landmark for remote location --- indra/newview/llpanelplaces.cpp | 22 ++++++++++++++++++++-- indra/newview/llpanelplaces.h | 4 ++++ 2 files changed, 24 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index ed942fc7fc..48dd45480e 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -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("landmark")->setEnabled(is_agent_place_info_visible && - !LLLandmarkActions::landmarkAlreadyExists()); + menu->getChild("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. diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index c3d1b9bc53..27f991c202 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -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. -- cgit v1.2.3