diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp index c9e5394bc..deb25c74c 100644 --- a/indra/llinventory/llinventory.cpp +++ b/indra/llinventory/llinventory.cpp @@ -268,7 +268,7 @@ void LLInventoryObject::updateServer(BOOL) const llwarns << "LLInventoryObject::updateServer() called. Doesn't do anything." << llendl; } -inline +// inline void LLInventoryObject::correctInventoryName(std::string& name) { LLStringUtil::replaceNonstandardASCII(name, ' '); diff --git a/indra/llinventory/llinventory.h b/indra/llinventory/llinventory.h index a88894da9..b3c141cfd 100644 --- a/indra/llinventory/llinventory.h +++ b/indra/llinventory/llinventory.h @@ -84,9 +84,13 @@ public: void setParent(const LLUUID& new_parent); void setType(LLAssetType::EType type); -private: +// [RLVa:KB] - Checked: 2014-01-07 (RLVa-1.4.10) // in place correction for inventory name string - void correctInventoryName(std::string& name); + static void correctInventoryName(std::string& name); +// [/RLVa:KB] +private: +// // in place correction for inventory name string +// void correctInventoryName(std::string& name); //-------------------------------------------------------------------- // File Support diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 5d9a995b6..b961e7a33 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -790,6 +790,17 @@ Value 0 + LiruMiniBuildFloater + + Comment + Whether or not the build tools floater is tinified (except in Land tool) + Persist + 1 + Type + Boolean + Value + 0 + LiruMouselookHidesFloaters Comment diff --git a/indra/newview/app_settings/settings_rlv.xml b/indra/newview/app_settings/settings_rlv.xml index 09b3d15fd..c0bd30a1a 100644 --- a/indra/newview/app_settings/settings_rlv.xml +++ b/indra/newview/app_settings/settings_rlv.xml @@ -11,7 +11,7 @@ Type Boolean Value - 1 + 1 RestrainedLoveDebug @@ -22,7 +22,7 @@ Type Boolean Value - 0 + 0 RestrainedLoveCanOOC @@ -33,7 +33,7 @@ Type Boolean Value - 1 + 1 RestrainedLoveForbidGiveToRLV @@ -44,7 +44,7 @@ Type Boolean Value - 0 + 0 RestrainedLoveNoSetEnv @@ -55,7 +55,7 @@ Type Boolean Value - 0 + 0 RestrainedLoveReplaceWhenFolderBeginsWith @@ -77,7 +77,7 @@ Type Boolean Value - 1 + 1 RestrainedLoveStackWhenFolderBeginsWith @@ -99,7 +99,7 @@ Type Boolean Value - 0 + 0 RLVaEnableCompositeFolders @@ -110,7 +110,7 @@ Type Boolean Value - 0 + 0 RLVaEnableLegacyNaming @@ -121,7 +121,7 @@ Type Boolean Value - 1 + 1 RLVaEnableSharedWear @@ -132,7 +132,7 @@ Type Boolean Value - 1 + 1 RLVaHideLockedLayers @@ -143,7 +143,7 @@ Type Boolean Value - 0 + 0 RLVaHideLockedAttachments @@ -154,7 +154,7 @@ Type Boolean Value - 0 + 0 RLVaSharedInvAutoRename @@ -165,7 +165,7 @@ Type Boolean Value - 1 + 1 RLVaShowAssertionFailures @@ -176,7 +176,7 @@ Type Boolean Value - 1 + 1 RLVaShowNameTags @@ -187,7 +187,7 @@ Type Boolean Value - 0 + 0 RLVaTopLevelMenu @@ -198,7 +198,7 @@ Type Boolean Value - 0 + 0 RLVaWearReplaceUnlocked @@ -209,7 +209,7 @@ Type Boolean Value - 0 + 0 ForceInitialCOFDelay diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index d08bd8a36..f1066076a 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2191,8 +2191,8 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate) //gViewerWindow->stopGrab(); LLSelectMgr::getInstance()->deselectAll(); - gViewerWindow->hideCursor(); - gViewerWindow->moveCursorToCenter(); +// gViewerWindow->hideCursor(); +// gViewerWindow->moveCursorToCenter(); if (mCameraMode != CAMERA_MODE_MOUSELOOK) { diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 9bb230124..9b0132be7 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -52,7 +52,7 @@ #include "llfloatercustomize.h" -// [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1a) +// [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1) #include "rlvhandler.h" #include "rlvinventory.h" #include "llattachmentsmgr.h" @@ -65,7 +65,7 @@ LLAgentWearables gAgentWearables; BOOL LLAgentWearables::mInitialWearablesUpdateReceived = FALSE; -// [SL:KB] - Patch: Appearance-InitialWearablesLoadedCallback | Checked: 2010-08-14 (Catznip-3.0.0a) | Added: Catznip-2.1.1d +// [SL:KB] - Patch: Appearance-InitialWearablesLoadedCallback | Checked: 2010-08-14 (Catznip-2.1) bool LLAgentWearables::mInitialWearablesLoaded = false; // [/SL:KB] @@ -829,7 +829,7 @@ const LLUUID LLAgentWearables::getWearableItemID(LLWearableType::EType type, U32 return LLUUID(); } -// [RLVa:KB] - Checked: 2011-03-31 (RLVa-1.3.0f) | Added: RLVa-1.3.0f +// [RLVa:KB] - Checked: 2011-03-31 (RLVa-1.3.0) void LLAgentWearables::getWearableItemIDs(uuid_vec_t& idItems) const { for (wearableentry_map_t::const_iterator itWearableType = mWearableDatas.begin(); @@ -844,8 +844,8 @@ void LLAgentWearables::getWearableItemIDs(LLWearableType::EType eType, uuid_vec_ wearableentry_map_t::const_iterator itWearableType = mWearableDatas.find(eType); if (mWearableDatas.end() != itWearableType) { - for (wearableentry_vec_t::const_iterator itWearable = itWearableType->second.begin(), endWearable = itWearableType->second.end(); - itWearable != endWearable; ++itWearable) + for (wearableentry_vec_t::const_iterator itWearable = itWearableType->second.begin(); + itWearable != itWearableType->second.end(); ++itWearable) { LLViewerWearable* wearable = dynamic_cast(*itWearable); if(wearable) @@ -1402,7 +1402,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it // Start rendering & update the server mWearablesLoaded = TRUE; checkWearablesLoaded(); -// [SL:KB] - Patch: Appearance-InitialWearablesLoadedCallback | Checked: 2010-09-22 (Catznip-3.0.0a) | Modified: Catznip-2.2.0a +// [SL:KB] - Patch: Appearance-InitialWearablesLoadedCallback | Checked: 2010-09-22 (Catznip-2.2) if (!mInitialWearablesLoaded) { mInitialWearablesLoaded = true; @@ -1830,7 +1830,7 @@ void LLAgentWearables::userAttachMultipleAttachments(LLInventoryModel::item_arra msg->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID()); msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner()); msg->addU8Fast(_PREHASH_AttachmentPt, replace? 0 : ATTACHMENT_ADD); // Wear at the previous or default attachment point -// [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1b) | Added: RLVa-1.3.1b +// [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1) if ( (rlv_handler_t::isEnabled()) && (sInitialAttachmentsRequested) && (gRlvAttachmentLocks.hasLockedAttachmentPoint(RLV_LOCK_ANY)) ) { RlvAttachmentLockWatchdog::instance().onWearAttachment(item, RLV_WEAR_ADD); @@ -1847,7 +1847,7 @@ void LLAgentWearables::userAttachMultipleAttachments(LLInventoryModel::item_arra } } -// [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1b) | Added: RLVa-1.3.1b +// [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1) sInitialAttachmentsRequested = true; // [/RLVa:KB] } @@ -2076,7 +2076,7 @@ boost::signals2::connection LLAgentWearables::addLoadedCallback(loaded_callback_ return mLoadedSignal.connect(cb); } -// [SL:KB] - Patch: Appearance-InitialWearablesLoadedCallback | Checked: 2010-08-14 (Catznip-3.0.0a) | Added: Catznip-2.1.1d +// [SL:KB] - Patch: Appearance-InitialWearablesLoadedCallback | Checked: 2010-08-14 (Catznip-2.1) boost::signals2::connection LLAgentWearables::addInitialWearablesLoadedCallback(loaded_callback_t cb) { return mInitialWearablesLoadedSignal.connect(cb); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 48abaaf29..643fe5f0e 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -3014,10 +3014,10 @@ void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id) LLInventoryModel::EXCLUDE_TRASH); for (S32 i=0; igetIsLinkType() && item->getLinkedUUID() == item_id) { -// [RLVa:KB] - Checked: 2013-02-12 (RLVa-1.4.8) #if LL_RELEASE_WITH_DEBUG_INFO || LL_DEBUG // NOTE-RLVa: debug-only, can be removed down the line if (rlv_handler_t::isEnabled()) @@ -3025,10 +3025,14 @@ void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id) RLV_ASSERT(rlvPredCanRemoveItem(item)); } #endif // LL_RELEASE_WITH_DEBUG_INFO || LL_DEBUG -// [/RLVa:KB] - gInventory.purgeObject(item->getUUID()); } +// [/RLVa:KB] +// const LLInventoryItem* item = item_array.get(i).get(); +// if (item->getIsLinkType() && item->getLinkedUUID() == item_id) +// { +// gInventory.purgeObject(item->getUUID()); +// } } } diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index d47f5fb43..663a40f03 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -62,8 +62,9 @@ #include "hippogridmanager.h" -// [RLVa:KB] -#include "rlvhandler.h" +// [RLVa:KB] - Checked: 2010-04-18 (RLVa-1.4.0) +#include "rlvactions.h" +#include "rlvhelper.h" // [/RLVa:KB] #if LL_WINDOWS @@ -168,15 +169,7 @@ LLFloaterAbout::LLFloaterAbout() // Position LLViewerRegion* region = gAgent.getRegion(); -// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-04 (RLVa-1.0.0a) - if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) - { - support.append(RlvStrings::getString(RLV_STRING_HIDDEN)); - support.append("\n\n"); - } - else if (region) -// [/RLVa:KB] -// if (region) + if (region) { LLStyleSP server_link_style(new LLStyle); server_link_style->setVisible(true); @@ -184,6 +177,9 @@ LLFloaterAbout::LLFloaterAbout() server_link_style->setLinkHREF(region->getCapability("ServerReleaseNotes")); server_link_style->setColor(gSavedSettings.getColor4("HTMLLinkColor")); +// [RLVa:KB] - Checked: 2014-02-24 (RLVa-1.4.10) + if (RlvActions::canShowLocation()) + { const LLVector3d &pos = gAgent.getPositionGlobal(); LLUIString pos_text = getString("you_are_at"); pos_text.setArg("[POSITION]", @@ -204,6 +200,10 @@ LLFloaterAbout::LLFloaterAbout() support.append(buffer); support.append(")"); } + } + else + support.append(RlvStrings::getString(RLV_STRING_HIDDEN_REGION)); +// [/RLVa:KN] support.append("\n"); support.append(gLastVersionChannel); @@ -265,6 +265,9 @@ LLFloaterAbout::LLFloaterAbout() getWindow()->setCursor(UI_CURSOR_ARROW); #endif +// [RLVa:KB] - Checked: 2010-04-18 (RLVa-1.2.0) + support.append("RLV Version: " + (RlvActions::isRlvEnabled()) ? RlvStrings::getVersionAbout() : "(disabled)"); +// [/RLVa:KB] support.append("OpenGL Version: "); support.append( (const char*) glGetString(GL_VERSION) ); support.append("\n\n"); diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 062ada4ba..a690b42e5 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -829,7 +829,18 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask) childSetVisible("link_num_obj_count", !land_visible); childSetVisible("prim_count", !land_visible); - mTab->setVisible(!land_visible); + static const LLCachedControl mini("LiruMiniBuildFloater"); + mTab->setVisible(!mini && !land_visible); + getChildView("mini_button")->setVisible(!land_visible); + bool small = mini && !land_visible; + const S32 cur_height = getRect().getHeight(); + static const S32 full_height = cur_height; + if (small == (cur_height == full_height)) + { + S32 new_height = small ? full_height - mTab->getRect().getHeight() + 8 : full_height; + translate(0, cur_height - new_height); + reshape(getRect().getWidth(), new_height); + } mPanelLandInfo->setVisible(land_visible); } diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index f655834c1..4881139df 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -6734,6 +6734,24 @@ void LLSelectMgr::doDelete() selectDelete(); } +// Note: Allow Ctrl-A for select all linked prims +//----------------------------------------------------------------------------- +// canSelectAll() +//----------------------------------------------------------------------------- +BOOL LLSelectMgr::canSelectAll() const +{ + return !mSelectedObjects->isEmpty(); +} + +//----------------------------------------------------------------------------- +// selectAll() +//----------------------------------------------------------------------------- +void LLSelectMgr::selectAll() +{ + promoteSelectionToRoot(); +} +// + //----------------------------------------------------------------------------- // canDeselect() //----------------------------------------------------------------------------- diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index ce16d0569..16c960ba8 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -389,6 +389,9 @@ public: virtual BOOL canDoDelete() const; virtual void doDelete(); + virtual void selectAll(); + virtual BOOL canSelectAll() const; + virtual void deselect(); virtual BOOL canDeselect() const; diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index 1f6ae81cf..2c442069e 100644 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -50,7 +50,6 @@ #include "llagent.h" #include "llagentcamera.h" #include "llfloatertools.h" -#include "qtoolalign.h" #include "llviewercontrol.h" @@ -278,20 +277,13 @@ BOOL LLToolCompTranslate::handleMouseUp(S32 x, S32 y, MASK mask) LLTool* LLToolCompTranslate::getOverrideTool(MASK mask) { - if (gKeyboard->getKeyDown('A') && mask & MASK_CONTROL) + if (mask == MASK_CONTROL) { - return QToolAlign::getInstance(); + return LLToolCompRotate::getInstance(); } - else + else if (mask == (MASK_CONTROL | MASK_SHIFT)) { - if (mask == MASK_CONTROL) - { - return LLToolCompRotate::getInstance(); - } - else if (mask == (MASK_CONTROL | MASK_SHIFT)) - { - return LLToolCompScale::getInstance(); - } + return LLToolCompScale::getInstance(); } return LLToolComposite::getOverrideTool(mask); } @@ -404,11 +396,7 @@ BOOL LLToolCompScale::handleMouseUp(S32 x, S32 y, MASK mask) LLTool* LLToolCompScale::getOverrideTool(MASK mask) { - if (gKeyboard->getKeyDown('A') && mask & MASK_CONTROL) - { - return QToolAlign::getInstance(); - } - else if (mask == MASK_CONTROL) + if (mask == MASK_CONTROL) { return LLToolCompRotate::getInstance(); } @@ -607,11 +595,7 @@ BOOL LLToolCompRotate::handleMouseUp(S32 x, S32 y, MASK mask) LLTool* LLToolCompRotate::getOverrideTool(MASK mask) { - if (gKeyboard->getKeyDown('A') && mask & MASK_CONTROL) - { - return QToolAlign::getInstance(); - } - else if (mask == (MASK_CONTROL | MASK_SHIFT)) + if (mask == (MASK_CONTROL | MASK_SHIFT)) { return LLToolCompScale::getInstance(); } diff --git a/indra/newview/lltoolgun.cpp b/indra/newview/lltoolgun.cpp index 23f297b95..07629eefc 100644 --- a/indra/newview/lltoolgun.cpp +++ b/indra/newview/lltoolgun.cpp @@ -60,10 +60,17 @@ LLToolGun::LLToolGun( LLToolComposite* composite ) void LLToolGun::handleSelect() { - gViewerWindow->hideCursor(); - gViewerWindow->moveCursorToCenter(); - gViewerWindow->getWindow()->setMouseClipping(TRUE); - mIsSelected = TRUE; +// [RLVa:KB] - Checked: 2014-02-24 (RLVa-1.4.10) + if (gFocusMgr.getAppHasFocus()) + { +// [/RLVa:KB] + gViewerWindow->hideCursor(); + gViewerWindow->moveCursorToCenter(); + gViewerWindow->getWindow()->setMouseClipping(TRUE); + mIsSelected = TRUE; +// [RLVa:KB] - Checked: 2014-02-24 (RLVa-1.4.10) + } +// [/RLVa:KB] } void LLToolGun::handleDeselect() diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 7a3893e31..a2adc49a9 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1494,7 +1494,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& bool busy = gAgent.getBusy(); -// [RLVa:KB] - Checked: 2010-09-23 (RLVa-1.2.1e) | Added: RLVa-1.2.1e +// [RLVa:KB] - Checked: 2010-09-23 (RLVa-1.2.1) bool fRlvNotifyAccepted = false; // [/RLVa:KB] switch(button) @@ -1505,25 +1505,23 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& // group_notice_inventory is 1 greater than the offer integer value. // [RLVa:KB] - Checked: 2010-09-23 (RLVa-1.2.1e) | Modified: RLVa-1.2.1e - // Only change the inventory offer's destination folder to the shared root if: + // Only treat the offer as 'Give to #RLV' if: // - the user has enabled the feature // - the inventory offer came from a script (and specifies a folder) // - the name starts with the prefix - mDesc format: '[OBJECTNAME]' ( http://slurl.com/... ) - if ( (rlv_handler_t::isEnabled()) && - (IM_TASK_INVENTORY_OFFERED == mIM) && (LLAssetType::AT_CATEGORY == mType) && (mDesc.find(RLV_PUTINV_PREFIX) == 1) ) + if ( (rlv_handler_t::isEnabled()) && (IM_TASK_INVENTORY_OFFERED == mIM) && (LLAssetType::AT_CATEGORY == mType) && (mDesc.find(RLV_PUTINV_PREFIX) == 1) ) { fRlvNotifyAccepted = true; if (!RlvSettings::getForbidGiveToRLV()) { - const LLViewerInventoryCategory* pRlvRoot = RlvInventory::instance().getSharedRoot(); - if (pRlvRoot) - { - fRlvNotifyAccepted = false; // "accepted_in_rlv" is sent from RlvGiveToRLVTaskOffer *after* we have the folder - mFolderID = pRlvRoot->getUUID(); + const LLUUID& idRlvRoot = RlvInventory::instance().getSharedRootID(); + if (idRlvRoot.notNull()) + mFolderID = idRlvRoot; - RlvGiveToRLVTaskOffer* pOfferObserver = new RlvGiveToRLVTaskOffer(mTransactionID); - gInventory.addObserver(pOfferObserver); - } + fRlvNotifyAccepted = false; // "accepted_in_rlv" is sent from RlvGiveToRLVTaskOffer *after* we have the folder + + RlvGiveToRLVTaskOffer* pOfferObserver = new RlvGiveToRLVTaskOffer(mTransactionID); + gInventory.addObserver(pOfferObserver); } } // [/RLVa:KB] @@ -1536,7 +1534,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& // send the message msg->sendReliable(mHost); -// [RLVa:KB] - Checked: 2010-09-23 (RLVa-1.2.1e) | Added: RLVa-1.2.1e +// [RLVa:KB] - Checked: 2010-09-23 (RLVa-1.2.1) if (fRlvNotifyAccepted) { std::string::size_type idxToken = mDesc.find("' ( http://"); @@ -1563,9 +1561,8 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& // This is an offer from an agent. In this case, the back // end has already copied the items into your inventory, // so we can fetch it out of our inventory. -// [RLVa:KB] - Checked: 2010-04-18 (RLVa-1.2.0e) | Modified: RLVa-1.2.0e - if ( (rlv_handler_t::isEnabled()) && (!RlvSettings::getForbidGiveToRLV()) && (LLAssetType::AT_CATEGORY == mType) && - (RlvInventory::instance().getSharedRoot()) && (mDesc.find(RLV_PUTINV_PREFIX) == 0) ) +// [RLVa:KB] - Checked: 2010-04-18 (RLVa-1.2.0) + if ( (rlv_handler_t::isEnabled()) && (!RlvSettings::getForbidGiveToRLV()) && (LLAssetType::AT_CATEGORY == mType) && (mDesc.find(RLV_PUTINV_PREFIX) == 0) ) { RlvGiveToRLVAgentOffer* pOfferObserver = new RlvGiveToRLVAgentOffer(mObjectID); pOfferObserver->startFetch(); @@ -4006,10 +4003,10 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) // Filtering "rules": // avatar => filter all avie text (unless it's this avie or they're an exemption) - // objects => filter everything except attachments this avie owns (never filter llOwnerSay chat) + // objects => filter everything except attachments this avie owns (never filter llOwnerSay or llRegionSayTo chat) if ( ( (CHAT_SOURCE_AGENT == chat.mSourceType) && (from_id != gAgent.getID()) ) || ( (CHAT_SOURCE_OBJECT == chat.mSourceType) && ((!is_owned_by_me) || (!is_attachment)) && - (CHAT_TYPE_OWNER != chat.mChatType) ) ) + (CHAT_TYPE_OWNER != chat.mChatType) && (CHAT_TYPE_DIRECT != chat.mChatType) ) ) { bool fIsEmote = RlvUtil::isEmote(mesg); if ((!fIsEmote) && diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 79d6ad670..560f150c8 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -660,7 +660,17 @@ void LLPipeline::resizeScreenTexture() GLuint resX = gViewerWindow->getWorldViewWidthRaw(); GLuint resY = gViewerWindow->getWorldViewHeightRaw(); - if ((resX != mScreen.getWidth()) || (resY != mScreen.getHeight())) +// [RLVa:KB] - Checked: 2014-02-23 (RLVa-1.4.10) + U32 resMod = gSavedSettings.getU32("RenderResolutionDivisor"), resAdjustedX = resX, resAdjustedY = resY; + if ( (resMod > 1) && (resMod < resX) && (resMod < resY) ) + { + resAdjustedX /= resMod; + resAdjustedY /= resMod; + } + + if ( (resAdjustedX != mScreen.getWidth()) || (resAdjustedY != mScreen.getHeight()) ) +// [/RLVa:KB] +// if ((resX != mScreen.getWidth()) || (resY != mScreen.getHeight())) { releaseScreenBuffers(); if (!allocateScreenBuffer(resX,resY)) diff --git a/indra/newview/qtoolalign.cpp b/indra/newview/qtoolalign.cpp index 6afa97f07..2b09c7cf2 100644 --- a/indra/newview/qtoolalign.cpp +++ b/indra/newview/qtoolalign.cpp @@ -1,5 +1,5 @@ /** - * @file lltoolface.cpp + * @file qtoolalign.cpp * @brief A tool to align objects */ @@ -13,14 +13,11 @@ #include "v3math.h" // Viewer includes -#include "llagent.h" #include "llagentcamera.h" #include "llbox.h" #include "llcylinder.h" #include "llfloatertools.h" -#include "llmanip.h" #include "llselectmgr.h" -#include "lltoolcomp.h" #include "llviewercamera.h" #include "llviewercontrol.h" #include "llviewerobject.h" @@ -33,7 +30,7 @@ const F32 MANIPULATOR_SELECT_SIZE = 20.0; QToolAlign::QToolAlign() -: LLToolComposite(std::string("Align")) +: LLTool(std::string("Align")) { } @@ -48,51 +45,16 @@ BOOL QToolAlign::handleMouseDown(S32 x, S32 y, MASK mask) { if (mHighlightedAxis != -1) { - align(); + align(); } else { gViewerWindow->pickAsync(x, y, mask, pickCallback); } - + return TRUE; } -BOOL QToolAlign::handleMouseUp(S32 x, S32 y, MASK mask) -{ - // first, perform normal processing in case this was a quick-click - handleHover(x, y, mask); - LLSelectMgr::getInstance()->updateSelectionCenter(); - BOOL handled = FALSE; - if( hasMouseCapture() ) - { - handled = TRUE; - setMouseCapture( FALSE ); - } - return handled; -} - -BOOL QToolAlign::handleDoubleClick(S32 x, S32 y, MASK mask) -{ - return FALSE; -} - -LLTool* QToolAlign::getOverrideTool(MASK mask) -{ - if (!gKeyboard->getKeyDown('A')) - { - if (mask == MASK_CONTROL) - { - return LLToolCompRotate::getInstance(); - } - else if (mask == (MASK_CONTROL | MASK_SHIFT)) - { - return LLToolCompScale::getInstance(); - } - } - return LLToolComposite::getOverrideTool(mask); -} - void QToolAlign::pickCallback(const LLPickInfo& pick_info) { LLViewerObject* object = pick_info.getObject(); @@ -140,9 +102,8 @@ void QToolAlign::handleSelect() { // no parts, please - //llwarns << "in select" << llendl; + LL_DEBUGS("ALIGNTOOL") << "in select" << LL_ENDL; LLSelectMgr::getInstance()->promoteSelectionToRoot(); - LLSelectMgr::getInstance()->updateSelectionCenter(); gFloaterTools->setStatusText("align"); } @@ -151,6 +112,7 @@ void QToolAlign::handleDeselect() { } + BOOL QToolAlign::findSelectedManipulator(S32 x, S32 y) { mHighlightedAxis = -1; @@ -182,8 +144,9 @@ BOOL QToolAlign::findSelectedManipulator(S32 x, S32 y) } - F32 half_width = (F32)gViewerWindow->getWindowWidth() / 2.f; - F32 half_height = (F32)gViewerWindow->getWindowHeight() / 2.f; + LLRect world_view_rect = gViewerWindow->getWorldViewRectScaled(); + F32 half_width = (F32)world_view_rect.getWidth() / 2.f; + F32 half_height = (F32)world_view_rect.getHeight() / 2.f; LLVector2 manip2d; LLVector2 mousePos((F32)x - half_width, (F32)y - half_height); LLVector2 delta; @@ -416,25 +379,24 @@ void QToolAlign::render() LLColor4 default_normal_color( 0.7f, 0.7f, 0.7f, 0.1f ); gGL.color4fv( default_normal_color.mV ); - + // LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getEditSelection(); - BOOL can_move = selection->getObjectCount() != 0; - if (can_move) + if (selection->getObjectCount() == 0) return; + struct F : public LLSelectedObjectFunctor { - struct f : public LLSelectedObjectFunctor + virtual bool apply(LLViewerObject* objectp) { - virtual bool apply(LLViewerObject* objectp) - { - return objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts")); - } - } func; - can_move = selection->applyToObjects(&func); - } - if (can_move) - { - render_bbox(mBBox); - renderManipulators(); - } + if (!objectp->permMove()) return false; + if (objectp->permModify()) return true; + static const LLCachedControl edit_linked("EditLinkedParts"); + return !edit_linked; + } + } f; + if (!selection->applyToObjects(&f)) return; + // + + render_bbox(mBBox); + renderManipulators(); } // only works for our specialized (AABB, position centered) bboxes @@ -564,7 +526,7 @@ void QToolAlign::align() // check to see if it overlaps the previously placed objects BOOL overlap = FALSE; - llwarns << "i=" << i << " j=" << j << llendl; + LL_DEBUGS("ALIGNTOOL") << "i=" << i << " j=" << j << LL_ENDL; if (!mForce) // well, don't check if in force mode { @@ -577,8 +539,8 @@ void QToolAlign::align() if (overlaps_this) { - llwarns << "overlap" << new_bbox.getCenterAgent() << other_bbox.getCenterAgent() << llendl; - llwarns << "extent" << new_bbox.getExtentLocal() << other_bbox.getExtentLocal() << llendl; + LL_DEBUGS("ALIGNTOOL") << "overlap" << new_bbox.getCenterAgent() << other_bbox.getCenterAgent() << LL_ENDL; + LL_DEBUGS("ALIGNTOOL") << "extent" << new_bbox.getExtentLocal() << other_bbox.getExtentLocal() << LL_ENDL; } overlap = (overlap || overlaps_this); diff --git a/indra/newview/qtoolalign.h b/indra/newview/qtoolalign.h index 1bef073ba..da70b34af 100644 --- a/indra/newview/qtoolalign.h +++ b/indra/newview/qtoolalign.h @@ -8,14 +8,13 @@ #include "lltool.h" #include "llbbox.h" -#include "lltoolcomp.h" class LLViewerObject; class LLPickInfo; class LLToolSelectRect; class QToolAlign -: public LLToolComposite, public LLSingleton +: public LLTool, public LLSingleton { public: QToolAlign(); @@ -24,13 +23,9 @@ public: virtual void handleSelect(); virtual void handleDeselect(); virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); - virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); - virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); virtual BOOL handleHover(S32 x, S32 y, MASK mask); virtual void render(); - virtual LLTool* getOverrideTool(MASK mask); - static void pickCallback(const LLPickInfo& pick_info); private: diff --git a/indra/newview/rlvactions.cpp b/indra/newview/rlvactions.cpp index 284813638..2ea2646cb 100644 --- a/indra/newview/rlvactions.cpp +++ b/indra/newview/rlvactions.cpp @@ -91,6 +91,12 @@ bool RlvActions::canStand() return (!gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) || ((isAgentAvatarValid()) && (!gAgentAvatarp->isSitting())); } +// Checked: 2014-02-24 (RLVa-1.4.10) +bool RlvActions::canShowLocation() +{ + return !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC); +} + // Checked: 2013-05-10 (RLVa-1.4.9) bool RlvActions::hasBehaviour(ERlvBehaviour eBhvr) { diff --git a/indra/newview/rlvactions.h b/indra/newview/rlvactions.h index 9b77ed4b6..58d90780a 100644 --- a/indra/newview/rlvactions.h +++ b/indra/newview/rlvactions.h @@ -79,6 +79,11 @@ public: */ static bool canStand(); + /* + * Returns true if the user can see their in-world location + */ + static bool canShowLocation(); + // ================ // Helper functions // ================ diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index bd4326680..e736193ef 100644 --- a/indra/newview/rlvcommon.cpp +++ b/indra/newview/rlvcommon.cpp @@ -392,7 +392,9 @@ void RlvUtil::filterNames(std::string& strUTF8Text, bool fFilterLegacy) if (LLAvatarNameCache::get(idAgents[idxAgent], &avName)) { const std::string& strDisplayName = avName.mDisplayName; + bool fFilterDisplay = (strDisplayName.length() > 2); const std::string& strLegacyName = avName.getLegacyName(); + fFilterLegacy &= (strLegacyName.length() > 2); const std::string& strAnonym = RlvStrings::getAnonym(avName); // If the display name is a subset of the legacy name we need to filter that first, otherwise it's the other way around @@ -400,11 +402,13 @@ void RlvUtil::filterNames(std::string& strUTF8Text, bool fFilterLegacy) { if (fFilterLegacy) boost::ireplace_all(strUTF8Text, strLegacyName, strAnonym); - boost::ireplace_all(strUTF8Text, strDisplayName, strAnonym); + if (fFilterDisplay) + boost::ireplace_all(strUTF8Text, strDisplayName, strAnonym); } else { - boost::ireplace_all(strUTF8Text, strDisplayName, strAnonym); + if (fFilterDisplay) + boost::ireplace_all(strUTF8Text, strDisplayName, strAnonym); if (fFilterLegacy) boost::ireplace_all(strUTF8Text, strLegacyName, strAnonym); } @@ -682,7 +686,7 @@ bool rlvPredCanNotWearItem(const LLViewerInventoryItem* pItem, ERlvWearMask eWea } // Checked: 2010-03-22 (RLVa-1.2.0c) | Added: RLVa-1.2.0a -bool rlvPredCanRemoveItem(const LLInventoryItem* pItem) +bool rlvPredCanRemoveItem(const LLViewerInventoryItem* pItem) { if ( (pItem) && (RlvForceWear::isWearableItem(pItem)) ) { @@ -705,7 +709,7 @@ bool rlvPredCanRemoveItem(const LLInventoryItem* pItem) } // Checked: 2010-03-22 (RLVa-1.2.0c) | Added: RLVa-1.2.0a -bool rlvPredCanNotRemoveItem(const LLInventoryItem* pItem) +bool rlvPredCanNotRemoveItem(const LLViewerInventoryItem* pItem) { return !rlvPredCanRemoveItem(pItem); } diff --git a/indra/newview/rlvcommon.h b/indra/newview/rlvcommon.h index 2af64c274..a4411f146 100644 --- a/indra/newview/rlvcommon.h +++ b/indra/newview/rlvcommon.h @@ -243,8 +243,8 @@ protected: bool rlvPredCanWearItem(const LLViewerInventoryItem* pItem, ERlvWearMask eWearMask); bool rlvPredCanNotWearItem(const LLViewerInventoryItem* pItem, ERlvWearMask eWearMask); -bool rlvPredCanRemoveItem(const LLInventoryItem* pItem); -bool rlvPredCanNotRemoveItem(const LLInventoryItem* pItem); +bool rlvPredCanRemoveItem(const LLViewerInventoryItem* pItem); +bool rlvPredCanNotRemoveItem(const LLViewerInventoryItem* pItem); struct RlvPredCanWearItem { @@ -262,6 +262,18 @@ protected: ERlvWearMask m_eWearMask; }; +struct RlvPredCanRemoveItem +{ + RlvPredCanRemoveItem() {} + bool operator()(const LLViewerInventoryItem* pItem) { return rlvPredCanRemoveItem(pItem); } +}; + +struct RlvPredCanNotRemoveItem +{ + RlvPredCanNotRemoveItem() {} + bool operator()(const LLViewerInventoryItem* pItem) { return rlvPredCanNotRemoveItem(pItem); } +}; + struct RlvPredIsEqualOrLinkedItem { RlvPredIsEqualOrLinkedItem(const LLViewerInventoryItem* pItem) : m_pItem(pItem) {} diff --git a/indra/newview/rlvdefines.h b/indra/newview/rlvdefines.h index 72c504ff8..3aa90e168 100644 --- a/indra/newview/rlvdefines.h +++ b/indra/newview/rlvdefines.h @@ -57,14 +57,14 @@ // Version of the specifcation we support const S32 RLV_VERSION_MAJOR = 2; -const S32 RLV_VERSION_MINOR = 7; +const S32 RLV_VERSION_MINOR = 8; const S32 RLV_VERSION_PATCH = 0; const S32 RLV_VERSION_BUILD = 0; // Implementation version const S32 RLVa_VERSION_MAJOR = 1; const S32 RLVa_VERSION_MINOR = 4; -const S32 RLVa_VERSION_PATCH = 9; +const S32 RLVa_VERSION_PATCH = 10; const S32 RLVa_VERSION_BUILD = 0; // Uncomment before a final release @@ -101,6 +101,8 @@ const S32 RLVa_VERSION_BUILD = 0; #define RLV_ROOT_FOLDER "#RLV" #define RLV_CMD_PREFIX '@' #define RLV_PUTINV_PREFIX "#RLV/~" +#define RLV_PUTINV_SEPARATOR "/" +#define RLV_PUTINV_MAXDEPTH 4 #define RLV_SETROT_OFFSET F_PI_BY_TWO // @setrot is off by 90° with the rest of SL #define RLV_STRINGS_FILE "rlva_strings.xml" diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index 9c5b0c332..143ff6903 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -67,6 +67,34 @@ static bool rlvParseNotifyOption(const std::string& strOption, S32& nChannel, st return (itTok == tokens.end()); } +// Checked: 2014-02-26 (RLVa-1.4.10) +static bool rlvParseGetStatusOption(const std::string& strOption, std::string& strFilter, std::string& strSeparator) +{ + // @getstatus:[