FIRE-9495: Make posestand lock toggle behave as expected.

Cinders 2013-03-18 11:48:21 -06:00
parent 4170230132
commit 8dd355de0b
3 changed files with 37 additions and 5 deletions

View File

@ -46,8 +46,7 @@ void FSFloaterPoseStand::onOpen(const LLSD& key)
{
if (gSavedSettings.getBOOL("FSPoseStandLock") && !gAgentAvatarp->isSitting() && isAgentAvatarValid())
{
gAgent.sitDown();
mPoseStandLock = true;
setLock(true);
}
gAgentAvatarp->setIsEditingAppearance(TRUE);
onCommitCombo();
@ -57,7 +56,9 @@ void FSFloaterPoseStand::onOpen(const LLSD& key)
void FSFloaterPoseStand::onClose(bool app_quitting)
{
if (mPoseStandLock == true && gAgentAvatarp->isSitting() && isAgentAvatarValid())
gAgent.standUp();
{
setLock(false);
}
gAgentAvatarp->setIsEditingAppearance(FALSE);
FSPose::getInstance()->stopPose();
}
@ -86,3 +87,16 @@ void FSFloaterPoseStand::onCommitCombo()
std::string selected_pose = mComboPose->getValue();
FSPose::getInstance()->setPose(selected_pose);
}
void FSFloaterPoseStand::setLock(bool enabled)
{
if (enabled)
{
gAgent.sitDown();
}
else
{
gAgent.standUp();
}
mPoseStandLock = enabled;
}

View File

@ -23,13 +23,13 @@ class FSFloaterPoseStand
public:
FSFloaterPoseStand(const LLSD& key);
BOOL postBuild();
void setLock(bool enabled);
void onCommitCombo();
private:
~FSFloaterPoseStand();
virtual void onOpen(const LLSD& key);
virtual void onClose(bool app_quitting);
void loadPoses();
void onCommitCombo();
bool mPoseStandLock;
LLComboBox* mComboPose;

View File

@ -86,6 +86,7 @@
#include "llfloaterreg.h"
#include "llfloatersidepanelcontainer.h"
#include "llpanelplaces.h"
#include "fsfloaterposestand.h"
#include "fsfloaterteleporthistory.h"
// Third party library includes
@ -711,6 +712,20 @@ static void handleUseStandaloneTeleportHistoryFloaterChanged()
}
}
// </FS:Ansariel> Clear places / teleport history search filter
// <FS:CR> Posestand Ground Lock
static void handleSetPoseStandLock(const LLSD& newvalue)
{
FSFloaterPoseStand* pose_stand = LLFloaterReg::findTypedInstance<FSFloaterPoseStand>("fs_posestand");
if (pose_stand)
{
pose_stand->setLock(newvalue);
pose_stand->onCommitCombo();
}
}
// </FS:CR> Posestand Ground Lock
////////////////////////////////////////////////////////////////////////////
void settings_setup_listeners()
@ -895,6 +910,9 @@ void settings_setup_listeners()
// <FS:Ansariel> Tofu's SSR
gSavedSettings.getControl("FSRenderSSR")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
// <FS:CR> Pose stand ground lock
gSavedSettings.getControl("FSPoseStandLock")->getSignal()->connect(boost::bind(&handleSetPoseStandLock, _2));
}
#if TEST_CACHED_CONTROL