summaryrefslogtreecommitdiff
path: root/indra/newview/llfavoritesbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfavoritesbar.cpp')
-rw-r--r--indra/newview/llfavoritesbar.cpp78
1 files changed, 57 insertions, 21 deletions
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 007c6b2c4c..76ece9d165 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -66,29 +66,46 @@ const S32 DROP_DOWN_MENU_WIDTH = 250;
* Helper for LLFavoriteLandmarkButton and LLFavoriteLandmarkMenuItem.
* Performing requests for SLURL for given Landmark ID
*/
-class LLSLURLGetter
+class LLLandmarkInfoGetter
{
public:
- LLSLURLGetter()
- : mLandmarkID(LLUUID::null)
- , mSLURL("(Loading...)")
- , mLoaded(false) {}
+ LLLandmarkInfoGetter()
+ : mLandmarkID(LLUUID::null),
+ mName("(Loading...)"),
+ mPosX(0),
+ mPosY(0),
+ mLoaded(false)
+ {}
void setLandmarkID(const LLUUID& id) { mLandmarkID = id; }
const LLUUID& getLandmarkId() const { return mLandmarkID; }
- const std::string& getSLURL()
+ const std::string& getName()
{
if(!mLoaded)
- requestSLURL();
+ requestNameAndPos();
- return mSLURL;
+ return mName;
+ }
+
+ S32 getPosX()
+ {
+ if (!mLoaded)
+ requestNameAndPos();
+ return mPosX;
+ }
+
+ S32 getPosY()
+ {
+ if (!mLoaded)
+ requestNameAndPos();
+ return mPosY;
}
private:
/**
* Requests landmark data from server.
*/
- void requestSLURL()
+ void requestNameAndPos()
{
if (mLandmarkID.isNull())
return;
@@ -96,19 +113,23 @@ private:
LLVector3d g_pos;
if(LLLandmarkActions::getLandmarkGlobalPos(mLandmarkID, g_pos))
{
- LLLandmarkActions::getSLURLfromPosGlobal(g_pos,
- boost::bind(&LLSLURLGetter::landmarkNameCallback, this, _1), false);
+ LLLandmarkActions::getRegionNameAndCoordsFromPosGlobal(g_pos,
+ boost::bind(&LLLandmarkInfoGetter::landmarkNameCallback, this, _1, _2, _3));
}
}
- void landmarkNameCallback(const std::string& name)
+ void landmarkNameCallback(const std::string& name, S32 x, S32 y)
{
- mSLURL = name;
+ mPosX = x;
+ mPosY = y;
+ mName = name;
mLoaded = true;
}
LLUUID mLandmarkID;
- std::string mSLURL;
+ std::string mName;
+ S32 mPosX;
+ S32 mPosY;
bool mLoaded;
};
@@ -125,7 +146,15 @@ public:
BOOL handleToolTip(S32 x, S32 y, MASK mask)
{
- LLToolTipMgr::instance().show(mUrlGetter.getSLURL());
+ std::string region_name = mLandmarkInfoGetter.getName();
+
+ if (!region_name.empty())
+ {
+ LLToolTip::Params params;
+ params.message = llformat("%s\n%s (%d, %d)", getLabelSelected().c_str(), region_name.c_str(), mLandmarkInfoGetter.getPosX(), mLandmarkInfoGetter.getPosY());
+ params.sticky_rect = calcScreenRect();
+ LLToolTipMgr::instance().show(params);
+ }
return TRUE;
}
@@ -141,8 +170,8 @@ public:
return LLButton::handleHover(x, y, mask);
}
- void setLandmarkID(const LLUUID& id){ mUrlGetter.setLandmarkID(id); }
- const LLUUID& getLandmarkId() const { return mUrlGetter.getLandmarkId(); }
+ void setLandmarkID(const LLUUID& id){ mLandmarkInfoGetter.setLandmarkID(id); }
+ const LLUUID& getLandmarkId() const { return mLandmarkInfoGetter.getLandmarkId(); }
void onMouseEnter(S32 x, S32 y, MASK mask)
{
@@ -161,7 +190,7 @@ protected:
friend class LLUICtrlFactory;
private:
- LLSLURLGetter mUrlGetter;
+ LLLandmarkInfoGetter mLandmarkInfoGetter;
};
/**
@@ -176,11 +205,18 @@ class LLFavoriteLandmarkMenuItem : public LLMenuItemCallGL
public:
BOOL handleToolTip(S32 x, S32 y, MASK mask)
{
- LLToolTipMgr::instance().show(mUrlGetter.getSLURL());
+ std::string region_name = mLandmarkInfoGetter.getName();
+ if (!region_name.empty())
+ {
+ LLToolTip::Params params;
+ params.message = llformat("%s\n%s (%d, %d)", getLabel().c_str(), region_name.c_str(), mLandmarkInfoGetter.getPosX(), mLandmarkInfoGetter.getPosY());
+ params.sticky_rect = calcScreenRect();
+ LLToolTipMgr::instance().show(params);
+ }
return TRUE;
}
- void setLandmarkID(const LLUUID& id){ mUrlGetter.setLandmarkID(id); }
+ void setLandmarkID(const LLUUID& id){ mLandmarkInfoGetter.setLandmarkID(id); }
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask)
{
@@ -212,7 +248,7 @@ protected:
friend class LLUICtrlFactory;
private:
- LLSLURLGetter mUrlGetter;
+ LLLandmarkInfoGetter mLandmarkInfoGetter;
LLFavoritesBarCtrl* fb;
};