diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 2635bcdd67..4dccabfcfc 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -20084,5 +20084,16 @@ Change of this parameter will affect the layout of buttons in notification toast
Value
+ FSPoseStandLock
+
diff --git a/indra/newview/fsfloaterposestand.cpp b/indra/newview/fsfloaterposestand.cpp
index e7209ea57d..05273fe7a1 100644
--- a/indra/newview/fsfloaterposestand.cpp
+++ b/indra/newview/fsfloaterposestand.cpp
@@ -14,12 +14,16 @@
#include "fsfloaterposestand.h"
#include "fspose.h"
+#include "llagent.h"
+#include "llvoavatarself.h"
#include "llsdserialize.h"
#include "lltrans.h"
+#include "llviewercontrol.h"
FSFloaterPoseStand::FSFloaterPoseStand(const LLSD& key)
: LLFloater(key),
- mComboPose(NULL)
+ mComboPose(NULL),
+ mPoseStandLock(false)
{
}
@@ -40,12 +44,21 @@ BOOL FSFloaterPoseStand::postBuild()
// virtual
void FSFloaterPoseStand::onOpen(const LLSD& key)
{
+ if (gSavedSettings.getBOOL("FSPoseStandLock") && !gAgentAvatarp->isSitting() && isAgentAvatarValid())
+ {
+ gAgent.sitDown();
+ mPoseStandLock = true;
+ }
+ gAgentAvatarp->setIsEditingAppearance(TRUE);
onCommitCombo();
}
// virtual
void FSFloaterPoseStand::onClose(bool app_quitting)
{
+ if (mPoseStandLock == true && gAgentAvatarp->isSitting() && isAgentAvatarValid())
+ gAgent.standUp();
+ gAgentAvatarp->setIsEditingAppearance(FALSE);
FSPose::getInstance()->stopPose();
}
diff --git a/indra/newview/fsfloaterposestand.h b/indra/newview/fsfloaterposestand.h
index d538062d09..14f07dda3c 100644
--- a/indra/newview/fsfloaterposestand.h
+++ b/indra/newview/fsfloaterposestand.h
@@ -31,6 +31,7 @@ private:
void loadPoses();
void onCommitCombo();
+ bool mPoseStandLock;
LLComboBox* mComboPose;
};
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 030613aadc..f8fbe77d32 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -655,7 +655,8 @@ public:
// True if we are currently in appearance editing mode. Often but
// not always the same as isUsingLocalAppearance().
/*virtual*/ BOOL isEditingAppearance() const { return mIsEditingAppearance; }
-
+ void setIsEditingAppearance(BOOL editing) { mIsEditingAppearance = editing; } // for Built-in Posestand
+
// FIXME review isUsingLocalAppearance uses, some should be isEditing instead.
private:
diff --git a/indra/newview/skins/default/xui/en/floater_fs_posestand.xml b/indra/newview/skins/default/xui/en/floater_fs_posestand.xml
index 9f5158bbd6..7e52c300d9 100644
--- a/indra/newview/skins/default/xui/en/floater_fs_posestand.xml
+++ b/indra/newview/skins/default/xui/en/floater_fs_posestand.xml
@@ -1,7 +1,7 @@
+
+
-