summaryrefslogtreecommitdiff
path: root/indra/newview/llavataractions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llavataractions.cpp')
-rwxr-xr-xindra/newview/llavataractions.cpp32
1 files changed, 26 insertions, 6 deletions
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 10fd6b739e..2f331bdab1 100755
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -302,6 +302,26 @@ void LLAvatarActions::startConference(const uuid_vec_t& ids)
make_ui_sound("UISndStartIM");
}
+static const char* get_profile_floater_name(const LLUUID& avatar_id)
+{
+ // Use different floater XML for our profile to be able to save its rect.
+ return avatar_id == gAgentID ? "my_profile" : "profile";
+}
+
+static const LLRect& get_preferred_profile_rect(const LLUUID& avatar_id)
+{
+ if (avatar_id == gAgentID &&
+ LLFloaterReg::getInstance(get_profile_floater_name(avatar_id))->hasSavedRect())
+ {
+ return LLRect::null; // no preference, use saved rect
+ }
+
+ // Preferred size for all residents' profiles
+ // and default size for our own profile.
+ static LLCachedControl<LLRect> profile_rect(gSavedSettings, "WebProfileRect");
+ return profile_rect;
+}
+
static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarName& av_name)
{
std::string username = av_name.mUsername;
@@ -315,14 +335,13 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa
// PROFILES: open in webkit window
const bool show_chrome = false;
- static LLCachedControl<LLRect> profile_rect(gSavedSettings, "WebProfileRect");
LLFloaterWebContent::Params p;
p.url(url).
id(agent_id.asString()).
show_chrome(show_chrome).
window_class("profile").
- preferred_media_size(profile_rect);
- LLFloaterReg::showInstance("profile", p);
+ preferred_media_size(get_preferred_profile_rect(agent_id));
+ LLFloaterReg::showInstance(get_profile_floater_name(agent_id), p);
}
// static
@@ -339,14 +358,15 @@ bool LLAvatarActions::profileVisible(const LLUUID& id)
{
LLSD sd;
sd["id"] = id;
- LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("profile", sd));
+ LLFloater* browser = getProfileFloater(id);
return browser && browser->isShown();
}
//static
LLFloater* LLAvatarActions::getProfileFloater(const LLUUID& id)
{
- LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("profile", LLSD().with("id", id)));
+ LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*>
+ (LLFloaterReg::findInstance(get_profile_floater_name(id), LLSD().with("id", id)));
return browser;
}
@@ -355,7 +375,7 @@ void LLAvatarActions::hideProfile(const LLUUID& id)
{
LLSD sd;
sd["id"] = id;
- LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("profile", sd));
+ LLFloater* browser = getProfileFloater(id);
if (browser)
{
browser->closeFloater();