diff --git a/indra/newview/fsfloaterposer.cpp b/indra/newview/fsfloaterposer.cpp index b90705a31d..dd59d39637 100644 --- a/indra/newview/fsfloaterposer.cpp +++ b/indra/newview/fsfloaterposer.cpp @@ -238,7 +238,7 @@ void FSFloaterPoser::onClose(bool app_quitting) gSavedSettings.setBOOL(POSER_ADVANCEDWINDOWSTATE_SAVE_KEY, mToggleAdvancedPanelBtn->getValue().asBoolean()); if (gSavedSettings.getBOOL(POSER_STOPPOSINGWHENCLOSED_SAVE_KEY)) - stopPosingSelf(); + stopPosingAllAvatars(); LLFloater::onClose(app_quitting); } @@ -892,20 +892,24 @@ void FSFloaterPoser::startPosingSelf() onAvatarSelect(); } -void FSFloaterPoser::stopPosingSelf() +void FSFloaterPoser::stopPosingAllAvatars() { if (!gAgentAvatarp || gAgentAvatarp.isNull()) return; - LLVOAvatar* avatar = getAvatarByUuid(gAgentAvatarp->getID()); - if (!avatar) - return; + for (auto listItem : mAvatarSelectionScrollList->getAllData()) + { + LLScrollListCell* cell = listItem->getColumn(COL_UUID); + if (!cell) + continue; - bool arePosingSelected = mPoserAnimator.isPosingAvatar(avatar); - if (!arePosingSelected) - return; + LLUUID selectedAvatarId = cell->getValue().asUUID(); + LLVOAvatar* listAvatar = getAvatarByUuid(selectedAvatarId); + + if (mPoserAnimator.isPosingAvatar(listAvatar)) + mPoserAnimator.stopPosingAvatar(listAvatar); + } - mPoserAnimator.stopPosingAvatar(avatar); onAvatarSelect(); } @@ -2074,7 +2078,7 @@ void FSFloaterPoser::onAvatarsRefresh() LLAvatarName av_name; std::string animeshName = getControlAvatarName(avatar); if (animeshName.empty()) - animeshName = avatar->getFullname(); + continue; LLSD row; row["columns"][COL_ICON]["column"] = "icon"; @@ -2109,6 +2113,9 @@ std::string FSFloaterPoser::getControlAvatarName(const LLControlAvatar* avatar) if (attachedItem) return attachedItem->getName(); + if (rootEditObject->permYouOwner()) + return avatar->getFullname(); + return ""; } @@ -2146,24 +2153,6 @@ void FSFloaterPoser::setSavePosesButtonText(bool setAsSaveDiff) setAsSaveDiff ? mSavePosesBtn->setLabel("Save Diff") : mSavePosesBtn->setLabel("Save Pose"); } -bool FSFloaterPoser::posingAnyoneOnScrollList() -{ - for (auto listItem : mAvatarSelectionScrollList->getAllData()) - { - LLScrollListCell* cell = listItem->getColumn(COL_UUID); - if (!cell) - continue; - - LLUUID selectedAvatarId = cell->getValue().asUUID(); - LLVOAvatar* listAvatar = getAvatarByUuid(selectedAvatarId); - - if (mPoserAnimator.isPosingAvatar(listAvatar)) - return true; - } - - return false; -} - void FSFloaterPoser::addBoldToScrollList(LLScrollListCtrl* list, LLVOAvatar* avatar) { if (!avatar) diff --git a/indra/newview/fsfloaterposer.h b/indra/newview/fsfloaterposer.h index f847fb587a..163d90f7a5 100644 --- a/indra/newview/fsfloaterposer.h +++ b/indra/newview/fsfloaterposer.h @@ -236,7 +236,7 @@ class FSFloaterPoser : public LLFloater void enableOrDisableRedoButton(); void onPoseStartStop(); void startPosingSelf(); - void stopPosingSelf(); + void stopPosingAllAvatars(); void onLimbTrackballChanged(); void onYawPitchRollSliderChanged(); void onAvatarPositionSet(); @@ -328,11 +328,6 @@ class FSFloaterPoser : public LLFloater /// Whether to indicate a diff will be saved, instead of a pose. void setSavePosesButtonText(bool setAsSaveDiff); - /// - /// Gets whether any avatar know by the UI is being posed. - /// - bool posingAnyoneOnScrollList(); - /// /// Applies the appropriate font-face (such as bold) to the text of the supplied list, to indicate use. /// diff --git a/indra/newview/skins/default/xui/en/floater_fs_poser.xml b/indra/newview/skins/default/xui/en/floater_fs_poser.xml index b10ca485d1..f4234960e1 100644 --- a/indra/newview/skins/default/xui/en/floater_fs_poser.xml +++ b/indra/newview/skins/default/xui/en/floater_fs_poser.xml @@ -923,7 +923,7 @@ width="403"> layout="topleft" image_overlay="Inv_TrashOpen" image_unselected="Toolbar_Middle_Off" - name="refresh_avatars" + name="poser_joint_reset" tool_tip="Double click to reset all selected body parts to when you first started posing" width="18" top_delta="0"