diff options
| -rw-r--r-- | indra/llaudio/llaudioengine.cpp | 2 | ||||
| -rw-r--r-- | indra/llmath/llvolume.h | 2 | ||||
| -rw-r--r-- | indra/llprimitive/llmodel.cpp | 1 | ||||
| -rw-r--r-- | indra/llprimitive/llmodel.h | 16 | ||||
| -rw-r--r-- | indra/newview/llagentcamera.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterpreference.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llinventoryfunctions.cpp | 17 | ||||
| -rw-r--r-- | indra/newview/llmodelpreview.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llmodelpreview.h | 1 | ||||
| -rw-r--r-- | indra/newview/llpaneloutfitsinventory.h | 3 | ||||
| -rw-r--r-- | indra/newview/llpanelprofileclassifieds.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/llpanelprofileclassifieds.h | 1 | ||||
| -rw-r--r-- | indra/newview/llpanelprofilepicks.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llpanelprofilepicks.h | 1 | ||||
| -rw-r--r-- | indra/newview/llsidepanelappearance.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/llsidepanelappearance.h | 2 | ||||
| -rw-r--r-- | indra/newview/llviewermenu.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_publish_classified.xml | 2 | 
18 files changed, 94 insertions, 10 deletions
| diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index a387bb23cd..ece0a12a7a 100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp @@ -398,7 +398,7 @@ void LLAudioEngine::idle()  	for (source_map::value_type& src_pair : mAllSources)  	{  		LLAudioSource *sourcep = src_pair.second; -		if (sourcep->isMuted() && sourcep->isSyncMaster() && sourcep->getPriority() > max_sm_priority) +		if (!sourcep->isMuted() && sourcep->isSyncMaster() && sourcep->getPriority() > max_sm_priority)  		{  			sync_masterp = sourcep;  			master_channelp = sync_masterp->getChannel(); diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index afed98ff36..71878b8cb6 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -1000,7 +1000,7 @@ class LLVolume : public LLRefCount  	friend class LLVolumeLODGroup;  protected: -	~LLVolume(); // use unref +	virtual ~LLVolume(); // use unref  public:  	typedef std::vector<LLVolumeFace> face_list_t; diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp index 99a5697a84..ae81f06e84 100644 --- a/indra/llprimitive/llmodel.cpp +++ b/indra/llprimitive/llmodel.cpp @@ -68,6 +68,7 @@ LLModel::~LLModel()  	{  		LLConvexDecomposition::getInstance()->deleteDecomposition(mDecompID);  	} +    mPhysics.mMesh.clear();  }  //static diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index 4505d6b3b9..040257e00e 100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -106,6 +106,8 @@ public:  		std::vector<LLVector3> mPositions;  		std::vector<LLVector3> mNormals; +        ~PhysicsMesh() {} +  		void clear()  		{  			mPositions.clear(); @@ -131,6 +133,7 @@ public:  	public:  		Decomposition() { }  		Decomposition(LLSD& data); +		~Decomposition() { }  		void fromLLSD(LLSD& data);  		LLSD asLLSD() const;  		bool hasHullList() const; @@ -365,7 +368,7 @@ class LLModelInstanceBase  {  public:  	LLPointer<LLModel> mModel; -	LLPointer<LLModel> mLOD[5]; +	LLPointer<LLModel> mLOD[LLModel::NUM_LODS];  	LLUUID mMeshID;  	LLMatrix4 mTransform; @@ -380,6 +383,15 @@ public:  		: mModel(NULL)  	{  	} + +    virtual ~LLModelInstanceBase() +    { +        mModel = NULL; +        for (int j = 0; j < LLModel::NUM_LODS; ++j) +        { +            mLOD[j] = NULL; +        } +    };  };  typedef std::vector<LLModelInstanceBase> model_instance_list; @@ -399,6 +411,8 @@ public:  	LLModelInstance(LLSD& data); +    ~LLModelInstance() {} +  	LLSD asLLSD();  }; diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 8977b145d1..0d0d6e7e46 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -1779,7 +1779,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  		head_offset.clearVec();  		F32 fixup; -		if (gAgentAvatarp->hasPelvisFixup(fixup)) +        if (gAgentAvatarp->hasPelvisFixup(fixup) && !gAgentAvatarp->isSitting())  		{  			head_offset[VZ] -= fixup;  		} diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index aa723eb3a8..6b8e2898a0 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -1016,7 +1016,6 @@ void LLFloaterPreference::onBtnCancel(const LLSD& userdata)  	if (userdata.asString() == "closeadvanced")  	{  		LLFloaterReg::hideInstance("prefs_graphics_advanced"); -		updateMaxComplexity();  	}  	else  	{ diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 4aeacae6ed..6ac8bbee76 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -2949,6 +2949,23 @@ bool get_selection_object_uuids(LLFolderView *root, uuid_vec_t& ids)  void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root, const std::string& action, BOOL user_confirm)  {  	std::set<LLFolderViewItem*> selected_items = root->getSelectionList(); +    if (selected_items.empty() +        && action != "wear" +        && action != "wear_add" +        && !isRemoveAction(action)) +    { +        // Was item removed while user was checking menu? +        // "wear" and removal exlusions are due to use of +        // getInventorySelectedUUIDs() below +        LL_WARNS("Inventory") << "Menu tried to operate on empty selection" << LL_ENDL; + +        if (("copy" == action) || ("cut" == action)) +        { +            LLClipboard::instance().reset(); +        } + +        return; +    }      // Prompt the user and check for authorization for some marketplace active listing edits  	if (user_confirm && (("delete" == action) || ("cut" == action) || ("rename" == action) || ("properties" == action) || ("task_properties" == action) || ("open" == action))) diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index ccae1030f1..ad22e84c6e 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -220,6 +220,16 @@ LLModelPreview::~LLModelPreview()          mPreviewAvatar->markDead();          mPreviewAvatar = NULL;      } + +    mUploadData.clear(); +    mTextureSet.clear(); + +    for (U32 i = 0; i < LLModel::NUM_LODS; i++) +    { +        clearModel(i); +    } +    mBaseModel.clear(); +    mBaseScene.clear();  }  void LLModelPreview::updateDimentionsAndOffsets() diff --git a/indra/newview/llmodelpreview.h b/indra/newview/llmodelpreview.h index df7320768c..d4d5d087bd 100644 --- a/indra/newview/llmodelpreview.h +++ b/indra/newview/llmodelpreview.h @@ -310,7 +310,6 @@ protected:      vv_LLVolumeFace_t mBaseModelFacesCopy;      U32 mGroup; -    std::map<LLPointer<LLModel>, U32> mObject;      // Amount of triangles in original(base) model      U32 mMaxTriangleLimit; diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h index 50d7074d4b..f9e29c0a92 100644 --- a/indra/newview/llpaneloutfitsinventory.h +++ b/indra/newview/llpaneloutfitsinventory.h @@ -61,6 +61,8 @@ public:  	void openApearanceTab(const std::string& tab_name); +    bool isCOFPanelActive() const; +  protected:  	void updateVerbs(); @@ -73,7 +75,6 @@ private:  protected:  	void 					initTabPanels();  	void 					onTabChange(); -	bool 					isCOFPanelActive() const;  	bool 					isOutfitsListPanelActive() const;  	bool 					isOutfitsGalleryPanelActive() const; diff --git a/indra/newview/llpanelprofileclassifieds.cpp b/indra/newview/llpanelprofileclassifieds.cpp index 3fbaad4dee..307935f45f 100644 --- a/indra/newview/llpanelprofileclassifieds.cpp +++ b/indra/newview/llpanelprofileclassifieds.cpp @@ -650,6 +650,8 @@ BOOL LLPanelProfileClassified::postBuild()      mSnapshotCtrl->setOnSelectCallback(boost::bind(&LLPanelProfileClassified::onTextureSelected, this));      mSnapshotCtrl->setMouseEnterCallback(boost::bind(&LLPanelProfileClassified::onTexturePickerMouseEnter, this));      mSnapshotCtrl->setMouseLeaveCallback(boost::bind(&LLPanelProfileClassified::onTexturePickerMouseLeave, this)); +    mSnapshotCtrl->setAllowLocalTexture(FALSE); +    mSnapshotCtrl->setBakeTextureEnabled(FALSE);      mEditIcon->setVisible(false);      mMapButton->setCommitCallback(boost::bind(&LLPanelProfileClassified::onMapClick, this)); @@ -667,7 +669,7 @@ BOOL LLPanelProfileClassified::postBuild()          mCategoryCombo->add(LLTrans::getString(iter->second));      } -    mClassifiedNameEdit->setKeystrokeCallback(boost::bind(&LLPanelProfileClassified::onChange, this), NULL); +    mClassifiedNameEdit->setKeystrokeCallback(boost::bind(&LLPanelProfileClassified::onTitleChange, this), NULL);      mClassifiedDescEdit->setKeystrokeCallback(boost::bind(&LLPanelProfileClassified::onChange, this));      mCategoryCombo->setCommitCallback(boost::bind(&LLPanelProfileClassified::onChange, this));      mContentTypeCombo->setCommitCallback(boost::bind(&LLPanelProfileClassified::onChange, this)); @@ -935,6 +937,8 @@ void LLPanelProfileClassified::onCancelClick()      }      else      { +        updateTabLabel(mClassifiedNameText->getValue()); +          // Reload data to undo changes to forms          LLAvatarPropertiesProcessor::getInstance()->sendClassifiedInfoRequest(getClassifiedId());      } @@ -955,7 +959,7 @@ void LLPanelProfileClassified::onSaveClick()      }      if(isNew() || isNewWithErrors())      { -        if(gStatusBar->getBalance() < getPriceForListing()) +        if(gStatusBar->getBalance() < MINIMUM_PRICE_FOR_LISTING)          {              LLNotificationsUtil::add("ClassifiedInsufficientFunds");              return; @@ -1403,6 +1407,12 @@ void LLPanelProfileClassified::onChange()      enableSave(isDirty());  } +void LLPanelProfileClassified::onTitleChange() +{ +    updateTabLabel(getClassifiedName()); +    onChange(); +} +  void LLPanelProfileClassified::doSave()  {      //*TODO: Fix all of this @@ -1428,6 +1438,14 @@ void LLPanelProfileClassified::doSave()  void LLPanelProfileClassified::onPublishFloaterPublishClicked()  { +    if (mPublishFloater->getPrice() < MINIMUM_PRICE_FOR_LISTING) +    { +        LLSD args; +        args["MIN_PRICE"] = MINIMUM_PRICE_FOR_LISTING; +        LLNotificationsUtil::add("MinClassifiedPrice", args); +        return; +    } +      setPriceForListing(mPublishFloater->getPrice());      doSave(); diff --git a/indra/newview/llpanelprofileclassifieds.h b/indra/newview/llpanelprofileclassifieds.h index 912819e86b..d1aa5f55e3 100644 --- a/indra/newview/llpanelprofileclassifieds.h +++ b/indra/newview/llpanelprofileclassifieds.h @@ -257,6 +257,7 @@ protected:      void onSetLocationClick();      void onChange(); +    void onTitleChange();      void onPublishFloaterPublishClicked(); diff --git a/indra/newview/llpanelprofilepicks.cpp b/indra/newview/llpanelprofilepicks.cpp index ff3f654d0e..e02ecfaa0a 100644 --- a/indra/newview/llpanelprofilepicks.cpp +++ b/indra/newview/llpanelprofilepicks.cpp @@ -581,6 +581,8 @@ BOOL LLPanelProfilePick::postBuild()      mSnapshotCtrl = getChild<LLTextureCtrl>("pick_snapshot");      mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelProfilePick::onSnapshotChanged, this)); +    mSnapshotCtrl->setAllowLocalTexture(FALSE); +    mSnapshotCtrl->setBakeTextureEnabled(FALSE);      childSetAction("teleport_btn", boost::bind(&LLPanelProfilePick::onClickTeleport, this));      childSetAction("show_on_map_btn", boost::bind(&LLPanelProfilePick::onClickMap, this)); @@ -670,6 +672,7 @@ void LLPanelProfilePick::setSnapshotId(const LLUUID& id)  void LLPanelProfilePick::setPickName(const std::string& name)  {      mPickName->setValue(name); +    mPickNameStr = name;  }  const std::string LLPanelProfilePick::getPickName() @@ -785,6 +788,7 @@ void LLPanelProfilePick::onClickSave()  void LLPanelProfilePick::onClickCancel()  { +    updateTabLabel(mPickNameStr);      LLAvatarPropertiesProcessor::getInstance()->sendPickInfoRequest(getAvatarId(), getPickId());      mLocationChanged = false;      enableSaveButton(FALSE); diff --git a/indra/newview/llpanelprofilepicks.h b/indra/newview/llpanelprofilepicks.h index f84463cc9b..27331831d3 100644 --- a/indra/newview/llpanelprofilepicks.h +++ b/indra/newview/llpanelprofilepicks.h @@ -237,6 +237,7 @@ protected:      LLUUID mParcelId;      LLUUID mPickId;      LLUUID mRequestedId; +    std::string mPickNameStr;      bool mLocationChanged;      bool mNewPick; diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index aed9dba7ef..7571d361a4 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -361,6 +361,15 @@ void LLSidepanelAppearance::toggleMyOutfitsPanel(BOOL visible, const std::string      }  } +bool LLSidepanelAppearance::isCOFPanelVisible() +{ +    if (mPanelOutfitsInventory && mPanelOutfitsInventory->getVisible()) +    { +        return mPanelOutfitsInventory->isCOFPanelActive(); +    } +    return false; +} +  void LLSidepanelAppearance::toggleOutfitEditPanel(BOOL visible, BOOL disable_camera_switch)  {  	if (!mOutfitEdit || mOutfitEdit->getVisible() == visible) diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h index bb9709a2b8..e67652d6f7 100644 --- a/indra/newview/llsidepanelappearance.h +++ b/indra/newview/llsidepanelappearance.h @@ -66,6 +66,8 @@ public:  	void updateToVisibility( const LLSD& new_visibility );  	LLPanelEditWearable* getWearable(){ return mEditWearable; } +    bool isCOFPanelVisible(); +  private:  	void onFilterEdit(const std::string& search_string);  	void onVisibilityChanged ( const LLSD& new_visibility ); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 9db9d97ddc..89784f4124 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -102,6 +102,7 @@  #include "llsceneview.h"  #include "llscenemonitor.h"  #include "llselectmgr.h" +#include "llsidepanelappearance.h"  #include "llspellcheckmenuhandler.h"  #include "llstatusbar.h"  #include "lltextureview.h" @@ -6655,6 +6656,13 @@ void handle_edit_outfit()  void handle_now_wearing()  { +    LLSidepanelAppearance *panel_appearance = dynamic_cast<LLSidepanelAppearance *>(LLFloaterSidePanelContainer::getPanel("appearance")); +    if (panel_appearance && panel_appearance->isInVisibleChain() && panel_appearance->isCOFPanelVisible()) +    { +        LLFloaterReg::findInstance("appearance")->closeFloater(); +        return; +    } +      LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "now_wearing"));  } diff --git a/indra/newview/skins/default/xui/en/floater_publish_classified.xml b/indra/newview/skins/default/xui/en/floater_publish_classified.xml index 84e0b489d0..3e68011b6c 100644 --- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml @@ -25,6 +25,7 @@ Remember, Classified fees are non-refundable.      </text>      <spinner       decimal_digits="0" +     allow_digits_only="true"       follows="left|top"       font="SansSerif"       halign="left" @@ -36,7 +37,6 @@ Remember, Classified fees are non-refundable.       layout="topleft"       left="15"       value="50" -     min_val="50"       max_val="999999"       name="price_for_listing"       top_pad="10" | 
