diff options
55 files changed, 542 insertions, 370 deletions
diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp index 6bbaad9cef..290206ee22 100644 --- a/indra/llaudio/llaudiodecodemgr.cpp +++ b/indra/llaudio/llaudiodecodemgr.cpp @@ -181,6 +181,8 @@ LLVorbisDecodeState::LLVorbisDecodeState(const LLUUID &uuid, const std::string & mFileHandle = LLLFSThread::nullHandle(); #endif // No default value for mVF, it's an ogg structure? + // Hey, let's zero it anyway, for predictability. + memset(&mVF, 0, sizeof(mVF)); } LLVorbisDecodeState::~LLVorbisDecodeState() diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp index fae0a66873..6d8d81e114 100644 --- a/indra/llcommon/llfasttimer_class.cpp +++ b/indra/llcommon/llfasttimer_class.cpp @@ -114,7 +114,11 @@ static timer_tree_dfs_iterator_t end_timer_tree() class NamedTimerFactory : public LLSingleton<NamedTimerFactory> { public: - NamedTimerFactory() + NamedTimerFactory() + : mActiveTimerRoot(NULL), + mTimerRoot(NULL), + mAppTimer(NULL), + mRootFrameState(NULL) {} /*virtual */ void initSingleton() diff --git a/indra/llcommon/lltreeiterators.h b/indra/llcommon/lltreeiterators.h index c946566e84..cb1304c54e 100644 --- a/indra/llcommon/lltreeiterators.h +++ b/indra/llcommon/lltreeiterators.h @@ -343,20 +343,20 @@ public: /// Instantiate an LLTreeDFSIter to start a depth-first walk. Pass /// functors to extract the 'child begin' and 'child end' iterators from /// each node. - LLTreeDFSIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc): - mBeginFunc(beginfunc), - mEndFunc(endfunc), - mSkipChildren(false) + LLTreeDFSIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc) + : mBeginFunc(beginfunc), + mEndFunc(endfunc), + mSkipChildren(false) { // Only push back this node if it's non-NULL! if (node) mPending.push_back(node); } /// Instantiate an LLTreeDFSIter to mark the end of the walk - LLTreeDFSIter() {} + LLTreeDFSIter() : mSkipChildren(false) {} - /// flags iterator logic to skip traversing children of current node on next increment - void skipDescendants(bool skip = true) { mSkipChildren = skip; } + /// flags iterator logic to skip traversing children of current node on next increment + void skipDescendants(bool skip = true) { mSkipChildren = skip; } private: /// leverage boost::iterator_facade @@ -405,8 +405,8 @@ private: func_type mBeginFunc; /// functor to extract end() child iterator func_type mEndFunc; - /// flag which controls traversal of children (skip children of current node if true) - bool mSkipChildren; + /// flag which controls traversal of children (skip children of current node if true) + bool mSkipChildren; }; /** @@ -451,21 +451,21 @@ public: /// Instantiate an LLTreeDFSPostIter to start a depth-first walk. Pass /// functors to extract the 'child begin' and 'child end' iterators from /// each node. - LLTreeDFSPostIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc): - mBeginFunc(beginfunc), - mEndFunc(endfunc), - mSkipAncestors(false) - { + LLTreeDFSPostIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc) + : mBeginFunc(beginfunc), + mEndFunc(endfunc), + mSkipAncestors(false) + { if (! node) return; mPending.push_back(typename list_type::value_type(node, false)); makeCurrent(); } /// Instantiate an LLTreeDFSPostIter to mark the end of the walk - LLTreeDFSPostIter() {} + LLTreeDFSPostIter() : mSkipAncestors(false) {} - /// flags iterator logic to skip traversing ancestors of current node on next increment - void skipAncestors(bool skip = true) { mSkipAncestors = skip; } + /// flags iterator logic to skip traversing ancestors of current node on next increment + void skipAncestors(bool skip = true) { mSkipAncestors = skip; } private: /// leverage boost::iterator_facade diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp index 82c736266d..1b0e03cb2a 100644 --- a/indra/llcommon/llworkerthread.cpp +++ b/indra/llcommon/llworkerthread.cpp @@ -188,6 +188,7 @@ LLWorkerClass::LLWorkerClass(LLWorkerThread* workerthread, const std::string& na : mWorkerThread(workerthread), mWorkerClassName(name), mRequestHandle(LLWorkerThread::nullHandle()), + mRequestPriority(LLWorkerThread::PRIORITY_NORMAL), mMutex(NULL), mWorkFlags(0) { diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp index e71429b18d..3af31da083 100644 --- a/indra/llimagej2coj/llimagej2coj.cpp +++ b/indra/llimagej2coj/llimagej2coj.cpp @@ -97,7 +97,8 @@ void info_callback(const char* msg, void*) } -LLImageJ2COJ::LLImageJ2COJ() : LLImageJ2CImpl() +LLImageJ2COJ::LLImageJ2COJ() + : LLImageJ2CImpl() { } diff --git a/indra/llimagej2coj/llimagej2coj.h b/indra/llimagej2coj/llimagej2coj.h index 73cb074f1f..8255d5225f 100644 --- a/indra/llimagej2coj/llimagej2coj.h +++ b/indra/llimagej2coj/llimagej2coj.h @@ -51,9 +51,6 @@ protected: // Divide a by b to the power of 2 and round upwards. return (a + (1 << b) - 1) >> b; } - - // Temporary variables for in-progress decodes... - LLImageRaw *mRawImagep; }; #endif diff --git a/indra/llmessage/llpacketbuffer.cpp b/indra/llmessage/llpacketbuffer.cpp index 027d35cf89..441e8ddd27 100644 --- a/indra/llmessage/llpacketbuffer.cpp +++ b/indra/llmessage/llpacketbuffer.cpp @@ -42,11 +42,14 @@ LLPacketBuffer::LLPacketBuffer(const LLHost &host, const char *datap, const S32 size) : mHost(host) { + mSize = 0; + mData[0] = '!'; + if (size > NET_BUFFER_SIZE) { llerrs << "Sending packet > " << NET_BUFFER_SIZE << " of size " << size << llendl; } - else // we previously relied on llerrs being fatal to not get here... + else { if (datap != NULL) { diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp index 0a71ad95f2..d64b666ede 100644 --- a/indra/llmessage/lltransfermanager.cpp +++ b/indra/llmessage/lltransfermanager.cpp @@ -1196,6 +1196,7 @@ LLTransferTarget::LLTransferTarget( mType(type), mSourceType(source_type), mID(transfer_id), + mChannelp(NULL), mGotInfo(FALSE), mSize(0), mLastPacketID(-1) diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp index 7332f5c954..8f36d516d7 100644 --- a/indra/llmessage/lltransfersourceasset.cpp +++ b/indra/llmessage/lltransfersourceasset.cpp @@ -226,7 +226,10 @@ void LLTransferSourceAsset::responderCallback(LLVFS *vfs, const LLUUID& uuid, LL -LLTransferSourceParamsAsset::LLTransferSourceParamsAsset() : LLTransferSourceParams(LLTST_ASSET) +LLTransferSourceParamsAsset::LLTransferSourceParamsAsset() + : LLTransferSourceParams(LLTST_ASSET), + + mAssetType(LLAssetType::AT_NONE) { } diff --git a/indra/llmessage/lltransfertargetfile.h b/indra/llmessage/lltransfertargetfile.h index 18b9b52062..92fb8f807c 100644 --- a/indra/llmessage/lltransfertargetfile.h +++ b/indra/llmessage/lltransfertargetfile.h @@ -40,7 +40,12 @@ typedef void (*LLTTFCompleteCallback)(const LLTSCode status, void *user_data); class LLTransferTargetParamsFile : public LLTransferTargetParams { public: - LLTransferTargetParamsFile() : LLTransferTargetParams(LLTTT_FILE) {} + LLTransferTargetParamsFile() + : LLTransferTargetParams(LLTTT_FILE), + + mCompleteCallback(NULL), + mUserData(NULL) + {} void setFilename(const std::string& filename) { mFilename = filename; } void setCallback(LLTTFCompleteCallback cb, void *user_data) { mCompleteCallback = cb; mUserData = user_data; } diff --git a/indra/llmessage/lltransfertargetvfile.h b/indra/llmessage/lltransfertargetvfile.h index 8c2bc7e8bb..cd18d8ce3f 100644 --- a/indra/llmessage/lltransfertargetvfile.h +++ b/indra/llmessage/lltransfertargetvfile.h @@ -68,7 +68,6 @@ protected: LLTTVFCompleteCallback mCompleteCallback; void* mUserDatap; S32 mErrCode; - LLVFSThread::handle_t mHandle; }; diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 3d2eaed5c5..91c796a9e6 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -104,6 +104,8 @@ void LLPluginClassMedia::reset() mSetMediaHeight = -1; mRequestedMediaWidth = 0; mRequestedMediaHeight = 0; + mRequestedTextureWidth = 0; + mRequestedTextureHeight = 0; mFullMediaWidth = 0; mFullMediaHeight = 0; mTextureWidth = 0; diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp index 11c924cadf..0f3254d78d 100644 --- a/indra/llplugin/llpluginprocesschild.cpp +++ b/indra/llplugin/llpluginprocesschild.cpp @@ -43,6 +43,7 @@ static const F32 PLUGIN_IDLE_SECONDS = 1.0f / 100.0f; // Each call to idle will LLPluginProcessChild::LLPluginProcessChild() { + mState = STATE_UNINITIALIZED; mInstance = NULL; mSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP); mSleepTime = PLUGIN_IDLE_SECONDS; // default: send idle messages at 100Hz diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h index 1cfd9dcaf9..58f8935ed1 100644 --- a/indra/llplugin/llpluginprocesschild.h +++ b/indra/llplugin/llpluginprocesschild.h @@ -89,8 +89,9 @@ private: STATE_ERROR, // generic bailout state STATE_DONE // state machine will sit in this state after either error or normal termination. }; - EState mState; void setState(EState state); + + EState mState; LLHost mLauncherHost; LLSocket::ptr_t mSocket; diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index 49f9783824..efd5df687e 100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -50,6 +50,8 @@ LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *owner) mOwner = owner; mBoundPort = 0; mState = STATE_UNINITIALIZED; + mSleepTime = 0.0; + mCPUUsage = 0.0; mDisableTimeout = false; mDebug = false; diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 75ca6d8895..2b1e2b8226 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -2333,8 +2333,6 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele LLColor4 color = (mEditor.getReadOnly() ? mStyle->getReadOnlyColor() : mStyle->getColor()) % alpha; - font = mStyle->getFont(); - if( selection_start > seg_start ) { // Draw normally diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index b20de914a0..92b7816bdd 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -232,7 +232,7 @@ std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string) const LLUrlEntrySLURL::LLUrlEntrySLURL() { // see http://slurl.com/about.php for details on the SLURL format - mPattern = boost::regex("http://slurl.com/secondlife/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*", + mPattern = boost::regex("http://(maps.secondlife.com|slurl.com)/secondlife/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*", boost::regex::perl|boost::regex::icase); mMenuName = "menu_url_slurl.xml"; mTooltip = LLTrans::getString("TooltipSLURL"); diff --git a/indra/llvfs/llpidlock.cpp b/indra/llvfs/llpidlock.cpp index 95e3692e10..28cee29405 100755 --- a/indra/llvfs/llpidlock.cpp +++ b/indra/llvfs/llpidlock.cpp @@ -68,8 +68,12 @@ class LLPidLockFile { public: LLPidLockFile( ) : - mSaving(FALSE), mWaiting(FALSE), - mClean(TRUE), mPID(getpid()) + mAutosave(false), + mSaving(false), + mWaiting(false), + mPID(getpid()), + mNameTable(NULL), + mClean(true) { mLockName = gDirUtilp->getTempDir() + gDirUtilp->getDirDelimiter() + "savelock"; } diff --git a/indra/llvfs/llvfile.h b/indra/llvfs/llvfile.h index 5f69a41040..c3bca8c737 100644 --- a/indra/llvfs/llvfile.h +++ b/indra/llvfs/llvfile.h @@ -88,7 +88,6 @@ protected: S32 mMode; LLVFS *mVFS; F32 mPriority; - BOOL mOnReadQueue; S32 mBytesRead; LLVFSThread::handle_t mHandle; diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp index 07cc612a0a..e4f6482fae 100644 --- a/indra/llxml/llxmlnode.cpp +++ b/indra/llxml/llxmlnode.cpp @@ -131,6 +131,8 @@ LLXMLNode::LLXMLNode(const LLXMLNode& rhs) : mPrecision(rhs.mPrecision), mType(rhs.mType), mEncoding(rhs.mEncoding), + mLineNumber(0), + mParser(NULL), mParent(NULL), mChildren(NULL), mAttributes(), diff --git a/indra/llxml/llxmltree.cpp b/indra/llxml/llxmltree.cpp index 1bce5d29f7..bc2690deff 100644 --- a/indra/llxml/llxmltree.cpp +++ b/indra/llxml/llxmltree.cpp @@ -510,7 +510,8 @@ LLXmlTreeParser::LLXmlTreeParser(LLXmlTree* tree) : mTree(tree), mRoot( NULL ), mCurrent( NULL ), - mDump( FALSE ) + mDump( FALSE ), + mKeepContents(FALSE) { } diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 7eed2e7b9a..bd987eac77 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -612,3 +612,13 @@ bool LLAvatarActions::isBlocked(const LLUUID& id) gCacheName->getFullName(id, name); return LLMuteList::getInstance()->isMuted(id, name); } + +// static +bool LLAvatarActions::canBlock(const LLUUID& id) +{ + std::string firstname, lastname; + gCacheName->getName(id, firstname, lastname); + bool is_linden = !LLStringUtil::compareStrings(lastname, "Linden"); + bool is_self = id == gAgentID; + return !is_self && !is_linden; +} diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index c751661acf..16a58718a2 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -124,6 +124,11 @@ public: static bool isBlocked(const LLUUID& id); /** + * @return true if you can block the avatar + */ + static bool canBlock(const LLUUID& id); + + /** * Return true if the avatar is in a P2P voice call with a given user */ /* AD *TODO: Is this function needed any more? diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 0102e9488e..4c8cec3d30 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -280,7 +280,13 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b break; } - mSpeakBtn->setEnabled(enable); + // We have to enable/disable right and left parts of speak button separately (EXT-4648) + mSpeakBtn->setSpeakBtnEnabled(enable); + // skipped to avoid button blinking + if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL) + { + mSpeakBtn->setFlyoutBtnEnabled(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking()); + } } void LLBottomTray::onMouselookModeOut() @@ -410,9 +416,10 @@ BOOL LLBottomTray::postBuild() mSpeakPanel = getChild<LLPanel>("speak_panel"); mSpeakBtn = getChild<LLSpeakButton>("talk"); - // Speak button should be initially disabled because + // Both parts of speak button should be initially disabled because // it takes some time between logging in to world and connecting to voice channel. - mSpeakBtn->setEnabled(FALSE); + mSpeakBtn->setSpeakBtnEnabled(false); + mSpeakBtn->setFlyoutBtnEnabled(false); // Localization tool doesn't understand custom buttons like <talk_button> mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") ); diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index f62fd44bc0..8cb240c7c2 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -52,6 +52,7 @@ #include "lltransientfloatermgr.h" #include "llviewerwindow.h" #include "llvoicechannel.h" +#include "llviewerparcelmgr.h" static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids); void reshape_floater(LLCallFloater* floater, S32 delta_height); @@ -731,11 +732,11 @@ void LLCallFloater::updateState(const LLVoiceChannel::EState& new_state) } else { - reset(); + reset(new_state); } } -void LLCallFloater::reset() +void LLCallFloater::reset(const LLVoiceChannel::EState& new_state) { // lets forget states from the previous session // for timers... @@ -748,8 +749,18 @@ void LLCallFloater::reset() mParticipants = NULL; mAvatarList->clear(); - // update floater to show Loading while waiting for data. - mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData")); + // "loading" is shown in parcel with disabled voice only when state is "ringing" + // to avoid showing it in nearby chat vcp all the time- "no_one_near" is now shown there (EXT-4648) + bool show_loading = LLVoiceChannel::STATE_RINGING == new_state; + if(!show_loading && !LLViewerParcelMgr::getInstance()->allowAgentVoice() && mVoiceType == VC_LOCAL_CHAT) + { + mAvatarList->setNoItemsCommentText(getString("no_one_near")); + } + else + { + // update floater to show Loading while waiting for data. + mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData")); + } mAvatarList->setVisible(TRUE); mNonAvatarCaller->setVisible(FALSE); diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h index 766191379b..dac4390fa7 100644 --- a/indra/newview/llcallfloater.h +++ b/indra/newview/llcallfloater.h @@ -220,7 +220,7 @@ private: * * Clears all data from the latest voice session. */ - void reset(); + void reset(const LLVoiceChannel::EState& new_state); private: speaker_state_map_t mSpeakerStateMap; diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index f5bb777419..a5b62439f4 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -370,7 +370,8 @@ struct LLFavoritesSort LLFavoritesBarCtrl::Params::Params() : image_drag_indication("image_drag_indication"), - chevron_button("chevron_button") + chevron_button("chevron_button"), + label("label") { } @@ -401,6 +402,10 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p) chevron_button_params.click_callback.function(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this)); mChevronButton = LLUICtrlFactory::create<LLButton> (chevron_button_params); addChild(mChevronButton); + + LLTextBox::Params label_param(p.label); + mBarLabel = LLUICtrlFactory::create<LLTextBox> (label_param); + addChild(mBarLabel); } LLFavoritesBarCtrl::~LLFavoritesBarCtrl() diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h index 40dd551eef..2c6d8d1580 100644 --- a/indra/newview/llfavoritesbar.h +++ b/indra/newview/llfavoritesbar.h @@ -35,6 +35,7 @@ #include "llbutton.h" #include "lluictrl.h" +#include "lltextbox.h" #include "llinventoryobserver.h" #include "llinventorymodel.h" @@ -46,6 +47,7 @@ public: { Optional<LLUIImage*> image_drag_indication; Optional<LLButton::Params> chevron_button; + Optional<LLTextBox::Params> label; Params(); }; @@ -139,6 +141,7 @@ private: LLUICtrl* mLandingTab; LLUICtrl* mLastTab; LLButton* mChevronButton; + LLTextBox* mBarLabel; LLUUID mDragItemId; BOOL mStartDrag; diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp index 904655cdc8..5ec58c8dd6 100644 --- a/indra/newview/llfloateranimpreview.cpp +++ b/indra/newview/llfloateranimpreview.cpp @@ -117,7 +117,7 @@ std::string STATUS[] = "E_ST_NO_XLT_EASEOUT", "E_ST_NO_XLT_HAND", "E_ST_NO_XLT_EMOTE", - "E_ST_BAD_ROOT" +"E_ST_BAD_ROOT" }; //----------------------------------------------------------------------------- diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 72a52ba13b..4c1019a882 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1708,6 +1708,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, bool start_message = true; LLMessageSystem* msg = gMessageSystem; + + LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id); if (!group_datap) return; @@ -1715,6 +1717,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, it != member_ids.end(); ++it) { LLUUID& ejected_member_id = (*it); + + llwarns << "LLGroupMgr::sendGroupMemberEjects -- ejecting member" << ejected_member_id << llendl; // Can't use 'eject' to leave a group. if ((*it) == gAgent.getID()) continue; @@ -1751,11 +1755,14 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, if ((*rit).first.notNull() && (*rit).second!=0) { (*rit).second->removeMember(ejected_member_id); + + llwarns << "LLGroupMgr::sendGroupMemberEjects - removing member from role " << llendl; } } group_datap->mMembers.erase(*it); + llwarns << "LLGroupMgr::sendGroupMemberEjects - deleting memnber data " << llendl; delete (*mit).second; } } @@ -1764,6 +1771,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, { gAgent.sendReliableMessage(); } + + llwarns << "LLGroupMgr::sendGroupMemberEjects - done " << llendl; } void LLGroupMgr::sendGroupRoleChanges(const LLUUID& group_id) diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 48dd5513bd..4a7cdfc856 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -483,6 +483,7 @@ BOOL LLPanelAvatarProfile::postBuild() LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; registrar.add("Profile.Pay", boost::bind(&LLPanelAvatarProfile::pay, this)); registrar.add("Profile.Share", boost::bind(&LLPanelAvatarProfile::share, this)); + registrar.add("Profile.BlockUnblock", boost::bind(&LLPanelAvatarProfile::toggleBlock, this)); registrar.add("Profile.Kick", boost::bind(&LLPanelAvatarProfile::kick, this)); registrar.add("Profile.Freeze", boost::bind(&LLPanelAvatarProfile::freeze, this)); registrar.add("Profile.Unfreeze", boost::bind(&LLPanelAvatarProfile::unfreeze, this)); @@ -490,6 +491,8 @@ BOOL LLPanelAvatarProfile::postBuild() LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable; enable.add("Profile.EnableGod", boost::bind(&enable_god)); + enable.add("Profile.CheckItem", boost::bind(&LLPanelAvatarProfile::checkOverflowMenuItem, this, _2)); + enable.add("Profile.EnableItem", boost::bind(&LLPanelAvatarProfile::enableOverflowMenuItem, this, _2)); mProfileMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); @@ -666,6 +669,26 @@ void LLPanelAvatarProfile::fillAccountStatus(const LLAvatarData* avatar_data) childSetValue("acc_status_text", caption_text); } +bool LLPanelAvatarProfile::checkOverflowMenuItem(const LLSD& param) +{ + std::string item = param.asString(); + + if (item == "is_blocked") + return LLAvatarActions::isBlocked(getAvatarId()); + + return false; +} + +bool LLPanelAvatarProfile::enableOverflowMenuItem(const LLSD& param) +{ + std::string item = param.asString(); + + if (item == "can_block") + return LLAvatarActions::canBlock(getAvatarId()); + + return false; +} + void LLPanelAvatarProfile::pay() { LLAvatarActions::pay(getAvatarId()); @@ -676,6 +699,11 @@ void LLPanelAvatarProfile::share() LLAvatarActions::share(getAvatarId()); } +void LLPanelAvatarProfile::toggleBlock() +{ + LLAvatarActions::toggleBlock(getAvatarId()); +} + void LLPanelAvatarProfile::kick() { LLAvatarActions::kick(getAvatarId()); diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index ce59f1e93d..632590aa27 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -192,12 +192,18 @@ protected: */ void share(); + /** + * Add/remove resident to/from your block list. + */ + void toggleBlock(); + void kick(); void freeze(); void unfreeze(); void csr(); - + bool checkOverflowMenuItem(const LLSD& param); + bool enableOverflowMenuItem(const LLSD& param); bool enableGod(); diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index d491583b56..cbd6f64a48 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -81,11 +81,15 @@ void LLPanelChatControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::E void LLPanelChatControlPanel::updateCallButton() { - // hide/show call button bool voice_enabled = LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking(); LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId); - if (!session) return; + + if (!session) + { + childSetEnabled("call_btn", false); + return; + } bool session_initialized = session->mSessionInitialized; bool callback_enabled = session->mCallBackEnabled; diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index 470cfca8fe..7e184c78a8 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -164,11 +164,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata) if (item == std::string("can_block")) { const LLUUID& id = mUUIDs.front(); - std::string firstname, lastname; - gCacheName->getName(id, firstname, lastname); - bool is_linden = !LLStringUtil::compareStrings(lastname, "Linden"); - bool is_self = id == gAgentID; - return !is_self && !is_linden; + return LLAvatarActions::canBlock(id); } else if (item == std::string("can_add")) { diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp index 37e268ad34..3343ee88bd 100644 --- a/indra/newview/llslurl.cpp +++ b/indra/newview/llslurl.cpp @@ -39,7 +39,8 @@ const std::string LLSLURL::PREFIX_SL_HELP = "secondlife://app."; const std::string LLSLURL::PREFIX_SL = "sl://"; const std::string LLSLURL::PREFIX_SECONDLIFE = "secondlife://"; -const std::string LLSLURL::PREFIX_SLURL = "http://slurl.com/secondlife/"; +const std::string LLSLURL::PREFIX_SLURL_OLD = "http://slurl.com/secondlife/"; +const std::string LLSLURL::PREFIX_SLURL = "http://maps.secondlife.com/secondlife/"; const std::string LLSLURL::APP_TOKEN = "app/"; @@ -63,6 +64,11 @@ std::string LLSLURL::stripProtocol(const std::string& url) { stripped.erase(0, PREFIX_SLURL.length()); } + else if (matchPrefix(stripped, PREFIX_SLURL_OLD)) + { + stripped.erase(0, PREFIX_SLURL_OLD.length()); + } + return stripped; } @@ -74,6 +80,7 @@ bool LLSLURL::isSLURL(const std::string& url) if (matchPrefix(url, PREFIX_SL)) return true; if (matchPrefix(url, PREFIX_SECONDLIFE)) return true; if (matchPrefix(url, PREFIX_SLURL)) return true; + if (matchPrefix(url, PREFIX_SLURL_OLD)) return true; return false; } @@ -83,7 +90,8 @@ bool LLSLURL::isSLURLCommand(const std::string& url) { if (matchPrefix(url, PREFIX_SL + APP_TOKEN) || matchPrefix(url, PREFIX_SECONDLIFE + "/" + APP_TOKEN) || - matchPrefix(url, PREFIX_SLURL + APP_TOKEN) ) + matchPrefix(url, PREFIX_SLURL + APP_TOKEN) || + matchPrefix(url, PREFIX_SLURL_OLD + APP_TOKEN) ) { return true; } diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h index 05b0143e72..21b32ce409 100644 --- a/indra/newview/llslurl.h +++ b/indra/newview/llslurl.h @@ -50,6 +50,7 @@ public: static const std::string PREFIX_SL; static const std::string PREFIX_SECONDLIFE; static const std::string PREFIX_SLURL; + static const std::string PREFIX_SLURL_OLD; static const std::string APP_TOKEN; diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp index 8f2c877c7a..c5c311ed33 100644 --- a/indra/newview/llspeakbutton.cpp +++ b/indra/newview/llspeakbutton.cpp @@ -66,6 +66,16 @@ void LLSpeakButton::draw() mOutputMonitor->setIsMuted(!voiceenabled); LLUICtrl::draw(); } +void LLSpeakButton::setSpeakBtnEnabled(bool enabled) +{ + LLButton* speak_btn = getChild<LLButton>("speak_btn"); + speak_btn->setEnabled(enabled); +} +void LLSpeakButton::setFlyoutBtnEnabled(bool enabled) +{ + LLButton* show_btn = getChild<LLButton>("speak_flyout_btn"); + show_btn->setEnabled(enabled); +} LLSpeakButton::LLSpeakButton(const Params& p) : LLUICtrl(p) diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h index 6660b50240..85c97f1a2c 100644 --- a/indra/newview/llspeakbutton.h +++ b/indra/newview/llspeakbutton.h @@ -61,6 +61,10 @@ public: /*virtual*/ ~LLSpeakButton(); /*virtual*/ void draw(); + + // methods for enabling/disabling right and left parts of speak button separately(EXT-4648) + void setSpeakBtnEnabled(bool enabled); + void setFlyoutBtnEnabled(bool enabled); // *HACK: Need to put tooltips in a translatable location, // the panel that contains this button. diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index a436dc0546..7ae2404203 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -37,6 +37,7 @@ #include "llfloaterreg.h" #include "llgroupactions.h" #include "llgroupiconctrl.h" +#include "llimview.h" #include "llnotifications.h" #include "llinstantmessage.h" #include "lltooltip.h" @@ -52,9 +53,9 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif { LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml"); - LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon"); mGroupIcon = getChild<LLGroupIconCtrl>("group_icon"); mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon"); + mAdhocIcon = getChild<LLAvatarIconCtrl>("adhoc_icon"); mAvatarName = getChild<LLTextBox>("user_name"); mTime = getChild<LLTextBox>("time_box"); mMessage = getChild<LLTextBox>("message"); @@ -90,27 +91,7 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif mAvatarID = p.avatar_id; mNotification = p.notification; - mAvatarIcon->setVisible(FALSE); - mGroupIcon->setVisible(FALSE); - sys_msg_icon->setVisible(FALSE); - - if(p.from == SYSTEM_FROM) - { - sys_msg_icon->setVisible(TRUE); - } - else - { - if(LLGroupActions::isInGroup(mSessionID)) - { - mGroupIcon->setVisible(TRUE); - mGroupIcon->setValue(p.session_id); - } - else - { - mAvatarIcon->setVisible(TRUE); - mAvatarIcon->setValue(p.avatar_id); - } - } + initIcon(); S32 maxLinesCount; std::istringstream ss( getString("message_max_lines_count") ); @@ -162,13 +143,27 @@ BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask) void LLToastIMPanel::showInspector() { - if(LLGroupActions::isInGroup(mSessionID)) + LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(mSessionID); + if(!im_session) { - LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID)); + llwarns << "Invalid IM session" << llendl; + return; } - else + + switch(im_session->mSessionType) { + case LLIMModel::LLIMSession::P2P_SESSION: LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID)); + break; + case LLIMModel::LLIMSession::GROUP_SESSION: + LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID)); + break; + case LLIMModel::LLIMSession::ADHOC_SESSION: + LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", im_session->mOtherParticipantID)); + break; + default: + llwarns << "Unknown IM session type" << llendl; + break; } } @@ -217,4 +212,48 @@ void LLToastIMPanel::spawnGroupIconToolTip() LLToolTipMgr::getInstance()->show(params); } +void LLToastIMPanel::initIcon() +{ + LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon"); + + mAvatarIcon->setVisible(FALSE); + mGroupIcon->setVisible(FALSE); + sys_msg_icon->setVisible(FALSE); + mAdhocIcon->setVisible(FALSE); + + if(mAvatarName->getValue().asString() == SYSTEM_FROM) + { + sys_msg_icon->setVisible(TRUE); + } + else + { + LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(mSessionID); + if(!im_session) + { + llwarns << "Invalid IM session" << llendl; + return; + } + + switch(im_session->mSessionType) + { + case LLIMModel::LLIMSession::P2P_SESSION: + mAvatarIcon->setVisible(TRUE); + mAvatarIcon->setValue(mAvatarID); + break; + case LLIMModel::LLIMSession::GROUP_SESSION: + mGroupIcon->setVisible(TRUE); + mGroupIcon->setValue(mSessionID); + break; + case LLIMModel::LLIMSession::ADHOC_SESSION: + mAdhocIcon->setVisible(TRUE); + mAdhocIcon->setValue(im_session->mOtherParticipantID); + mAdhocIcon->setToolTip(im_session->mName); + break; + default: + llwarns << "Unknown IM session type" << llendl; + break; + } + } +} + // EOF diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h index 444c0af144..cf4ad80637 100644 --- a/indra/newview/lltoastimpanel.h +++ b/indra/newview/lltoastimpanel.h @@ -66,6 +66,8 @@ private: void spawnNameToolTip(); void spawnGroupIconToolTip(); + void initIcon(); + static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT; LLNotificationPtr mNotification; @@ -73,6 +75,7 @@ private: LLUUID mAvatarID; LLAvatarIconCtrl* mAvatarIcon; LLGroupIconCtrl* mGroupIcon; + LLAvatarIconCtrl* mAdhocIcon; LLTextBox* mAvatarName; LLTextBox* mTime; LLTextBox* mMessage; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index e525561b7d..143d95d27e 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1478,6 +1478,11 @@ void inventory_offer_handler(LLOfferInfo* info) // Strip any SLURL from the message display. (DEV-2754) std::string msg = info->mDesc; int indx = msg.find(" ( http://slurl.com/secondlife/"); + if(indx == std::string::npos) + { + // try to find new slurl host + indx = msg.find(" ( http://maps.secondlife.com/secondlife/"); + } if(indx >= 0) { LLStringUtil::truncate(msg, indx); diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 7ec650629d..a075a706e1 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1597,14 +1597,6 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use instance->mTeleportInProgress = FALSE; instance->mTeleportFinishedSignal(gAgent.getPositionGlobal()); } - - // HACK: This makes agents drop from the sky if they enter a parcel - // which is set to no fly. - BOOL was_flying = gAgent.getFlying(); - if (was_flying && !parcel->getAllowFly()) - { - gAgent.setFlying(gAgent.canFly()); - } } } diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png Binary files differindex 6343ddf035..e8fe243dc7 100644 --- a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png +++ b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml index 703a02d995..961bd6b5e4 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -178,8 +178,8 @@ follows="top|left" height="16" halign="right" - left="150" - width="170" + left="140" + width="180" layout="topleft" name="buy_action"> [NAME] L$ [PRICE] diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml index 9212d2d648..1e32cfd9df 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml @@ -13,11 +13,11 @@ function="Self.EnableStandUp" /> </menu_item_call> <context_menu - label="Take Off >" + label="Take Off ▶" layout="topleft" name="Take Off >"> <context_menu - label="Clothes >" + label="Clothes ▶" layout="topleft" name="Clothes >"> <menu_item_call @@ -151,7 +151,7 @@ <menu_item_call.on_enable function="Edit.EnableTakeOff" parameter="alpha" /> - </menu_item_call> + </menu_item_call> <menu_item_separator layout="topleft" /> <menu_item_call @@ -164,11 +164,11 @@ </menu_item_call> </context_menu> <context_menu - label="HUD >" + label="HUD ▶" layout="topleft" name="Object Detach HUD" /> <context_menu - label="Detach >" + label="Detach ▶" layout="topleft" name="Object Detach" /> <menu_item_call diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index 56028bb2e5..5a9509e284 100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -65,7 +65,7 @@ </menu_item_call> <menu_item_separator layout="topleft" /> <context_menu - label="Put On >" + label="Put On ▶" name="Put On" > <menu_item_call enabled="false" @@ -77,16 +77,26 @@ function="Object.EnableWear" /> </menu_item_call> <context_menu - label="Attach >" + label="Attach ▶" name="Object Attach" /> <context_menu - label="Attach HUD >" + label="Attach HUD ▶" name="Object Attach HUD" /> </context_menu> <context_menu - label="Remove >" + label="Remove ▶" name="Remove"> <menu_item_call + enabled="false" + label="Take" + name="Pie Object Take"> + <menu_item_call.on_click + function="Tools.BuyOrTake" /> + <menu_item_call.on_enable + function="Tools.EnableBuyOrTake" + parameter="Buy,Take" /> + </menu_item_call> + <menu_item_call enabled="false" label="Report Abuse" name="Report Abuse..."> @@ -124,16 +134,6 @@ </menu_item_call> </context_menu> <menu_item_separator layout="topleft" /> - <menu_item_call - enabled="false" - label="Take" - name="Pie Object Take"> - <menu_item_call.on_click - function="Tools.BuyOrTake" /> - <menu_item_call.on_enable - function="Tools.EnableBuyOrTake" - parameter="Buy,Take" /> - </menu_item_call> <menu_item_call enabled="false" label="Take Copy" diff --git a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml index 1dc1c610cf..407ce14e81 100644 --- a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml @@ -19,6 +19,19 @@ <menu_item_call.on_click function="Profile.Share" /> </menu_item_call> + <menu_item_check + label="Block/Unblock" + layout="topleft" + name="block_unblock"> + <menu_item_check.on_click + function="Profile.BlockUnblock" /> + <menu_item_check.on_check + function="Profile.CheckItem" + parameter="is_blocked" /> + <menu_item_check.on_enable + function="Profile.EnableItem" + parameter="can_block" /> + </menu_item_check> <menu_item_call label="Kick" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml index 5a1bc32db0..a0ad38cf76 100644 --- a/indra/newview/skins/default/xui/en/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml @@ -45,6 +45,17 @@ name="group_icon" top="3" width="18" /> + <avatar_icon + color="Green" + follows="right" + height="18" + image_name="Generic_Person" + layout="topleft" + left="3" + mouse_opaque="false" + name="adhoc_icon" + top="3" + width="18" /> <!--<icon follows="right" height="20" diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index 02eddc9212..b2ed51abf3 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -141,12 +141,25 @@ font="SansSerifSmall" height="15" layout="topleft" - left="102" + left="0" name="favorite" image_drag_indication="Accordion_ArrowOpened_Off" bottom="55" tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!" width="590"> + <label + follows="left|top" + font.style="BOLD" + height="15" + layout="topleft" + left="10" + name="favorites_bar_label" + text_color="LtGray" + tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!" + top="12" + width="102"> + Favorites Bar + </label> <chevron_button name=">>" image_unselected="TabIcon_Close_Off" image_selected="TabIcon_Close_Off" @@ -157,15 +170,4 @@ top="15" height="15"/> </favorites_bar> - <text - follows="left|top" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - top_pad="-12" - name="favorites_bar_label" - text_color="LtGray" - tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!" - width="102">Favorites Bar</text> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 141678f7eb..4d14d46743 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> - <panel border="true" - follows="left|top|right|bottom" + follows="all" height="408" + label="Advanced" layout="topleft" left="102" name="advanced" @@ -13,130 +13,29 @@ name="aspect_ratio_text"> [NUM]:[DEN] </panel.string> - <check_box - control_name="UseChatBubbles" - follows="left|top" - height="16" - label="Bubble chat" - layout="topleft" - left="30" - top="10" - name="bubble_text_chat" - width="150" /> - <color_swatch - can_apply_immediately="true" - color="0 0 0 1" - control_name="BackgroundChatColor" - follows="left|top" - height="47" - layout="topleft" - left_delta="280" - name="background" - tool_tip="Choose color for bubble chat" - top_delta="1" - width="44"> - <color_swatch.init_callback - function="Pref.getUIColor" - parameter="BackgroundChatColor" /> - <color_swatch.commit_callback - function="Pref.applyUIColor" - parameter="BackgroundChatColor" /> - </color_swatch> - <slider - control_name="ChatBubbleOpacity" - follows="left|top" - height="16" - increment="0.05" - initial_value="1" - label="Opacity" - layout="topleft" - left_delta="-230" - top_pad="-28" - label_width="50" - name="bubble_chat_opacity" - width="200" /> - <text - follows="left|top" - type="string" - length="1" - height="25" - layout="topleft" - left="30" - top_pad="5" - name="AspectRatioLabel1" - tool_tip="width / height" - label_width="50" - width="120"> - Aspect ratio - </text> - <combo_box - allow_text_entry="true" - height="23" - follows="left|top" - layout="topleft" - left_pad="0" - max_chars="100" - name="aspect_ratio" - tool_tip="width / height" - top_delta="0" - width="150"> - <combo_box.item - enabled="true" - label=" 4:3 (Standard CRT)" - name="item1" - value="1.333333" /> - <combo_box.item - enabled="true" - label=" 5:4 (1280x1024 LCD)" - name="item2" - value="1.25" /> - <combo_box.item - enabled="true" - label=" 8:5 (Widescreen)" - name="item3" - value="1.6" /> - <combo_box.item - enabled="true" - label=" 16:9 (Widescreen)" - name="item4" - value="1.7777777" /> - </combo_box> - <check_box - control_name="FullScreenAutoDetectAspectRatio" - follows="left|top" - height="25" - label="Auto-detect" - layout="topleft" - left_pad="10" - name="aspect_auto_detect" - width="256"> - <check_box.commit_callback - function="Pref.AutoDetectAspect" /> - </check_box> - <text - follows="left|top" - type="string" - length="1" - height="10" - left="30" - name="heading1" - top_pad="5" - width="270"> -Camera: - </text> + <icon + follows="left|top" + height="18" + image_name="Cam_FreeCam_Off" + layout="topleft" + name="camera_icon" + mouse_opaque="false" + visible="true" + width="18" + left="30" + top="10"/> <slider can_edit_text="true" - control_name="CameraAngle" + control_name="CameraAngle" decimal_digits="2" - top_pad="5" follows="left|top" height="16" increment="0.025" initial_value="1.57" layout="topleft" label_width="100" - label="View Angle" - left_delta="50" + label="View angle" + left_pad="30" max_val="2.97" min_val="0.17" name="camera_fov" @@ -165,11 +64,11 @@ Camera: type="string" length="1" height="10" - left="30" + left="80" name="heading2" width="270" top_pad="5"> -Automatic positioning for: +Automatic position for: </text> <check_box control_name="EditCameraMovement" @@ -177,7 +76,7 @@ Automatic positioning for: follows="left|top" label="Build/Edit" layout="topleft" - left_delta="50" + left_delta="30" name="edit_camera_movement" tool_tip="Use automatic camera positioning when entering and exiting edit mode" width="280" @@ -191,27 +90,27 @@ Automatic positioning for: name="appearance_camera_movement" tool_tip="Use automatic camera positioning while in edit mode" width="242" /> - <text - follows="left|top" - type="string" - length="1" - height="10" - left="30" - name="heading3" - top_pad="5" - width="270"> -Avatars: - </text> + <icon + follows="left|top" + height="18" + image_name="Move_Walk_Off" + layout="topleft" + name="avatar_icon" + mouse_opaque="false" + visible="true" + width="18" + top_pad="2" + left="30" + /> <check_box control_name="FirstPersonAvatarVisible" follows="left|top" height="20" label="Show me in Mouselook" layout="topleft" - left_delta="50" + left_pad="30" name="first_person_avatar_visible" - width="256" - top_pad="0"/> + width="256" /> <check_box control_name="ArrowKeysAlwaysMove" follows="left|top" @@ -242,22 +141,61 @@ Avatars: name="enable_lip_sync" width="237" top_pad="0" /> + <check_box + control_name="UseChatBubbles" + follows="left|top" + height="16" + label="Bubble chat" + layout="topleft" + left="78" + top_pad="6" + name="bubble_text_chat" + width="150" /> + <slider + control_name="ChatBubbleOpacity" + follows="left|top" + height="16" + increment="0.05" + initial_value="1" + label="Opacity" + layout="topleft" + left="80" + label_width="50" + name="bubble_chat_opacity" + width="200" /> + <color_swatch + can_apply_immediately="true" + color="0 0 0 1" + control_name="BackgroundChatColor" + follows="left|top" + height="50" + layout="topleft" + left_pad="10" + name="background" + tool_tip="Choose color for bubble chat" + width="38"> + <color_swatch.init_callback + function="Pref.getUIColor" + parameter="BackgroundChatColor" /> + <color_swatch.commit_callback + function="Pref.applyUIColor" + parameter="BackgroundChatColor" /> + </color_swatch> <check_box control_name="ShowScriptErrors" follows="left|top" height="20" - label="Show script errors" + label="Show script errors in:" layout="topleft" left="30" name="show_script_errors" - width="256" - top_pad="5"/> + width="256" /> <radio_group enabled_control="ShowScriptErrors" control_name="ShowScriptErrorsLocation" follows="top|left" draw_border="false" - height="40" + height="16" layout="topleft" left_delta="50" name="show_location" @@ -265,7 +203,7 @@ Avatars: width="364"> <radio_item height="16" - label="In chat" + label="Nearby chat" layout="topleft" left="3" name="0" @@ -273,7 +211,7 @@ Avatars: width="315" /> <radio_item height="16" - label="In a window" + label="Separate window" layout="topleft" left_delta="175" name="1" @@ -284,50 +222,105 @@ Avatars: follows="top|left" enabled_control="EnableVoiceChat" control_name="PushToTalkToggle" - height="20" - label="Toggle mode for microphone when I press the Speak trigger key:" + height="15" + label="Toggle speak on/off when I press:" layout="topleft" left="30" name="push_to_talk_toggle_check" width="237" - top_pad="-25" tool_tip="When in toggle mode, press and release the trigger key ONCE to switch your microphone on or off. When not in toggle mode, the microphone broadcasts your voice only while the trigger is being held down."/> <line_editor follows="top|left" control_name="PushToTalkButton" - enabled="false" + enabled="false" enabled_control="EnableVoiceChat" - height="19" - left_delta="50" - max_length="254" + height="23" + left="80" + max_length="200" name="modifier_combo" label="Push-to-Speak trigger" - top_pad="0" - width="280" /> + top_pad="5" + width="200" /> <button follows="top|left" enabled_control="EnableVoiceChat" height="23" label="Set Key" - left_delta="0" + left_pad="5" name="set_voice_hotkey_button" - width="115" - top_pad="5"> + width="100"> <button.commit_callback function="Pref.VoiceSetKey" /> </button> <button - bottom_delta="0" enabled_control="EnableVoiceChat" - follows="left" + follows="top|left" halign="center" height="23" - label="Middle Mouse Button" - left_delta="120" + image_overlay="Refresh_Off" + tool_tip="Reset to Middle Mouse Button" mouse_opaque="true" name="set_voice_middlemouse_button" - width="160"> + left_pad="5" + width="25"> <button.commit_callback function="Pref.VoiceSetMiddleMouse" /> </button> + <text + follows="left|top" + type="string" + length="1" + height="13" + layout="topleft" + left="30" + top_pad="8" + name="AspectRatioLabel1" + tool_tip="width / height" + label_width="50" + width="120"> + Aspect ratio + </text> + <combo_box + allow_text_entry="true" + height="23" + follows="left|top" + layout="topleft" + left="80" + max_chars="100" + name="aspect_ratio" + tool_tip="width / height" + width="150"> + <combo_box.item + enabled="true" + label=" 4:3 (Standard CRT)" + name="item1" + value="1.333333" /> + <combo_box.item + enabled="true" + label=" 5:4 (1280x1024 LCD)" + name="item2" + value="1.25" /> + <combo_box.item + enabled="true" + label=" 8:5 (Widescreen)" + name="item3" + value="1.6" /> + <combo_box.item + enabled="true" + label=" 16:9 (Widescreen)" + name="item4" + value="1.7777777" /> + </combo_box> + <check_box + control_name="FullScreenAutoDetectAspectRatio" + follows="left|top" + height="25" + label="Automatic" + layout="topleft" + left_pad="10" + name="aspect_auto_detect" + width="256"> + <check_box.commit_callback + function="Pref.AutoDetectAspect" /> + </check_box> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml index ace8281b4e..188fd3b7bc 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel border="true" - height="500" + height="408" label="Popups" layout="topleft" left="0" @@ -14,7 +14,7 @@ follows="top|left" height="12" layout="topleft" - left="30" + left="10" name="tell_me_label" top="10" width="300"> @@ -32,7 +32,7 @@ <check_box control_name="ChatOnlineNotification" height="16" - label="When my friends log out or in" + label="When my friends log in or out" layout="topleft" left_delta="0" name="friends_online_notify_checkbox" @@ -42,38 +42,33 @@ type="string" length="1" follows="top|left" - font="SansSerifBold" height="12" layout="topleft" - left="30" + left="10" name="show_label" - top_pad="14" + top_pad="8" width="450"> - Always show these notifications: + Always show: </text> <scroll_list follows="top|left" - height="92" + height="140" layout="topleft" left="10" - multi_select="true" + multi_select="true" name="enabled_popups" width="475" /> <button enabled_control="FirstSelectedDisabledPopups" follows="top|left" height="23" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" image_overlay="Arrow_Up" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" hover_glow_amount="0.15" layout="topleft" - left_delta="137" + left="180" name="enable_this_popup" - top_pad="10" - width="43"> + top_pad="5" + width="40"> <button.commit_callback function="Pref.ClickEnablePopup" /> </button> @@ -81,17 +76,13 @@ enabled_control="FirstSelectedEnabledPopups" follows="top|left" height="23" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" image_overlay="Arrow_Down" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" hover_glow_amount="0.15" layout="topleft" - left_pad="50" + left_pad="40" name="disable_this_popup" top_delta="0" - width="43"> + width="40"> <button.commit_callback function="Pref.ClickDisablePopup" /> </button> @@ -99,21 +90,20 @@ type="string" length="1" follows="top|left" - font="SansSerifBold" height="12" layout="topleft" - left="30" + left="10" name="dont_show_label" - top_pad="10" + top_pad="-10" width="450"> - Never show these notifications: + Never show: </text> <scroll_list follows="top|left" - height="92" + height="140" layout="topleft" left="10" - multi_select="true" + multi_select="true" name="disabled_popups" width="475" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index b496f95422..099c789e4b 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -89,11 +89,12 @@ <text font="SansSerifSmall" type="string" + text_color="White_50" length="1" follows="left|top" height="18" layout="topleft" - left_pad="5" + left_pad="10" name="language_textbox2" width="200"> (Requires restart) @@ -179,7 +180,7 @@ left_pad="5" name="show_location_checkbox" top_delta="5" - width="256" /> + width="256" /> <text type="string" length="1" @@ -203,21 +204,21 @@ layout="topleft" name="radio" value="0" - width="100" /> + width="75" /> <radio_item label="On" layout="topleft" left_pad="12" name="radio2" value="1" - width="100" /> + width="75" /> <radio_item label="Show briefly" layout="topleft" left_pad="12" name="radio3" - value="2" - width="100" /> + value="2" + width="160" /> </radio_group> <check_box enabled_control="AvatarNameTagMode" @@ -326,7 +327,7 @@ left="30" mouse_opaque="false" name="text_box3" - top_pad="15" + top_pad="10" width="240"> Busy mode response: </text> @@ -335,18 +336,16 @@ text_readonly_color="LabelDisabledColor" bg_writeable_color="LtGray" use_ellipses="false" - bg_visible="true" - border_visible="true" hover="false" commit_on_focus_lost = "true" follows="left|top" - height="50" + height="60" layout="topleft" left="50" name="busy_response" - width="400" + width="440" word_wrap="true"> log_in_to_change </text_editor> - + </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index 39a8e53c7f..8bff865eb1 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -33,16 +33,15 @@ <button control_name="MuteAudio" follows="top|right" - height="18" + height="16" image_selected="AudioMute_Off" image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" + left_pad="10" name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <check_box control_name="MuteWhenMinimized" height="15" @@ -74,20 +73,19 @@ function="Pref.setControlFalse" parameter="MuteAmbient" /> </slider> - <button - control_name="MuteAmbient" + <button + control_name="MuteAmbient" disabled_control="MuteAudio" follows="top|right" - height="18" + height="16" image_selected="AudioMute_Off" image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_wind" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <slider control_name="AudioLevelUI" disabled_control="MuteAudio" @@ -113,16 +111,15 @@ control_name="MuteUI" disabled_control="MuteAudio" follows="top|right" - height="18" + height="16" image_selected="AudioMute_Off" image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_ui" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <slider control_name="AudioLevelMedia" disabled_control="MuteAudio" @@ -144,20 +141,19 @@ function="Pref.setControlFalse" parameter="MuteMedia" /> </slider> - <button + <button control_name="MuteMedia" disabled_control="MuteAudio" follows="top|right" - height="18" + height="16" image_selected="AudioMute_Off" image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_media" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <slider control_name="AudioLevelSFX" disabled_control="MuteAudio" @@ -179,20 +175,19 @@ function="Pref.setControlFalse" parameter="MuteSounds" /> </slider> - <button + <button control_name="MuteSounds" disabled_control="MuteAudio" follows="top|right" - height="18" + height="16" image_selected="AudioMute_Off" image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_sfx" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <slider control_name="AudioLevelMusic" disabled_control="MuteAudio" @@ -214,20 +209,19 @@ function="Pref.setControlFalse" parameter="MuteMusic" /> </slider> - <button + <button control_name="MuteMusic" disabled_control="MuteAudio" follows="top|right" - height="18" + height="16" image_selected="AudioMute_Off" image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_music" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <check_box label_text.halign="left" follows="left|top" @@ -236,10 +230,9 @@ disabled_control="CmdLineDisableVoice" label="Enable voice" layout="topleft" - font.style="BOLD" - left="101" + left="28" name="enable_voice_check" - top_pad="13" + top_pad="5" width="110" > </check_box> @@ -265,21 +258,19 @@ function="Pref.setControlFalse" parameter="MuteVoice" /> </slider> - <button + <button control_name="MuteVoice" - enabled_control="EnableVoiceChat" disabled_control="MuteAudio" follows="top|right" - height="18" + height="16" image_selected="AudioMute_Off" image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_voice" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <text type="string" length="1" @@ -366,7 +357,7 @@ name="device_settings_panel" class="panel_voice_device_settings" width="501" - top="280"> + top="285"> <panel.string name="default_text"> Default diff --git a/indra/test/llhttpclient_tut.cpp b/indra/test/llhttpclient_tut.cpp index c541997e89..2b1496e912 100644 --- a/indra/test/llhttpclient_tut.cpp +++ b/indra/test/llhttpclient_tut.cpp @@ -269,6 +269,7 @@ namespace tut template<> template<> void HTTPClientTestObject::test<2>() { + skip("error test depends on dev's local ISP not supplying \"helpful\" search page"); LLHTTPClient::get("http://www.invalid", newResult()); runThePump(); ensureStatusError(); diff --git a/install.xml b/install.xml index 797bde5756..0c3c88ce72 100644 --- a/install.xml +++ b/install.xml @@ -193,30 +193,30 @@ <key>darwin</key> <map> <key>md5sum</key> - <string>609c469ee1857723260b5a9943b9c2c1</string> + <string>84821102cb819257a66c8f38732647fc</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-darwin-20091202.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-darwin-20100119.tar.bz2</uri> </map> <key>linux</key> <map> <key>md5sum</key> - <string>7085044567999489d82b9ed28f16e480</string> + <string>ee8e1b4bbcf137a84d6a85a1c51386ff</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux-20091202.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux-20100119.tar.bz2</uri> </map> <key>linux64</key> <map> <key>md5sum</key> - <string>b4aeefcba3d749f1e9f2a12c6f70192b</string> + <string>af4badd6b2c10bc4db82ff1256695892</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux64-20091202.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux64-20100119.tar.bz2</uri> </map> <key>windows</key> <map> <key>md5sum</key> - <string>6746ae9fd9aff98b15f7b9f0f40334ab</string> + <string>acbf7a4165a917a4e087879d1756b355</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-windows-20091204.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-windows-20100119.tar.bz2</uri> </map> </map> </map> |