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 + + Comment + When enabled, posestand will lock the avatar to the ground. + Persist + 1 + Type + Boolean + Value + 0 + 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 @@ + + -