summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llcommon/llchat.h4
-rw-r--r--indra/llcommon/lldate.cpp3
-rw-r--r--indra/llcommon/llprocessor.cpp3
-rw-r--r--indra/llcommon/llstring.h1
-rw-r--r--indra/llcommon/lluri.cpp15
-rw-r--r--indra/llmath/llinterp.h3
-rw-r--r--indra/llmath/lloctree.h1
-rw-r--r--indra/llmessage/llcachename.cpp2
-rw-r--r--indra/llmessage/llmessagetemplateparser.cpp4
-rw-r--r--indra/llplugin/llpluginprocesschild.cpp1
-rw-r--r--indra/llprimitive/llprimitive.cpp1
-rw-r--r--indra/llrender/llfontbitmapcache.cpp4
-rw-r--r--indra/llrender/llimagegl.cpp5
-rw-r--r--indra/llrender/llvertexbuffer.cpp6
-rw-r--r--indra/llui/llcombobox.cpp9
-rw-r--r--indra/llui/lldraghandle.cpp1
-rw-r--r--indra/llui/llfloater.cpp5
-rw-r--r--indra/llui/llfloater.h3
-rw-r--r--indra/llui/llmenugl.cpp5
-rw-r--r--indra/llui/llmenugl.h2
-rw-r--r--indra/llui/llscrolllistctrl.cpp2
-rw-r--r--indra/llui/llstyle.cpp5
-rw-r--r--indra/llui/lltooltip.cpp3
-rw-r--r--indra/llui/lluistring.h2
-rw-r--r--indra/newview/CMakeLists.txt2
-rw-r--r--indra/newview/llagentwearables.cpp4
-rw-r--r--indra/newview/llappviewermacosx.cpp50
-rw-r--r--indra/newview/llchathistory.cpp70
-rw-r--r--indra/newview/llchathistory.h7
-rw-r--r--indra/newview/llcompilequeue.cpp5
-rw-r--r--indra/newview/llcompilequeue.h4
-rw-r--r--indra/newview/lleventnotifier.cpp1
-rw-r--r--indra/newview/llface.cpp1
-rw-r--r--indra/newview/llflexibleobject.cpp1
-rw-r--r--indra/newview/llfloateranimpreview.h1
-rw-r--r--indra/newview/llfloaterhardwaresettings.cpp12
-rw-r--r--indra/newview/llfloaterjoystick.cpp11
-rw-r--r--indra/newview/llfloaterjoystick.h2
-rw-r--r--indra/newview/llfloatermap.cpp1
-rw-r--r--indra/newview/llfloaterregioninfo.cpp10
-rw-r--r--indra/newview/llfloatersnapshot.cpp11
-rw-r--r--indra/newview/llfolderview.cpp100
-rw-r--r--indra/newview/llfolderview.h5
-rw-r--r--indra/newview/llimfloater.cpp1
-rw-r--r--indra/newview/llimview.cpp8
-rw-r--r--indra/newview/llinspectremoteobject.cpp25
-rw-r--r--indra/newview/llinventorybridge.h8
-rw-r--r--indra/newview/lllocaltextureobject.cpp4
-rw-r--r--indra/newview/lllocationhistory.cpp2
-rw-r--r--indra/newview/lllocationinputctrl.cpp6
-rw-r--r--indra/newview/llmanipscale.cpp1
-rw-r--r--indra/newview/llmaniptranslate.cpp4
-rw-r--r--indra/newview/llnearbychat.cpp6
-rw-r--r--indra/newview/llnearbychat.h2
-rw-r--r--indra/newview/llnearbychathandler.cpp4
-rw-r--r--indra/newview/llnearbychathandler.h2
-rw-r--r--indra/newview/llnotificationhandler.h2
-rw-r--r--indra/newview/llnotificationmanager.cpp7
-rw-r--r--indra/newview/llnotificationmanager.h2
-rw-r--r--indra/newview/llpanelavatar.cpp3
-rw-r--r--indra/newview/llpanelgroup.cpp23
-rw-r--r--indra/newview/llpanelgroup.h7
-rw-r--r--indra/newview/llpanellandmarkinfo.cpp2
-rw-r--r--indra/newview/llpanellandmarkinfo.h2
-rw-r--r--indra/newview/llpanelobjectinventory.cpp4
-rw-r--r--indra/newview/llpanelplaceinfo.cpp3
-rw-r--r--indra/newview/llpanelplaceinfo.h8
-rw-r--r--indra/newview/llpanelplaceprofile.cpp2
-rw-r--r--indra/newview/llpanelplaceprofile.h2
-rw-r--r--indra/newview/llpanelplaces.h4
-rw-r--r--indra/newview/llpanelteleporthistory.cpp2
-rw-r--r--indra/newview/llplacesinventorypanel.cpp17
-rw-r--r--indra/newview/llplacesinventorypanel.h2
-rw-r--r--indra/newview/llselectmgr.cpp4
-rw-r--r--indra/newview/llspatialpartition.cpp2
-rw-r--r--indra/newview/llsurfacepatch.cpp4
-rw-r--r--indra/newview/lltexlayer.cpp3
-rw-r--r--indra/newview/lltexturecache.h7
-rw-r--r--indra/newview/lltexturefetch.cpp2
-rw-r--r--indra/newview/lltoastimpanel.cpp51
-rw-r--r--indra/newview/lltoastimpanel.h7
-rw-r--r--indra/newview/lltoolbar.cpp5
-rw-r--r--indra/newview/lltooldraganddrop.cpp14
-rw-r--r--indra/newview/lltoolgrab.cpp6
-rw-r--r--indra/newview/llviewerjoint.cpp20
-rw-r--r--indra/newview/llviewerjoint.h2
-rw-r--r--indra/newview/llviewerjointmesh.cpp1
-rw-r--r--indra/newview/llviewermessage.cpp23
-rw-r--r--indra/newview/llviewermessage.h4
-rw-r--r--indra/newview/llviewernetwork.cpp1
-rw-r--r--indra/newview/llviewerparcelmgr.cpp4
-rw-r--r--indra/newview/llviewerpartsim.cpp1
-rw-r--r--indra/newview/llviewershadermgr.cpp3
-rw-r--r--indra/newview/llviewertexture.cpp3
-rw-r--r--indra/newview/llviewervisualparam.cpp1
-rw-r--r--indra/newview/llviewerwindow.cpp8
-rw-r--r--indra/newview/llviewerwindow.h3
-rw-r--r--indra/newview/llvoiceclient.cpp7
-rw-r--r--indra/newview/llvosky.cpp11
-rw-r--r--indra/newview/llvosky.h6
-rw-r--r--indra/newview/llvovolume.cpp2
-rw-r--r--indra/newview/llwearable.cpp7
-rw-r--r--indra/newview/llwearable.h2
-rw-r--r--indra/newview/skins/default/xui/en/floater_map.xml5
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_list_item.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_landmark_info.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_place_profile.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/location_input.xml2
109 files changed, 591 insertions, 188 deletions
diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h
index 5af7991006..46456882ba 100644
--- a/indra/llcommon/llchat.h
+++ b/indra/llcommon/llchat.h
@@ -87,7 +87,8 @@ public:
mTimeStr(),
mPosAgent(),
mURL(),
- mChatStyle(CHAT_STYLE_NORMAL)
+ mChatStyle(CHAT_STYLE_NORMAL),
+ mSessionID()
{ }
std::string mText; // UTF-8 line of text
@@ -102,6 +103,7 @@ public:
LLVector3 mPosAgent;
std::string mURL;
EChatStyle mChatStyle;
+ LLUUID mSessionID;
};
#endif
diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp
index ca7e471bf2..de7f2ead74 100644
--- a/indra/llcommon/lldate.cpp
+++ b/indra/llcommon/lldate.cpp
@@ -152,7 +152,8 @@ void LLDate::toStream(std::ostream& s) const
s << '.' << std::setw(2)
<< (int)(exp_time.tm_usec / (LL_APR_USEC_PER_SEC / 100));
}
- s << 'Z';
+ s << 'Z'
+ << std::setfill(' ');
}
bool LLDate::split(S32 *year, S32 *month, S32 *day, S32 *hour, S32 *min, S32 *sec) const
diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp
index 469e544b16..8a4a4a8f9a 100644
--- a/indra/llcommon/llprocessor.cpp
+++ b/indra/llcommon/llprocessor.cpp
@@ -281,7 +281,8 @@ bool CProcessor::AnalyzeIntelProcessor()
// already have a string here from GetCPUInfo(). JC
if ( CPUInfo.uiBrandID < LL_ARRAY_SIZE(INTEL_BRAND) )
{
- strcpy(CPUInfo.strBrandID, INTEL_BRAND[CPUInfo.uiBrandID]);
+ strncpy(CPUInfo.strBrandID, INTEL_BRAND[CPUInfo.uiBrandID], sizeof(CPUInfo.strBrandID)-1);
+ CPUInfo.strBrandID[sizeof(CPUInfo.strBrandID)-1]='\0';
if (CPUInfo.uiBrandID == 3 && CPUInfo.uiModel == 6)
{
diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
index 31e70e0fe4..62cedcde4e 100644
--- a/indra/llcommon/llstring.h
+++ b/indra/llcommon/llstring.h
@@ -882,6 +882,7 @@ void LLStringUtilBase<T>::addCRLF(std::basic_string<T>& string)
}
string.assign(t, size);
+ delete[] t;
}
}
diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp
index f6e8f01f0e..9d4f3a98f0 100644
--- a/indra/llcommon/lluri.cpp
+++ b/indra/llcommon/lluri.cpp
@@ -46,10 +46,21 @@
void encode_character(std::ostream& ostr, std::string::value_type val)
{
- ostr << "%" << std::uppercase << std::hex << std::setw(2) << std::setfill('0')
+ ostr << "%"
+
+ << std::uppercase
+ << std::hex
+ << std::setw(2)
+ << std::setfill('0')
+
// VWR-4010 Cannot cast to U32 because sign-extension on
// chars > 128 will result in FFFFFFC3 instead of F3.
- << static_cast<S32>(static_cast<U8>(val));
+ << static_cast<S32>(static_cast<U8>(val))
+
+ // reset stream state
+ << std::nouppercase
+ << std::dec
+ << std::setfill(' ');
}
// static
diff --git a/indra/llmath/llinterp.h b/indra/llmath/llinterp.h
index 36ca2e9865..88af004170 100644
--- a/indra/llmath/llinterp.h
+++ b/indra/llmath/llinterp.h
@@ -54,7 +54,7 @@ template <typename Type>
class LLInterp
{
public:
- LLInterp();
+ LLInterp();
virtual ~LLInterp() {}
virtual void start();
@@ -151,6 +151,7 @@ protected:
template <typename Type>
LLInterp<Type>::LLInterp()
+: mStartVal(Type()), mEndVal(Type()), mCurVal(Type())
{
mStartTime = 0.f;
mEndTime = 1.f;
diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h
index ba8776690a..2f34fb1bb0 100644
--- a/indra/llmath/lloctree.h
+++ b/indra/llmath/lloctree.h
@@ -183,7 +183,6 @@ public:
{
mMax.mdV[i] = mCenter.mdV[i] + mSize.mdV[i];
mMin.mdV[i] = mCenter.mdV[i] - mSize.mdV[i];
- mCenter.mdV[i] = mCenter.mdV[i];
}
}
diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp
index 3078d80552..dbec2816c8 100644
--- a/indra/llmessage/llcachename.cpp
+++ b/indra/llmessage/llcachename.cpp
@@ -125,7 +125,7 @@ private:
};
ReplySender::ReplySender(LLMessageSystem* msg)
- : mMsg(msg), mPending(false)
+ : mMsg(msg), mPending(false), mCurrIsGroup(false)
{ }
ReplySender::~ReplySender()
diff --git a/indra/llmessage/llmessagetemplateparser.cpp b/indra/llmessage/llmessagetemplateparser.cpp
index 283547ea00..2ddbf3e0df 100644
--- a/indra/llmessage/llmessagetemplateparser.cpp
+++ b/indra/llmessage/llmessagetemplateparser.cpp
@@ -403,6 +403,10 @@ LLTemplateParser::LLTemplateParser(LLTemplateTokenizer & tokens):
{
mMessages.push_back(templatep);
}
+ else
+ {
+ delete templatep;
+ }
}
if(!tokens.wantEOF())
diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index 07fc82c770..11c924cadf 100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
@@ -359,6 +359,7 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message)
else
{
LL_WARNS("Plugin") << "Couldn't create a shared memory segment!" << LL_ENDL;
+ delete region;
}
}
diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
index 5ad758072c..b75d1b0f67 100644
--- a/indra/llprimitive/llprimitive.cpp
+++ b/indra/llprimitive/llprimitive.cpp
@@ -154,6 +154,7 @@ bool LLPrimitive::cleanupVolumeManager()
//===============================================================
LLPrimitive::LLPrimitive()
: mTextureList(),
+ mNumTEs(0),
mMiscFlags(0)
{
mPrimitiveCode = 0;
diff --git a/indra/llrender/llfontbitmapcache.cpp b/indra/llrender/llfontbitmapcache.cpp
index f01878642a..fa231c9e6a 100644
--- a/indra/llrender/llfontbitmapcache.cpp
+++ b/indra/llrender/llfontbitmapcache.cpp
@@ -64,7 +64,7 @@ void LLFontBitmapCache::init(S32 num_components,
LLImageRaw *LLFontBitmapCache::getImageRaw(U32 bitmap_num) const
{
- if ((bitmap_num < 0) || (bitmap_num >= mImageRawVec.size()))
+ if (bitmap_num >= mImageRawVec.size())
return NULL;
return mImageRawVec[bitmap_num];
@@ -72,7 +72,7 @@ LLImageRaw *LLFontBitmapCache::getImageRaw(U32 bitmap_num) const
LLImageGL *LLFontBitmapCache::getImageGL(U32 bitmap_num) const
{
- if ((bitmap_num < 0) || (bitmap_num >= mImageGLVec.size()))
+ if (bitmap_num >= mImageGLVec.size())
return NULL;
return mImageGLVec[bitmap_num];
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 46478ba3c9..8bcc4723ae 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -1716,10 +1716,7 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in)
{
U32 pick_idx = pick_bit/8;
U32 pick_offset = pick_bit%8;
- if (pick_idx >= size)
- {
- llerrs << "WTF?" << llendl;
- }
+ llassert(pick_idx < size);
mPickMask[pick_idx] |= 1 << pick_offset;
}
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 572ae13909..ecfe845b34 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -237,7 +237,7 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi
llerrs << "Wrong vertex buffer bound." << llendl;
}
- if (mode > LLRender::NUM_MODES)
+ if (mode >= LLRender::NUM_MODES)
{
llerrs << "Invalid draw mode: " << mode << llendl;
return;
@@ -267,7 +267,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
llerrs << "Wrong vertex buffer bound." << llendl;
}
- if (mode > LLRender::NUM_MODES)
+ if (mode >= LLRender::NUM_MODES)
{
llerrs << "Invalid draw mode: " << mode << llendl;
return;
@@ -292,7 +292,7 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
llerrs << "Wrong vertex buffer bound." << llendl;
}
- if (mode > LLRender::NUM_MODES)
+ if (mode >= LLRender::NUM_MODES)
{
llerrs << "Invalid draw mode: " << mode << llendl;
return;
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index f29e8785eb..9d23daf56d 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -103,7 +103,8 @@ LLComboBox::LLComboBox(const LLComboBox::Params& p)
mPrearrangeCallback(p.prearrange_callback()),
mTextEntryCallback(p.text_entry_callback()),
mListPosition(p.list_position),
- mLastSelectedIndex(-1)
+ mLastSelectedIndex(-1),
+ mLabel(p.label)
{
// Text label button
@@ -490,6 +491,7 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p)
params.handle_edit_keys_directly(true);
params.commit_on_focus_lost(false);
params.follows.flags(FOLLOWS_ALL);
+ params.label(mLabel);
mTextEntry = LLUICtrlFactory::create<LLLineEditor> (params);
mTextEntry->setText(cur_label);
mTextEntry->setIgnoreTab(TRUE);
@@ -505,7 +507,8 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p)
mButton->setRect(rect);
mButton->setTabStop(TRUE);
mButton->setHAlign(LLFontGL::LEFT);
-
+ mButton->setLabel(mLabel.getString());
+
if (mTextEntry)
{
mTextEntry->setVisible(FALSE);
@@ -633,7 +636,7 @@ void LLComboBox::hideList()
if(mLastSelectedIndex >= 0)
mList->selectNthItem(mLastSelectedIndex);
}
- else
+ else if(mLastSelectedIndex >= 0)
mList->selectNthItem(mLastSelectedIndex);
mButton->setToggleState(FALSE);
diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp
index a93c666648..832f148902 100644
--- a/indra/llui/lldraghandle.cpp
+++ b/indra/llui/lldraghandle.cpp
@@ -113,6 +113,7 @@ void LLDragHandleTop::setTitle(const std::string& title)
params.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT | FOLLOWS_RIGHT);
params.font_shadow(LLFontGL::DROP_SHADOW_SOFT);
params.use_ellipses = true;
+ params.allow_html = false; //cancel URL replacement in floater title
mTitleBox = LLUICtrlFactory::create<LLTextBox> (params);
addChild( mTitleBox );
}
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 79d8f90fec..de46d89d6f 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -1916,9 +1916,10 @@ static LLDefaultChildRegistry::Register<LLFloaterView> r("floater_view");
LLFloaterView::LLFloaterView (const Params& p)
: LLUICtrl (p),
+
mFocusCycleMode(FALSE),
- mSnapOffsetBottom(0)
- ,mSnapOffsetRight(0)
+ mSnapOffsetBottom(0),
+ mSnapOffsetRight(0)
{
}
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index f70495c0f0..8c9dacbd20 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -468,9 +468,6 @@ public:
void setSnapOffsetRight(S32 offset) { mSnapOffsetRight = offset; }
private:
- S32 mColumn;
- S32 mNextLeft;
- S32 mNextTop;
BOOL mFocusCycleMode;
S32 mSnapOffsetBottom;
S32 mSnapOffsetRight;
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index ceb1e9820e..7fa9a88059 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -1651,6 +1651,7 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p)
mBackgroundColor( p.bg_color() ),
mBgVisible( p.bg_visible ),
mDropShadowed( p.drop_shadow ),
+ mHasSelection(false),
mHorizontalLayout( p.horizontal_layout ),
mScrollable(mHorizontalLayout ? FALSE : p.scrollable), // Scrolling is supported only for vertical layout
mMaxScrollableItems(p.max_scrollable_items),
@@ -2813,7 +2814,7 @@ BOOL LLMenuGL::handleHover( S32 x, S32 y, MASK mask )
((LLMenuItemGL*)viewp)->setHighlight(TRUE);
LLMenuGL::setKeyboardMode(FALSE);
}
- mHasSelection = TRUE;
+ mHasSelection = true;
}
}
}
@@ -2892,7 +2893,7 @@ void LLMenuGL::setVisible(BOOL visible)
}
else
{
- mHasSelection = FALSE;
+ mHasSelection = true;
mFadeTimer.stop();
}
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 61e06f9e5f..8441aaadd4 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -546,7 +546,7 @@ private:
LLHandle<LLView> mParentMenuItem;
LLUIString mLabel;
BOOL mDropShadowed; // Whether to drop shadow
- BOOL mHasSelection;
+ bool mHasSelection;
LLFrameTimer mFadeTimer;
LLTimer mScrollItemsTimer;
BOOL mTornOff;
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 78386220d9..478e270c98 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -1534,7 +1534,7 @@ LLRect LLScrollListCtrl::getCellRect(S32 row_index, S32 column_index)
S32 rect_bottom = getRowOffsetFromIndex(row_index);
LLScrollListColumn* columnp = getColumn(column_index);
cell_rect.setOriginAndSize(rect_left, rect_bottom,
- rect_left + columnp->getWidth(), mLineHeight);
+ /*rect_left + */columnp->getWidth(), mLineHeight);
return cell_rect;
}
diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp
index 71511f69a4..b8f93b6a0e 100644
--- a/indra/llui/llstyle.cpp
+++ b/indra/llui/llstyle.cpp
@@ -49,7 +49,10 @@ LLStyle::Params::Params()
LLStyle::LLStyle(const LLStyle::Params& p)
-: mVisible(p.visible),
+: mItalic(FALSE),
+ mBold(FALSE),
+ mUnderline(FALSE),
+ mVisible(p.visible),
mColor(p.color()),
mReadOnlyColor(p.readonly_color()),
mFont(p.font()),
diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp
index 01c7a81309..173fde8e76 100644
--- a/indra/llui/lltooltip.cpp
+++ b/indra/llui/lltooltip.cpp
@@ -400,7 +400,8 @@ bool LLToolTip::hasClickCallback()
//
LLToolTipMgr::LLToolTipMgr()
-: mToolTip(NULL),
+: mToolTipsBlocked(false),
+ mToolTip(NULL),
mNeedsToolTip(false)
{}
diff --git a/indra/llui/lluistring.h b/indra/llui/lluistring.h
index 7ec0fd603a..32cfc0d9cd 100644
--- a/indra/llui/lluistring.h
+++ b/indra/llui/lluistring.h
@@ -64,7 +64,7 @@ class LLUIString
public:
// These methods all perform appropriate argument substitution
// and modify mOrig where appropriate
- LLUIString() {}
+ LLUIString() : mNeedsResult(false), mNeedsWResult(false) {}
LLUIString(const std::string& instring, const LLStringUtil::format_map_t& args);
LLUIString(const std::string& instring) { assign(instring); }
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 7ddeb90d29..4c0c895a7d 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1064,11 +1064,13 @@ if (DARWIN)
find_library(APPKIT_LIBRARY AppKit)
find_library(COCOA_LIBRARY Cocoa)
find_library(IOKIT_LIBRARY IOKit)
+ find_library(COREAUDIO_LIBRARY CoreAudio)
set(viewer_LIBRARIES
${COCOA_LIBRARY}
${AGL_LIBRARY}
${IOKIT_LIBRARY}
+ ${COREAUDIO_LIBRARY}
)
# Add resource files to the project.
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index c21cdf9508..b0ff3a5626 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1130,8 +1130,9 @@ void LLAgentWearables::addLocalTextureObject(const EWearableType wearable_type,
if (!wearable)
{
llerrs << "Tried to add local texture object to invalid wearable with type " << wearable_type << " and index " << wearable_index << llendl;
+ return;
}
- LLLocalTextureObject* lto = new LLLocalTextureObject();
+ LLLocalTextureObject lto;
wearable->setLocalTextureObject(texture_type, lto);
}
@@ -2527,6 +2528,7 @@ void LLInitialWearablesFetch::processWearablesMessage()
{
llinfos << "Invalid wearable, type " << wearable_data->mType << " itemID "
<< wearable_data->mItemID << " assetID " << wearable_data->mAssetID << llendl;
+ delete wearable_data;
}
}
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index cc38a0940c..f8f8f50cd6 100644
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -50,6 +50,7 @@
#include <Carbon/Carbon.h>
#include "lldir.h"
#include <signal.h>
+#include <CoreAudio/CoreAudio.h> // for systemwide mute
class LLMediaCtrl; // for LLURLDispatcher
namespace
@@ -444,18 +445,57 @@ std::string LLAppViewerMacOSX::generateSerialNumber()
return serial_md5;
}
+static AudioDeviceID get_default_audio_output_device(void)
+{
+ AudioDeviceID device = 0;
+ UInt32 size;
+ OSStatus err;
+
+ size = sizeof(device);
+ err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &size, &device);
+ if(err != noErr)
+ {
+ LL_DEBUGS("SystemMute") << "Couldn't get default audio output device (0x" << std::hex << err << ")" << LL_ENDL;
+ }
+
+ return device;
+}
+
//virtual
-void LLAppViewerMacOSX::setMasterSystemAudioMute(bool mute)
+void LLAppViewerMacOSX::setMasterSystemAudioMute(bool new_mute)
{
- // XXX TODO: make this actually set the OS's audio mute state
- gSavedSettings.setBOOL("MuteAudio", mute);
+ AudioDeviceID device = get_default_audio_output_device();
+
+ if(device != 0)
+ {
+ UInt32 mute = new_mute;
+ OSStatus err = AudioDeviceSetProperty(device, NULL, 0, false, kAudioDevicePropertyMute, sizeof(mute), &mute);
+ if(err != noErr)
+ {
+ LL_INFOS("SystemMute") << "Couldn't set audio mute property (0x" << std::hex << err << ")" << LL_ENDL;
+ }
+ }
}
//virtual
bool LLAppViewerMacOSX::getMasterSystemAudioMute()
{
- // XXX TODO: make this actually get the OS's audio mute state
- return gSavedSettings.getBOOL("MuteAudio");
+ // Assume the system isn't muted
+ UInt32 mute = 0;
+
+ AudioDeviceID device = get_default_audio_output_device();
+
+ if(device != 0)
+ {
+ UInt32 size = sizeof(mute);
+ OSStatus err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyMute, &size, &mute);
+ if(err != noErr)
+ {
+ LL_DEBUGS("SystemMute") << "Couldn't get audio mute property (0x" << std::hex << err << ")" << LL_ENDL;
+ }
+ }
+
+ return (mute != 0);
}
OSErr AEGURLHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index d6a7edee5b..f1e7e622b3 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -34,7 +34,9 @@
#include "llinstantmessage.h"
+#include "llimview.h"
#include "llchathistory.h"
+#include "llcommandhandler.h"
#include "llpanel.h"
#include "lluictrlfactory.h"
#include "llscrollcontainer.h"
@@ -46,8 +48,11 @@
#include "llfloaterreg.h"
#include "llmutelist.h"
#include "llstylemap.h"
+#include "llslurl.h"
#include "lllayoutstack.h"
#include "llagent.h"
+#include "llviewerregion.h"
+#include "llworld.h"
#include "llsidetray.h"//for blocked objects panel
@@ -55,6 +60,38 @@ static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
const static std::string NEW_LINE(rawstr_to_utf8("\n"));
+// support for secondlife:///app/objectim/{UUID}/ SLapps
+class LLObjectIMHandler : public LLCommandHandler
+{
+public:
+ // requests will be throttled from a non-trusted browser
+ LLObjectIMHandler() : LLCommandHandler("objectim", UNTRUSTED_THROTTLE) {}
+
+ bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)
+ {
+ if (params.size() < 1)
+ {
+ return false;
+ }
+
+ LLUUID object_id;
+ if (!object_id.set(params[0], FALSE))
+ {
+ return false;
+ }
+
+ LLSD payload;
+ payload["object_id"] = object_id;
+ payload["owner_id"] = query_map["owner"];
+ payload["name"] = query_map["name"];
+ payload["slurl"] = query_map["slurl"];
+ payload["group_owned"] = query_map["groupowned"];
+ LLFloaterReg::showInstance("inspect_remote_object", payload);
+ return true;
+ }
+};
+LLObjectIMHandler gObjectIMHandler;
+
class LLChatHistoryHeader: public LLPanel
{
public:
@@ -183,6 +220,7 @@ public:
void setup(const LLChat& chat,const LLStyle::Params& style_params)
{
mAvatarID = chat.mFromID;
+ mSessionID = chat.mSessionID;
mSourceType = chat.mSourceType;
gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4));
if(chat.mFromID.isNull())
@@ -305,6 +343,11 @@ protected:
menu->setItemEnabled("Remove Friend", false);
}
+ if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID))
+ {
+ menu->setItemVisible("Send IM", false);
+ }
+
menu->buildDrawLabels();
menu->updateParent(LLMenuGL::sMenuContainer);
LLMenuGL::showPopup(this, menu, x, y);
@@ -344,6 +387,7 @@ protected:
std::string mFirstName;
std::string mLastName;
std::string mFrom;
+ LLUUID mSessionID;
S32 mMinUserNameWidth;
};
@@ -457,8 +501,9 @@ void LLChatHistory::clear()
mLastFromID = LLUUID::null;
}
-void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_chat_history, const LLStyle::Params& input_append_params)
+void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LLStyle::Params& input_append_params)
{
+ bool use_plain_text_chat_history = args["use_plain_text_chat_history"].asBoolean();
if (!mEditor->scrolledToEnd() && chat.mFromID != gAgent.getID() && !chat.mFromName.empty())
{
mUnreadChatSources.insert(chat.mFromName);
@@ -524,7 +569,28 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
if (utf8str_trim(chat.mFromName).size() != 0)
{
// Don't hotlink any messages from the system (e.g. "Second Life:"), so just add those in plain text.
- if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() )
+ if ( chat.mSourceType == CHAT_SOURCE_OBJECT )
+ {
+ // for object IMs, create a secondlife:///app/objectim SLapp
+ std::string url = LLSLURL::buildCommand("objectim", chat.mFromID, "");
+ url += "?name=" + chat.mFromName;
+ url += "&owner=" + args["owner_id"].asString();
+
+ LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent);
+ if (region)
+ {
+ S32 x, y, z;
+ LLSLURL::globalPosToXYZ(LLVector3d(chat.mPosAgent), x, y, z);
+ url += "&slurl=" + region->getName() + llformat("/%d/%d/%d", x, y, z);
+ }
+
+ // set the link for the object name to be the objectim SLapp
+ LLStyle::Params link_params(style_params);
+ link_params.color.control = "HTMLLinkColor";
+ link_params.link_href = url;
+ mEditor->appendText(chat.mFromName + delimiter, false, link_params);
+ }
+ else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() )
{
LLStyle::Params link_params(style_params);
link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index c2c60e60cf..32600bb71d 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -113,11 +113,14 @@ class LLChatHistory : public LLUICtrl
* Appends a widget message.
* If last user appended message, concurs with current user,
* separator is added before the message, otherwise header is added.
+ * The args LLSD contains:
+ * - use_plain_text_chat_history (bool) - whether to add message as plain text.
+ * - owner_id (LLUUID) - the owner ID for object chat
* @param chat - base chat message.
- * @param use_plain_text_chat_history - whether to add message as plain text.
+ * @param args - additional arguments
* @param input_append_params - font style.
*/
- void appendMessage(const LLChat& chat, const bool use_plain_text_chat_history = false, const LLStyle::Params& input_append_params = LLStyle::Params());
+ void appendMessage(const LLChat& chat, const LLSD &args = LLSD(), const LLStyle::Params& input_append_params = LLStyle::Params());
/*virtual*/ void clear();
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 5c05a54120..a96981a108 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -92,7 +92,8 @@ struct LLScriptQueueData
// Default constructor
LLFloaterScriptQueue::LLFloaterScriptQueue(const LLSD& key) :
LLFloater(key),
- mDone(FALSE)
+ mDone(false),
+ mMono(false)
{
//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_script_queue.xml", FALSE);
}
@@ -216,7 +217,7 @@ BOOL LLFloaterScriptQueue::nextObject()
} while((mObjectIDs.count() > 0) && !successful_start);
if(isDone() && !mDone)
{
- mDone = TRUE;
+ mDone = true;
getChild<LLScrollListCtrl>("queue output")->setCommentText(getString("Done"));
childSetEnabled("close",TRUE);
}
diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h
index 063d573239..2d061f5d8a 100644
--- a/indra/newview/llcompilequeue.h
+++ b/indra/newview/llcompilequeue.h
@@ -104,10 +104,10 @@ protected:
// Object Queue
LLDynamicArray<LLUUID> mObjectIDs;
LLUUID mCurrentObjectID;
- BOOL mDone;
+ bool mDone;
std::string mStartString;
- BOOL mMono;
+ bool mMono;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/indra/newview/lleventnotifier.cpp b/indra/newview/lleventnotifier.cpp
index edfb9dc864..f096ba604f 100644
--- a/indra/newview/lleventnotifier.cpp
+++ b/indra/newview/lleventnotifier.cpp
@@ -174,6 +174,7 @@ void LLEventNotifier::remove(const U32 event_id)
LLEventNotification::LLEventNotification() :
mEventID(0),
+ mEventDate(0),
mEventName("")
{
}
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index eef774426a..965ac1cad0 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -157,6 +157,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp)
mGeomIndex = 0;
mIndicesCount = 0;
mIndicesIndex = 0;
+ mIndexInTex = 0;
mTexture = NULL;
mTEOffset = -1;
diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
index fc8790c172..aea2de8e92 100644
--- a/indra/newview/llflexibleobject.cpp
+++ b/indra/newview/llflexibleobject.cpp
@@ -66,6 +66,7 @@ LLVolumeImplFlexible::LLVolumeImplFlexible(LLViewerObject* vo, LLFlexibleObjectD
mInitializedRes = -1;
mSimulateRes = 0;
mFrameNum = 0;
+ mCollisionSphereRadius = 0.f;
mRenderRes = 1;
if(mVO->mDrawable.notNull())
diff --git a/indra/newview/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h
index dd2c0b809a..3ee1f419ab 100644
--- a/indra/newview/llfloateranimpreview.h
+++ b/indra/newview/llfloateranimpreview.h
@@ -127,7 +127,6 @@ protected:
LLRectf mPreviewImageRect;
LLAssetID mMotionID;
LLTransactionID mTransactionID;
- BOOL mEnabled;
LLAnimPauseRequest mPauseRequest;
std::map<std::string, LLUUID> mIDList;
diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp
index 31b494b590..b2564eb2b6 100644
--- a/indra/newview/llfloaterhardwaresettings.cpp
+++ b/indra/newview/llfloaterhardwaresettings.cpp
@@ -50,7 +50,17 @@
#include "llsliderctrl.h"
LLFloaterHardwareSettings::LLFloaterHardwareSettings(const LLSD& key)
- : LLFloater(key)
+ : LLFloater(key),
+
+ // these should be set on imminent refresh() call,
+ // but init them anyway
+ mUseVBO(0),
+ mUseAniso(0),
+ mFSAASamples(0),
+ mGamma(0.0),
+ mVideoCardMem(0),
+ mFogRatio(0.0),
+ mProbeHardwareOnStartup(FALSE)
{
//LLUICtrlFactory::getInstance()->buildFloater(this, "floater_hardware_settings.xml");
}
diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp
index 06fe2a84c8..78bc63ac8c 100644
--- a/indra/newview/llfloaterjoystick.cpp
+++ b/indra/newview/llfloaterjoystick.cpp
@@ -52,6 +52,7 @@ LLFloaterJoystick::LLFloaterJoystick(const LLSD& data)
{
//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_joystick.xml");
+ initFromSettings();
}
void LLFloaterJoystick::draw()
@@ -123,10 +124,8 @@ void LLFloaterJoystick::apply()
{
}
-void LLFloaterJoystick::refresh()
+void LLFloaterJoystick::initFromSettings()
{
- LLFloater::refresh();
-
mJoystickEnabled = gSavedSettings.getBOOL("JoystickEnabled");
mJoystickAxis[0] = gSavedSettings.getS32("JoystickAxis0");
@@ -194,6 +193,12 @@ void LLFloaterJoystick::refresh()
mFlycamFeathering = gSavedSettings.getF32("FlycamFeathering");
}
+void LLFloaterJoystick::refresh()
+{
+ LLFloater::refresh();
+ initFromSettings();
+}
+
void LLFloaterJoystick::cancel()
{
gSavedSettings.setBOOL("JoystickEnabled", mJoystickEnabled);
diff --git a/indra/newview/llfloaterjoystick.h b/indra/newview/llfloaterjoystick.h
index f3559c28e9..7a2f497c69 100644
--- a/indra/newview/llfloaterjoystick.h
+++ b/indra/newview/llfloaterjoystick.h
@@ -55,6 +55,8 @@ private:
LLFloaterJoystick(const LLSD& data);
virtual ~LLFloaterJoystick();
+
+ void initFromSettings();
static void onCommitJoystickEnabled(LLUICtrl*, void*);
static void onClickRestoreSNDefaults(void*);
diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index d18f127f85..568f4b254e 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -112,6 +112,7 @@ BOOL LLFloaterMap::postBuild()
sendChildToBack(getDragHandle());
setIsChrome(TRUE);
+ getDragHandle()->setTitleVisible(TRUE);
// keep onscreen
gFloaterView->adjustToFitScreen(this, FALSE);
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 85353ce308..d54736e942 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -1521,11 +1521,6 @@ void LLPanelEstateInfo::onClickRemoveEstateManager(void* user_data)
//---------------------------------------------------------------------------
// Kick from estate methods
//---------------------------------------------------------------------------
-struct LLKickFromEstateInfo
-{
- LLPanelEstateInfo *mEstatePanelp;
- LLUUID mAgentID;
-};
void LLPanelEstateInfo::onClickKickUser()
{
@@ -1547,11 +1542,6 @@ void LLPanelEstateInfo::onKickUserCommit(const std::vector<std::string>& names,
return;
}
- //keep track of what user they want to kick and other misc info
- LLKickFromEstateInfo *kick_info = new LLKickFromEstateInfo();
- kick_info->mEstatePanelp = this;
- kick_info->mAgentID = ids[0];
-
//Bring up a confirmation dialog
LLSD args;
args["EVIL_USER"] = names[0];
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index afb58c9407..94c7ff6f94 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -1028,7 +1028,8 @@ class LLFloaterSnapshot::Impl
public:
Impl()
: mAvatarPauseHandles(),
- mLastToolset(NULL)
+ mLastToolset(NULL),
+ mAspectRatioCheckOff(false)
{
}
~Impl()
@@ -1079,7 +1080,7 @@ public:
LLToolset* mLastToolset;
LLHandle<LLView> mPreviewHandle;
- BOOL mAspectRatioCheckOff ;
+ bool mAspectRatioCheckOff ;
};
// static
@@ -1606,7 +1607,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
if(0 == index) //current window size
{
- view->impl.mAspectRatioCheckOff = TRUE ;
+ view->impl.mAspectRatioCheckOff = true ;
view->childSetEnabled("keep_aspect_check", FALSE) ;
if(previewp)
@@ -1616,7 +1617,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
}
else if(-1 == index) //custom
{
- view->impl.mAspectRatioCheckOff = FALSE ;
+ view->impl.mAspectRatioCheckOff = false ;
//if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE != gSavedSettings.getS32("LastSnapshotType"))
{
view->childSetEnabled("keep_aspect_check", TRUE) ;
@@ -1629,7 +1630,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
}
else
{
- view->impl.mAspectRatioCheckOff = TRUE ;
+ view->impl.mAspectRatioCheckOff = true ;
view->childSetEnabled("keep_aspect_check", FALSE) ;
if(previewp)
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index b833c611bf..c6135d3bc3 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -1508,10 +1508,26 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )
{
if (next == last_selected)
{
+ //special case for LLAccordionCtrl
+ if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed
+ {
+ clearSelection();
+ return TRUE;
+ }
return FALSE;
}
setSelection( next, FALSE, TRUE );
}
+ else
+ {
+ //special case for LLAccordionCtrl
+ if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed
+ {
+ clearSelection();
+ return TRUE;
+ }
+ return FALSE;
+ }
}
scrollToShowSelection();
mSearchString.clear();
@@ -1556,6 +1572,13 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )
{
if (prev == this)
{
+ // If case we are in accordion tab notify parent to go to the previous accordion
+ if(notifyParent(LLSD().with("action","select_prev")) > 0 )//message was processed
+ {
+ clearSelection();
+ return TRUE;
+ }
+
return FALSE;
}
setSelection( prev, FALSE, TRUE );
@@ -2241,6 +2264,83 @@ void LLFolderView::updateRenamerPosition()
}
}
+bool LLFolderView::selectFirstItem()
+{
+ for (folders_t::iterator iter = mFolders.begin();
+ iter != mFolders.end();)
+ {
+ LLFolderViewFolder* folder = (*iter );
+ if (folder->getVisible())
+ {
+ LLFolderViewItem* itemp = folder->getNextFromChild(0,true);
+ if(itemp)
+ setSelection(itemp,FALSE,TRUE);
+ return true;
+ }
+
+ }
+ for(items_t::iterator iit = mItems.begin();
+ iit != mItems.end(); ++iit)
+ {
+ LLFolderViewItem* itemp = (*iit);
+ if (itemp->getVisible())
+ {
+ setSelection(itemp,FALSE,TRUE);
+ return true;
+ }
+ }
+ return false;
+}
+bool LLFolderView::selectLastItem()
+{
+ for(items_t::reverse_iterator iit = mItems.rbegin();
+ iit != mItems.rend(); ++iit)
+ {
+ LLFolderViewItem* itemp = (*iit);
+ if (itemp->getVisible())
+ {
+ setSelection(itemp,FALSE,TRUE);
+ return true;
+ }
+ }
+ for (folders_t::reverse_iterator iter = mFolders.rbegin();
+ iter != mFolders.rend();)
+ {
+ LLFolderViewFolder* folder = (*iter);
+ if (folder->getVisible())
+ {
+ LLFolderViewItem* itemp = folder->getPreviousFromChild(0,true);
+ if(itemp)
+ setSelection(itemp,FALSE,TRUE);
+ return true;
+ }
+ }
+ return false;
+}
+
+
+S32 LLFolderView::notify(const LLSD& info)
+{
+ if(info.has("action"))
+ {
+ std::string str_action = info["action"];
+ if(str_action == "select_first")
+ {
+ setFocus(true);
+ selectFirstItem();
+ return 1;
+
+ }
+ else if(str_action == "select_last")
+ {
+ setFocus(true);
+ selectLastItem();
+ return 1;
+ }
+ }
+ return 0;
+}
+
///----------------------------------------------------------------------------
/// Local function definitions
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 89e1865e35..56ebdfcf79 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -266,6 +266,8 @@ public:
LLPanel* getParentPanel() { return mParentPanel; }
// DEBUG only
void dumpSelectionInformation();
+
+ virtual S32 notify(const LLSD& info) ;
private:
void updateRenamerPosition();
@@ -278,6 +280,9 @@ protected:
void finishRenamingItem( void );
void closeRenamer( void );
+
+ bool selectFirstItem();
+ bool selectLastItem();
protected:
LLHandle<LLView> mPopupMenuHandle;
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 73597e7de3..c0f22fcea2 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -599,6 +599,7 @@ void LLIMFloater::updateMessages()
LLChat chat;
chat.mFromID = from_id;
+ chat.mSessionID = mSessionID;
chat.mFromName = from;
chat.mText = message;
chat.mTimeStr = time;
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index c4b1d7a9f4..1254664330 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1498,9 +1498,11 @@ void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EStat
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLCallDialog
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LLCallDialog::LLCallDialog(const LLSD& payload) :
-LLDockableFloater(NULL, false, payload),
-mPayload(payload)
+LLCallDialog::LLCallDialog(const LLSD& payload)
+ : LLDockableFloater(NULL, false, payload),
+
+ mPayload(payload),
+ mLifetime(DEFAULT_LIFETIME)
{
}
diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp
index e4d2eec242..898f1cd9ac 100644
--- a/indra/newview/llinspectremoteobject.cpp
+++ b/indra/newview/llinspectremoteobject.cpp
@@ -31,17 +31,16 @@
#include "llviewerprecompiledheaders.h"
+#include "llfloaterreg.h"
#include "llinspectremoteobject.h"
#include "llinspect.h"
-#include "llslurl.h"
#include "llmutelist.h"
-#include "llurlaction.h"
#include "llpanelblockedlist.h"
-#include "llfloaterreg.h"
+#include "llslurl.h"
+#include "lltrans.h"
#include "llui.h"
#include "lluictrl.h"
-
-class LLViewerObject;
+#include "llurlaction.h"
//////////////////////////////////////////////////////////////////////////////
// LLInspectRemoteObject
@@ -183,11 +182,25 @@ void LLInspectRemoteObject::update()
owner = LLSLURL::buildCommand("agent", mOwnerID, "about");
}
}
+ else
+ {
+ owner = LLTrans::getString("Unknown");
+ }
getChild<LLUICtrl>("object_owner")->setValue(owner);
// display the object's SLurl - click it to teleport
- std::string url = "secondlife:///app/teleport/" + mSLurl;
+ std::string url;
+ if (! mSLurl.empty())
+ {
+ std::string url = "secondlife:///app/teleport/" + mSLurl;
+ }
getChild<LLUICtrl>("object_slurl")->setValue(url);
+
+ // disable the Map button if we don't have a SLurl
+ getChild<LLUICtrl>("map_btn")->setEnabled(! mSLurl.empty());
+
+ // disable the Block button if we don't have the owner ID
+ getChild<LLUICtrl>("block_btn")->setEnabled(! mOwnerID.isNull());
}
//////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 759d0cba18..eeb8246b11 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -320,8 +320,12 @@ public:
LLViewerInventoryCategory* getCategory() const;
protected:
- LLFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
- LLInvFVBridge(inventory, uuid), mCallingCards(FALSE), mWearables(FALSE) {}
+ LLFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid)
+ : LLInvFVBridge(inventory, uuid),
+
+ mCallingCards(FALSE),
+ mWearables(FALSE),
+ mMenu(NULL) {}
// menu callbacks
static void pasteClipboard(void* user_data);
diff --git a/indra/newview/lllocaltextureobject.cpp b/indra/newview/lllocaltextureobject.cpp
index 6bcbe6f58c..69eb5fce2f 100644
--- a/indra/newview/lllocaltextureobject.cpp
+++ b/indra/newview/lllocaltextureobject.cpp
@@ -47,7 +47,9 @@ LLLocalTextureObject::LLLocalTextureObject() :
mImage = NULL;
}
-LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture* image, const LLUUID& id)
+LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture* image, const LLUUID& id) :
+ mIsBakedReady(FALSE),
+ mDiscard(MAX_DISCARD_LEVEL+1)
{
mImage = image;
gGL.getTexUnit(0)->bind(mImage);
diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp
index f494f7d7c1..df93930d33 100644
--- a/indra/newview/lllocationhistory.cpp
+++ b/indra/newview/lllocationhistory.cpp
@@ -62,7 +62,7 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) {
{
mItems.erase(mItems.begin(), mItems.end()-max_items);
}
- llassert(mItems.size() <= max_items);
+ llassert((S32)mItems.size() <= max_items);
}
/*
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 7f49a7defb..050cfcc3d9 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -39,6 +39,7 @@
#include "llbutton.h"
#include "llfocusmgr.h"
#include "llmenugl.h"
+#include "llparcel.h"
#include "llstring.h"
#include "lltrans.h"
#include "lluictrlfactory.h"
@@ -672,11 +673,12 @@ void LLLocationInputCtrl::refreshParcelIcons()
if (show_properties)
{
LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
- bool allow_buy = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false);
+ LLParcel* agent_parcel = vpm->getAgentParcel();
+ bool allow_buy = vpm->canAgentBuyParcel( agent_parcel, false);
bool allow_voice = vpm->allowAgentVoice();
bool allow_fly = vpm->allowAgentFly();
bool allow_push = vpm->allowAgentPush();
- bool allow_build = vpm->allowAgentBuild();
+ bool allow_build = agent_parcel && agent_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610.
bool allow_scripts = vpm->allowAgentScripts();
bool allow_damage = vpm->allowAgentDamage();
diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp
index 84a5eb7352..ee3ffa2450 100644
--- a/indra/newview/llmanipscale.cpp
+++ b/indra/newview/llmanipscale.cpp
@@ -180,6 +180,7 @@ LLManipScale::LLManipScale( LLToolComposite* composite )
mScaleSnapUnit2(1.f),
mSnapRegimeOffset(0.f),
mSnapGuideLength(0.f),
+ mInSnapRegime(FALSE),
mScaleSnapValue(0.f)
{
mManipulatorScales = new F32[NUM_MANIPULATORS];
diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp
index 5f30ab4e01..52fe31fbba 100644
--- a/indra/newview/llmaniptranslate.cpp
+++ b/indra/newview/llmaniptranslate.cpp
@@ -123,9 +123,13 @@ LLManipTranslate::LLManipTranslate( LLToolComposite* composite )
mAxisArrowLength(50),
mConeSize(0),
mArrowLengthMeters(0.f),
+ mGridSizeMeters(1.f),
mPlaneManipOffsetMeters(0.f),
mUpdateTimer(),
mSnapOffsetMeters(0.f),
+ mSubdivisions(10.f),
+ mInSnapRegime(FALSE),
+ mSnapped(FALSE),
mArrowScales(1.f, 1.f, 1.f),
mPlaneScales(1.f, 1.f, 1.f),
mPlaneManipPositions(1.f, 1.f, 1.f, 1.f)
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 0a8d020b4f..90482eb74d 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -153,7 +153,7 @@ std::string appendTime()
}
-void LLNearbyChat::addMessage(const LLChat& chat,bool archive)
+void LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args)
{
if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
{
@@ -184,7 +184,9 @@ void LLNearbyChat::addMessage(const LLChat& chat,bool archive)
if (!chat.mMuted)
{
tmp_chat.mFromName = chat.mFromName;
- mChatHistory->appendMessage(chat, use_plain_text_chat_history);
+ LLSD chat_args = args;
+ chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history;
+ mChatHistory->appendMessage(chat, chat_args);
}
if(archive)
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 938b77df7a..5fb8ade19e 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -47,7 +47,7 @@ public:
~LLNearbyChat();
BOOL postBuild ();
- void addMessage (const LLChat& message,bool archive = true);
+ void addMessage (const LLChat& message,bool archive = true, const LLSD &args = LLSD());
void onNearbyChatContextMenuItemClicked(const LLSD& userdata);
bool onNearbyChatCheckContextMenuItem(const LLSD& userdata);
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index a1a9d84c14..c08ca30bab 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -319,7 +319,7 @@ void LLNearbyChatHandler::initChannel()
-void LLNearbyChatHandler::processChat(const LLChat& chat_msg)
+void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)
{
if(chat_msg.mMuted == TRUE)
return;
@@ -337,7 +337,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg)
//if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null)
// tmp_chat.mFromName = tmp_chat.mFromID.asString();
}
- nearby_chat->addMessage(chat_msg);
+ nearby_chat->addMessage(chat_msg, true, args);
if(nearby_chat->getVisible())
return;//no need in toast if chat is visible
diff --git a/indra/newview/llnearbychathandler.h b/indra/newview/llnearbychathandler.h
index fb2abac6a4..01a6de5610 100644
--- a/indra/newview/llnearbychathandler.h
+++ b/indra/newview/llnearbychathandler.h
@@ -45,7 +45,7 @@ public:
virtual ~LLNearbyChatHandler();
- virtual void processChat(const LLChat& chat_msg);
+ virtual void processChat(const LLChat& chat_msg, const LLSD &args);
protected:
virtual void onDeleteToast(LLToast* toast);
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index 0fb438bfe9..e57674d31c 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -135,7 +135,7 @@ class LLChatHandler : public LLEventHandler
public:
virtual ~LLChatHandler() {};
- virtual void processChat(const LLChat& chat_msg)=0;
+ virtual void processChat(const LLChat& chat_msg, const LLSD &args)=0;
};
/**
diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp
index 66bc217d15..4401bb953f 100644
--- a/indra/newview/llnotificationmanager.cpp
+++ b/indra/newview/llnotificationmanager.cpp
@@ -107,16 +107,17 @@ bool LLNotificationManager::onNotification(const LLSD& notify)
}
//--------------------------------------------------------------------------
-void LLNotificationManager::onChat(const LLChat& msg,ENotificationType type)
+void LLNotificationManager::onChat(const LLChat& msg, const LLSD &args)
{
- switch(type)
+ // check ENotificationType argument
+ switch(args["type"].asInteger())
{
case NT_NEARBYCHAT:
{
LLNearbyChatHandler* handle = dynamic_cast<LLNearbyChatHandler*>(mNotifyHandlers["nearbychat"].get());
if(handle)
- handle->processChat(msg);
+ handle->processChat(msg, args);
}
break;
default: //no need to handle all enum types
diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h
index 072fc6f24c..575aa69c4d 100644
--- a/indra/newview/llnotificationmanager.h
+++ b/indra/newview/llnotificationmanager.h
@@ -66,7 +66,7 @@ public:
bool onNotification(const LLSD& notification);
// this method reacts on chat notifications and calls an appropriate handler
- void onChat(const LLChat& msg,ENotificationType type);
+ void onChat(const LLChat& msg, const LLSD &args);
// get a handler for a certain type of notification
LLEventHandler* getHandlerForNotification(std::string notification_type);
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index fe5b20813a..48dd5513bd 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -635,6 +635,9 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
childSetValue("2nd_life_pic", avatar_data->image_id);
childSetValue("real_world_pic", avatar_data->fl_image_id);
childSetValue("homepage_edit", avatar_data->profile_url);
+
+ // Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734"
+ childSetVisible("homepage_edit", !avatar_data->profile_url.empty());
}
void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data)
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 1d447a22d7..469f1c1739 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -89,8 +89,8 @@ BOOL LLPanelGroupTab::postBuild()
LLPanelGroup::LLPanelGroup()
: LLPanel(),
LLGroupMgrObserver( LLUUID() ),
- mAllowEdit( TRUE )
- ,mShowingNotifyDialog(false)
+ mSkipRefresh(FALSE),
+ mShowingNotifyDialog(false)
{
// Set up the factory callbacks.
// Roles sub tabs
@@ -168,7 +168,6 @@ BOOL LLPanelGroup::postBuild()
button = getChild<LLButton>("btn_refresh");
button->setClickedCallback(onBtnRefresh, this);
- button->setVisible(mAllowEdit);
getChild<LLButton>("btn_create")->setVisible(false);
@@ -492,7 +491,12 @@ bool LLPanelGroup::apply(LLPanelGroupTab* tab)
std::string apply_mesg;
if(tab->apply( apply_mesg ) )
+ {
+ //we skip refreshing group after ew manually apply changes since its very annoying
+ //for those who are editing group
+ mSkipRefresh = TRUE;
return true;
+ }
if ( !apply_mesg.empty() )
{
@@ -539,6 +543,11 @@ void LLPanelGroup::draw()
void LLPanelGroup::refreshData()
{
+ if(mSkipRefresh)
+ {
+ mSkipRefresh = FALSE;
+ return;
+ }
LLGroupMgr::getInstance()->clearGroupData(getID());
setGroupID(getID());
@@ -560,10 +569,10 @@ void LLPanelGroup::chatGroup()
}
void LLPanelGroup::showNotice(const std::string& subject,
- const std::string& message,
- const bool& has_inventory,
- const std::string& inventory_name,
- LLOfferInfo* inventory_offer)
+ const std::string& message,
+ const bool& has_inventory,
+ const std::string& inventory_name,
+ LLOfferInfo* inventory_offer)
{
LLPanelGroupNotices* panel_notices = findChild<LLPanelGroupNotices>("group_notices_tab_panel");
if(!panel_notices)
diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
index 8c84695677..6e23eedffb 100644
--- a/indra/newview/llpanelgroup.h
+++ b/indra/newview/llpanelgroup.h
@@ -85,9 +85,6 @@ public:
virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
- void setAllowEdit(BOOL v) { mAllowEdit = v; }
-
-
static void refreshCreatedGroup(const LLUUID& group_id);
static void showNotice(const std::string& subject,
@@ -126,7 +123,7 @@ protected:
LLTimer mRefreshTimer;
- BOOL mAllowEdit;
+ BOOL mSkipRefresh;
std::string mDefaultNeedsApplyMesg;
std::string mWantApplyMesg;
@@ -169,8 +166,6 @@ public:
virtual BOOL isVisibleByAgent(LLAgent* agentp);
- void setAllowEdit(BOOL v) { mAllowEdit = v; }
-
virtual void setGroupID(const LLUUID& id) {mGroupID = id;};
void notifyObservers() {};
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index c792fd4fe3..7a17d4a1f0 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -108,7 +108,7 @@ void LLPanelLandmarkInfo::resetLocation()
}
// virtual
-void LLPanelLandmarkInfo::setInfoType(INFO_TYPE type)
+void LLPanelLandmarkInfo::setInfoType(EInfoType type)
{
LLPanel* landmark_info_panel = getChild<LLPanel>("landmark_info_panel");
diff --git a/indra/newview/llpanellandmarkinfo.h b/indra/newview/llpanellandmarkinfo.h
index 2a9949ae41..b3dc3f5ad9 100644
--- a/indra/newview/llpanellandmarkinfo.h
+++ b/indra/newview/llpanellandmarkinfo.h
@@ -49,7 +49,7 @@ public:
/*virtual*/ void resetLocation();
- /*virtual*/ void setInfoType(INFO_TYPE type);
+ /*virtual*/ void setInfoType(EInfoType type);
/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index d4376550d6..5c5c35141e 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -463,10 +463,6 @@ BOOL LLTaskInvFVBridge::removeItem()
}
else
{
- remove_data_t* data = new remove_data_t;
- data->first = mPanel;
- data->second.first = mPanel->getTaskUUID();
- data->second.second.push_back(mUUID);
LLSD payload;
payload["task_id"] = mPanel->getTaskUUID();
payload["inventory_ids"].append(mUUID);
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index 5f75668722..9ebc8ca2b9 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -58,6 +58,7 @@ LLPanelPlaceInfo::LLPanelPlaceInfo()
mPosRegion(),
mScrollingPanelMinHeight(0),
mScrollingPanelWidth(0),
+ mInfoType(UNKNOWN),
mScrollingPanel(NULL),
mScrollContainer(NULL)
{}
@@ -120,7 +121,7 @@ void LLPanelPlaceInfo::setParcelID(const LLUUID& parcel_id)
}
//virtual
-void LLPanelPlaceInfo::setInfoType(INFO_TYPE type)
+void LLPanelPlaceInfo::setInfoType(EInfoType type)
{
mTitle->setText(mCurrentTitle);
diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h
index 3091f7ed24..deedbd2b0f 100644
--- a/indra/newview/llpanelplaceinfo.h
+++ b/indra/newview/llpanelplaceinfo.h
@@ -54,8 +54,10 @@ class LLViewerInventoryCategory;
class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver
{
public:
- enum INFO_TYPE
+ enum EInfoType
{
+ UNKNOWN,
+
AGENT,
CREATE_LANDMARK,
LANDMARK,
@@ -79,7 +81,7 @@ public:
// Depending on how the panel was triggered
// (from landmark or current location, or other)
// sets a corresponding title and contents.
- virtual void setInfoType(INFO_TYPE type);
+ virtual void setInfoType(EInfoType type);
// Requests remote parcel info by parcel ID.
void sendParcelInfoRequest();
@@ -114,7 +116,7 @@ protected:
std::string mCurrentTitle;
S32 mScrollingPanelMinHeight;
S32 mScrollingPanelWidth;
- INFO_TYPE mInfoType;
+ EInfoType mInfoType;
LLScrollContainer* mScrollContainer;
LLPanel* mScrollingPanel;
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index 3c798639d4..8d689b2c5e 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -207,7 +207,7 @@ void LLPanelPlaceProfile::resetLocation()
}
// virtual
-void LLPanelPlaceProfile::setInfoType(INFO_TYPE type)
+void LLPanelPlaceProfile::setInfoType(EInfoType type)
{
bool is_info_type_agent = type == AGENT;
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
index 8ca9526875..e77b441567 100644
--- a/indra/newview/llpanelplaceprofile.h
+++ b/indra/newview/llpanelplaceprofile.h
@@ -48,7 +48,7 @@ public:
/*virtual*/ void resetLocation();
- /*virtual*/ void setInfoType(INFO_TYPE type);
+ /*virtual*/ void setInfoType(EInfoType type);
/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 5de78b1595..110d7a1054 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -32,9 +32,9 @@
#ifndef LL_LLPANELPLACES_H
#define LL_LLPANELPLACES_H
-#include "llpanel.h"
+#include "lltimer.h"
-class LLTimer;
+#include "llpanel.h"
class LLInventoryItem;
class LLFilterEditor;
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 1b8fb49641..6005881148 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -308,7 +308,7 @@ void LLTeleportHistoryFlatItemStorage::purge()
////////////////////////////////////////////////////////////////////////////////
LLTeleportHistoryPanel::ContextMenu::ContextMenu() :
- mMenu(NULL)
+ mMenu(NULL), mIndex(0)
{
}
diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp
index 4de953a59d..8edeebaeeb 100644
--- a/indra/newview/llplacesinventorypanel.cpp
+++ b/indra/newview/llplacesinventorypanel.cpp
@@ -143,6 +143,23 @@ void LLPlacesInventoryPanel::restoreFolderState()
getRootFolder()->scrollToShowSelection();
}
+S32 LLPlacesInventoryPanel::notify(const LLSD& info)
+{
+ if(info.has("action"))
+ {
+ std::string str_action = info["action"];
+ if(str_action == "select_first")
+ {
+ return getRootFolder()->notify(info);
+ }
+ else if(str_action == "select_last")
+ {
+ return getRootFolder()->notify(info);
+ }
+ }
+ return 0;
+}
+
/************************************************************************/
/* PROTECTED METHODS */
/************************************************************************/
diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h
index 7b34045d32..86937e7c7f 100644
--- a/indra/newview/llplacesinventorypanel.h
+++ b/indra/newview/llplacesinventorypanel.h
@@ -57,6 +57,8 @@ public:
void saveFolderState();
void restoreFolderState();
+ virtual S32 notify(const LLSD& info) ;
+
private:
LLSaveFolderState* mSavedFolderState;
};
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 60a095506b..bf08756051 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -218,7 +218,8 @@ LLSelectMgr::LLSelectMgr()
mHoverObjects = new LLObjectSelection();
mHighlightedObjects = new LLObjectSelection();
-
+ mForceSelection = FALSE;
+ mShowSelection = FALSE;
}
@@ -5093,6 +5094,7 @@ LLSelectNode::LLSelectNode(const LLSelectNode& nodep)
mName = nodep.mName;
mDescription = nodep.mDescription;
mCategory = nodep.mCategory;
+ mInventorySerial = 0;
mSavedPositionLocal = nodep.mSavedPositionLocal;
mSavedPositionGlobal = nodep.mSavedPositionGlobal;
mSavedScale = nodep.mSavedScale;
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 465221c494..2a57d48f16 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -294,7 +294,7 @@ LLSpatialGroup::~LLSpatialGroup()
sNodeCount--;
- if (gGLManager.mHasOcclusionQuery && mOcclusionQuery)
+ if (gGLManager.mHasOcclusionQuery && mOcclusionQuery[LLViewerCamera::sCurCameraID])
{
sQueryPool.release(mOcclusionQuery[LLViewerCamera::sCurCameraID]);
}
diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp
index 0ce794addb..48e4a6ccc7 100644
--- a/indra/newview/llsurfacepatch.cpp
+++ b/indra/newview/llsurfacepatch.cpp
@@ -60,6 +60,7 @@ LLSurfacePatch::LLSurfacePatch() :
mHeightsGenerated(FALSE),
mDataOffset(0),
mDataZ(NULL),
+ mDataNorm(NULL),
mVObjp(NULL),
mOriginRegion(0.f, 0.f, 0.f),
mCenterRegion(0.f, 0.f, 0.f),
@@ -355,12 +356,14 @@ void LLSurfacePatch::calcNormal(const U32 x, const U32 y, const U32 stride)
normal %= c2;
normal.normVec();
+ llassert(mDataNorm);
*(mDataNorm + surface_stride * y + x) = normal;
}
const LLVector3 &LLSurfacePatch::getNormal(const U32 x, const U32 y) const
{
U32 surface_stride = mSurfacep->getGridsPerEdge();
+ llassert(mDataNorm);
return *(mDataNorm + surface_stride * y + x);
}
@@ -402,6 +405,7 @@ void LLSurfacePatch::updateVerticalStats()
U32 i, j, k;
F32 z, total;
+ llassert(mDataZ);
z = *(mDataZ);
mMinZ = z;
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 84c8b9d5f0..ddb6405c41 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -567,6 +567,7 @@ LLTexLayerSet::LLTexLayerSet(LLVOAvatarSelf* const avatar) :
mAvatar( avatar ),
mUpdatesEnabled( FALSE ),
mIsVisible( TRUE ),
+ mBakedTexIndex(LLVOAvatarDefines::BAKED_HEAD),
mInfo( NULL )
{
}
@@ -1860,7 +1861,7 @@ U32 LLTexLayerTemplate::updateWearableCache()
}
LLTexLayer* LLTexLayerTemplate::getLayer(U32 i)
{
- if (mWearableCache.size() <= i || i < 0)
+ if (mWearableCache.size() <= i)
{
return NULL;
}
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index 4203cbbc43..64ec881fc3 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -59,7 +59,12 @@ private:
};
struct Entry
{
- Entry() {}
+ Entry() :
+ mBodySize(0),
+ mImageSize(0),
+ mTime(0)
+ {
+ }
Entry(const LLUUID& id, S32 imagesize, S32 bodysize, U32 time) :
mID(id), mImageSize(imagesize), mBodySize(bodysize), mTime(time) {}
void init(const LLUUID& id, U32 time) { mID = id, mImageSize = 0; mBodySize = 0; mTime = time; }
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 5ce6884239..404b79bfaf 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -661,6 +661,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
}
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
mState = SEND_HTTP_REQ;
+ delete responder;
+ responder = NULL;
}
}
diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp
index d62017cc2f..89a58cd736 100644
--- a/indra/newview/lltoastimpanel.cpp
+++ b/indra/newview/lltoastimpanel.cpp
@@ -33,22 +33,25 @@
#include "llviewerprecompiledheaders.h"
#include "lltoastimpanel.h"
+#include "llfloaterreg.h"
#include "llnotifications.h"
#include "llinstantmessage.h"
+#include "lltooltip.h"
+
#include "llviewerchat.h"
const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT = 6;
//--------------------------------------------------------------------------
LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notification),
- mAvatar(NULL), mUserName(NULL),
+ mAvatarIcon(NULL), mAvatarName(NULL),
mTime(NULL), mMessage(NULL)
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml");
LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon");
- mAvatar = getChild<LLAvatarIconCtrl>("avatar_icon");
- mUserName = getChild<LLTextBox>("user_name");
+ mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon");
+ mAvatarName = getChild<LLTextBox>("user_name");
mTime = getChild<LLTextBox>("time_box");
mMessage = getChild<LLTextBox>("message");
@@ -77,22 +80,23 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif
mMessage->setValue(p.message);
}
- mUserName->setValue(p.from);
+ mAvatarName->setValue(p.from);
mTime->setValue(p.time);
mSessionID = p.session_id;
+ mAvatarID = p.avatar_id;
mNotification = p.notification;
if(p.from == SYSTEM_FROM)
{
- mAvatar->setVisible(FALSE);
+ mAvatarIcon->setVisible(FALSE);
sys_msg_icon->setVisible(TRUE);
}
else
{
- mAvatar->setVisible(TRUE);
+ mAvatarIcon->setVisible(TRUE);
sys_msg_icon->setVisible(FALSE);
- mAvatar->setValue(p.avatar_id);
+ mAvatarIcon->setValue(p.avatar_id);
}
S32 maxLinesCount;
@@ -119,3 +123,36 @@ BOOL LLToastIMPanel::handleMouseDown(S32 x, S32 y, MASK mask)
return TRUE;
}
+
+//virtual
+BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask)
+{
+ // It's not our direct child, so parentPointInView() doesn't work.
+ LLRect name_rect;
+ mAvatarName->localRectToOtherView(mAvatarName->getLocalRect(), &name_rect, this);
+ if (!name_rect.pointInRect(x, y))
+ return LLToastPanel::handleToolTip(x, y, mask);
+
+ // Spawn at right side of the name textbox.
+ LLRect sticky_rect = mAvatarName->calcScreenRect();
+ S32 icon_x = llmin(sticky_rect.mLeft + mAvatarName->getTextPixelWidth() + 3, sticky_rect.mRight - 16);
+ LLCoordGL pos(icon_x, sticky_rect.mTop);
+
+ LLToolTip::Params params;
+ params.background_visible(false);
+ params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this));
+ params.delay_time(0.0f); // spawn instantly on hover
+ params.image(LLUI::getUIImage("Info_Small"));
+ params.message("");
+ params.padding(0);
+ params.pos(pos);
+ params.sticky_rect(sticky_rect);
+
+ LLToolTipMgr::getInstance()->show(params);
+ return TRUE;
+}
+
+void LLToastIMPanel::showInspector()
+{
+ LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID));
+}
diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h
index 53661f2cf6..154e6dae16 100644
--- a/indra/newview/lltoastimpanel.h
+++ b/indra/newview/lltoastimpanel.h
@@ -58,13 +58,16 @@ public:
LLToastIMPanel(LLToastIMPanel::Params &p);
virtual ~LLToastIMPanel();
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
+ /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask);
private:
+ void showInspector();
static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT;
LLNotificationPtr mNotification;
LLUUID mSessionID;
- LLAvatarIconCtrl* mAvatar;
- LLTextBox* mUserName;
+ LLUUID mAvatarID;
+ LLAvatarIconCtrl* mAvatarIcon;
+ LLTextBox* mAvatarName;
LLTextBox* mTime;
LLTextBox* mMessage;
};
diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
index edbaa0d45a..e7dc7ae522 100644
--- a/indra/newview/lltoolbar.cpp
+++ b/indra/newview/lltoolbar.cpp
@@ -95,7 +95,10 @@ F32 LLToolBar::sInventoryAutoOpenTime = 1.f;
//
LLToolBar::LLToolBar()
-: LLPanel()
+ : LLPanel(),
+
+ mInventoryAutoOpen(FALSE),
+ mNumUnreadIMs(0)
#if LL_DARWIN
, mResizeHandle(NULL)
#endif // LL_DARWIN
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 4420b046d8..125c62474e 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -1404,18 +1404,6 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,
gFloaterTools->dirty();
}
-struct LLGiveInventoryInfo
-{
- LLUUID mToAgentID;
- LLUUID mInventoryObjectID;
- LLUUID mIMSessionID;
- LLGiveInventoryInfo(const LLUUID& to_agent, const LLUUID& obj_id, const LLUUID &im_session_id = LLUUID::null) :
- mToAgentID(to_agent),
- mInventoryObjectID(obj_id),
- mIMSessionID(im_session_id)
- {}
-};
-
void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent,
LLInventoryItem* item,
const LLUUID& im_session_id)
@@ -1584,8 +1572,6 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent,
}
else
{
- LLGiveInventoryInfo* info = NULL;
- info = new LLGiveInventoryInfo(to_agent, cat->getUUID(), im_session_id);
LLSD args;
args["COUNT"] = llformat("%d",giveable.countNoCopy());
LLSD payload;
diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp
index 26dbe6a489..d837a334f1 100644
--- a/indra/newview/lltoolgrab.cpp
+++ b/indra/newview/lltoolgrab.cpp
@@ -78,9 +78,15 @@ LLToolGrab::LLToolGrab( LLToolComposite* composite )
: LLTool( std::string("Grab"), composite ),
mMode( GRAB_INACTIVE ),
mVerticalDragging( FALSE ),
+ mHitLand(FALSE),
+ mLastMouseX(0),
+ mLastMouseY(0),
+ mAccumDeltaX(0),
+ mAccumDeltaY(0),
mHasMoved( FALSE ),
mOutsideSlop(FALSE),
mDeselectedThisClick(FALSE),
+ mLastFace(0),
mSpinGrabbing( FALSE ),
mSpinRotation(),
mHideBuildHighlight(FALSE)
diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp
index c2591ac8d7..95f05b5f5f 100644
--- a/indra/newview/llviewerjoint.cpp
+++ b/indra/newview/llviewerjoint.cpp
@@ -59,13 +59,9 @@ BOOL LLViewerJoint::sDisableLOD = FALSE;
// Class Constructor
//-----------------------------------------------------------------------------
LLViewerJoint::LLViewerJoint()
+ : LLJoint()
{
- mUpdateXform = TRUE;
- mValid = FALSE;
- mComponents = SC_JOINT | SC_BONE | SC_AXES;
- mMinPixelArea = DEFAULT_LOD;
- mPickName = PN_DEFAULT;
- mVisible = TRUE;
+ init();
}
@@ -73,13 +69,21 @@ LLViewerJoint::LLViewerJoint()
// LLViewerJoint()
// Class Constructor
//-----------------------------------------------------------------------------
-LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent) :
- LLJoint(name, parent)
+LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent)
+ : LLJoint(name, parent)
+{
+ init();
+}
+
+
+void LLViewerJoint::init()
{
mValid = FALSE;
mComponents = SC_JOINT | SC_BONE | SC_AXES;
mMinPixelArea = DEFAULT_LOD;
mPickName = PN_DEFAULT;
+ mVisible = TRUE;
+ mMeshID = 0;
}
diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h
index 08c4ec36fd..0d3092a044 100644
--- a/indra/newview/llviewerjoint.h
+++ b/indra/newview/llviewerjoint.h
@@ -142,6 +142,8 @@ public:
void setMeshID( S32 id ) {mMeshID = id;}
protected:
+ void init();
+
BOOL mValid;
U32 mComponents;
F32 mMinPixelArea;
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 5b8902dec4..1a67fc0966 100644
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -147,6 +147,7 @@ LLViewerJointMesh::LLViewerJointMesh()
mTexture( NULL ),
mLayerSet( NULL ),
mTestImageName( 0 ),
+ mFaceIndexCount(0),
mIsTransparent(FALSE)
{
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 36710e7532..f24fe07065 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1933,7 +1933,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
if (has_inventory)
{
- info = new LLOfferInfo;
+ info = new LLOfferInfo();
info->mIM = IM_GROUP_NOTICE;
info->mFromID = from_id;
@@ -1987,6 +1987,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
LLPanelGroup::showNotice(subj,mes,group_id,has_inventory,item_name,info);
}
+ else
+ {
+ delete info;
+ }
}
break;
case IM_GROUP_INVITATION:
@@ -2047,6 +2051,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
if (sizeof(offer_agent_bucket_t) != binary_bucket_size)
{
LL_WARNS("Messaging") << "Malformed inventory offer from agent" << LL_ENDL;
+ delete info;
break;
}
bucketp = (struct offer_agent_bucket_t*) &binary_bucket[0];
@@ -2058,6 +2063,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
if (sizeof(S8) != binary_bucket_size)
{
LL_WARNS("Messaging") << "Malformed inventory offer from object" << LL_ENDL;
+ delete info;
break;
}
info->mType = (LLAssetType::EType) binary_bucket[0];
@@ -2237,7 +2243,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
payload["SESSION_NAME"] = session_name;
if (from_group)
{
- payload["groupowned"] = "true";
+ payload["group_owned"] = "true";
}
LLNotificationsUtil::add("ServerObjectMessage", substitutions, payload);
}
@@ -2539,7 +2545,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
// Object owner for objects
msg->getUUID("ChatData", "OwnerID", owner_id);
-
+
msg->getU8Fast(_PREHASH_ChatData, _PREHASH_SourceType, source_temp);
chat.mSourceType = (EChatSourceType)source_temp;
@@ -2568,7 +2574,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
if (chatter)
{
chat.mPosAgent = chatter->getPositionAgent();
-
+
// Make swirly things only for talking objects. (not script debug messages, though)
if (chat.mSourceType == CHAT_SOURCE_OBJECT
&& chat.mChatType != CHAT_TYPE_DEBUG_MSG)
@@ -2713,8 +2719,13 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
chat.mMuted = is_muted && !is_linden;
- LLNotificationsUI::LLNotificationManager::instance().onChat(
- chat, LLNotificationsUI::NT_NEARBYCHAT);
+ // pass owner_id to chat so that we can display the remote
+ // object inspect for an object that is chatting with you
+ LLSD args;
+ args["type"] = LLNotificationsUI::NT_NEARBYCHAT;
+ args["owner_id"] = owner_id;
+
+ LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args);
}
}
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
index 8404d6fde0..1415c16090 100644
--- a/indra/newview/llviewermessage.h
+++ b/indra/newview/llviewermessage.h
@@ -205,7 +205,9 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
struct LLOfferInfo
{
- LLOfferInfo() {};
+ LLOfferInfo()
+ : mFromGroup(FALSE), mFromObject(FALSE),
+ mIM(IM_NOTHING_SPECIAL), mType(LLAssetType::AT_NONE) {};
LLOfferInfo(const LLSD& sd);
void forceResponse(InventoryOfferResponse response);
diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp
index d7b55d7e97..987d23630a 100644
--- a/indra/newview/llviewernetwork.cpp
+++ b/indra/newview/llviewernetwork.cpp
@@ -169,6 +169,7 @@ void LLViewerLogin::setGridChoice(EGridInfo grid)
if(grid < 0 || grid >= GRID_INFO_COUNT)
{
llerrs << "Invalid grid index specified." << llendl;
+ return;
}
if(mGridChoice != grid || gSavedSettings.getS32("ServerChoice") != grid)
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 10a95443f1..b3450a8f36 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -706,8 +706,8 @@ bool LLViewerParcelMgr::allowAgentScripts() const
bool LLViewerParcelMgr::allowAgentDamage() const
{
LLViewerRegion* region = gAgent.getRegion();
- return region && region->getAllowDamage()
- && mAgentParcel && mAgentParcel->getAllowDamage();
+ return (region && region->getAllowDamage())
+ || (mAgentParcel && mAgentParcel->getAllowDamage());
}
BOOL LLViewerParcelMgr::isOwnedAt(const LLVector3d& pos_global) const
diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp
index 841a7ccc5e..6b480ccf8e 100644
--- a/indra/newview/llviewerpartsim.cpp
+++ b/indra/newview/llviewerpartsim.cpp
@@ -81,6 +81,7 @@ F32 calc_desired_size(LLViewerCamera* camera, LLVector3 pos, LLVector2 scale)
LLViewerPart::LLViewerPart() :
mPartID(0),
mLastUpdateTime(0.f),
+ mSkipOffset(0.f),
mVPCallback(NULL),
mImagep(NULL)
{
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 6dc9f5c465..86b1a8c910 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -135,7 +135,8 @@ LLGLSLShader gLuminanceGatherProgram;
GLint gAvatarMatrixParam;
LLViewerShaderMgr::LLViewerShaderMgr() :
- mVertexShaderLevel(SHADER_COUNT, 0)
+ mVertexShaderLevel(SHADER_COUNT, 0),
+ mMaxAvatarShaderLevel(0)
{
/// Make sure WL Sky is the first program
mShaderList.push_back(&gWLSkyProgram);
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index b80dc7d902..0ad269392d 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1029,6 +1029,8 @@ void LLViewerFetchedTexture::init(bool firstinit)
// does not contain this image.
mIsMissingAsset = FALSE;
+ mLoadedCallbackDesiredDiscardLevel = 0;
+
mNeedsCreateTexture = FALSE;
mIsRawImageValid = FALSE;
@@ -1041,6 +1043,7 @@ void LLViewerFetchedTexture::init(bool firstinit)
mFetchPriority = 0;
mDownloadProgress = 0.f;
mFetchDeltaTime = 999999.f;
+ mRequestDeltaTime = 0.f;
mForSculpt = FALSE ;
mIsFetched = FALSE ;
diff --git a/indra/newview/llviewervisualparam.cpp b/indra/newview/llviewervisualparam.cpp
index b088ef0730..fad398e00b 100644
--- a/indra/newview/llviewervisualparam.cpp
+++ b/indra/newview/llviewervisualparam.cpp
@@ -46,6 +46,7 @@
LLViewerVisualParamInfo::LLViewerVisualParamInfo()
:
mWearableType( WT_INVALID ),
+ mCrossWearable(FALSE),
mCamDist( 0.5f ),
mCamAngle( 0.f ),
mCamElevation( 0.f ),
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 424b84a756..b4c73dba26 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -4849,10 +4849,10 @@ LLPickInfo::LLPickInfo()
}
LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos,
- MASK keyboard_mask,
- BOOL pick_transparent,
- BOOL pick_uv_coords,
- void (*pick_callback)(const LLPickInfo& pick_info))
+ MASK keyboard_mask,
+ BOOL pick_transparent,
+ BOOL pick_uv_coords,
+ void (*pick_callback)(const LLPickInfo& pick_info))
: mMousePt(mouse_pos),
mKeyMask(keyboard_mask),
mPickCallback(pick_callback),
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index b488276a18..c0a9180b53 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -126,9 +126,6 @@ private:
void updateXYCoords();
BOOL mWantSurfaceInfo; // do we populate mUVCoord, mNormal, mBinormal?
- U8 mPickBuffer[PICK_DIAMETER * PICK_DIAMETER * 4];
- F32 mPickDepthBuffer[PICK_DIAMETER * PICK_DIAMETER];
- BOOL mPickParcelWall;
};
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 8ca0fd6ef6..a0d42d9b5f 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -296,8 +296,14 @@ void LLVivoxProtocolParser::reset()
ignoringTags = false;
accumulateText = false;
energy = 0.f;
+ hasText = false;
+ hasAudio = false;
+ hasVideo = false;
+ terminated = false;
ignoreDepth = 0;
isChannel = false;
+ incoming = false;
+ enabled = false;
isEvent = false;
isLocallyMuted = false;
isModeratorMuted = false;
@@ -6408,6 +6414,7 @@ void LLVoiceClient::filePlaybackSetMode(bool vox, float speed)
}
LLVoiceClient::sessionState::sessionState() :
+ mErrorStatusCode(0),
mMediaStreamState(streamStateUnknown),
mTextStreamState(streamStateUnknown),
mCreateInProgress(false),
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 5ff8f0d267..0550ed770b 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -343,7 +343,6 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
cloud_pos_density1 = LLColor3();
cloud_pos_density2 = LLColor3();
-
mInitialized = FALSE;
mbCanSelect = FALSE;
mUpdateTimer.reset();
@@ -385,6 +384,10 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
mBloomTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
mHeavenlyBodyUpdated = FALSE ;
+
+ mDrawRefl = 0;
+ mHazeConcentration = 0.f;
+ mInterpVal = 0.f;
}
@@ -1072,10 +1075,10 @@ BOOL LLVOSky::updateSky()
++next_frame;
next_frame = next_frame % cycle_frame_no;
- sInterpVal = (!mInitialized) ? 1 : (F32)next_frame / cycle_frame_no;
+ mInterpVal = (!mInitialized) ? 1 : (F32)next_frame / cycle_frame_no;
// sInterpVal = (F32)next_frame / cycle_frame_no;
- LLSkyTex::setInterpVal( sInterpVal );
- LLHeavenBody::setInterpVal( sInterpVal );
+ LLSkyTex::setInterpVal( mInterpVal );
+ LLHeavenBody::setInterpVal( mInterpVal );
calcAtmospherics();
if (mForceUpdate || total_no_tiles == frame)
diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h
index ef74324e58..8366909755 100644
--- a/indra/newview/llvosky.h
+++ b/indra/newview/llvosky.h
@@ -613,7 +613,7 @@ protected:
LLColor3 mLastTotalAmbient;
F32 mAmbientScale;
LLColor3 mNightColorShift;
- F32 sInterpVal;
+ F32 mInterpVal;
LLColor4 mFogColor;
LLColor4 mGLFogCol;
@@ -636,8 +636,8 @@ protected:
public:
//by bao
//fake vertex buffer updating
- //to guaranttee at least updating one VBO buffer every frame
- //to walk around the bug caused by ATI card --> DEV-3855
+ //to guarantee at least updating one VBO buffer every frame
+ //to work around the bug caused by ATI card --> DEV-3855
//
void createDummyVertexBuffer() ;
void updateDummyVertexBuffer() ;
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 295c0c8010..bfe38c14ba 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -180,8 +180,10 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re
mRelativeXform.setIdentity();
mRelativeXformInvTrans.setIdentity();
+ mFaceMappingChanged = FALSE;
mLOD = MIN_LOD;
mTextureAnimp = NULL;
+ mVolumeChanged = FALSE;
mVObjRadius = LLVector3(1,1,0.5f).length();
mNumFaces = 0;
mLODChanged = FALSE;
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index b789bd3650..d093031bea 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -818,16 +818,13 @@ const LLLocalTextureObject* LLWearable::getConstLocalTextureObject(S32 index) co
return NULL;
}
-void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject *lto)
+void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject &lto)
{
if( mTEMap.find(index) != mTEMap.end() )
{
mTEMap.erase(index);
}
- if( lto )
- {
- mTEMap[index] = new LLLocalTextureObject(*lto);
- }
+ mTEMap[index] = new LLLocalTextureObject(lto);
}
diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h
index 7a579b248e..dae983bcf3 100644
--- a/indra/newview/llwearable.h
+++ b/indra/newview/llwearable.h
@@ -114,7 +114,7 @@ public:
LLLocalTextureObject* getLocalTextureObject(S32 index);
const LLLocalTextureObject* getConstLocalTextureObject(S32 index) const;
- void setLocalTextureObject(S32 index, LLLocalTextureObject *lto);
+ void setLocalTextureObject(S32 index, LLLocalTextureObject &lto);
void addVisualParam(LLVisualParam *param);
void setVisualParams();
void setVisualParamWeight(S32 index, F32 value, BOOL upload_bake);
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index 3a5ceed5fb..3ddb7bc349 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -1,14 +1,17 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- can_minimize="false"
+ can_minimize="true"
can_resize="true"
+ center_horiz="true"
+ center_vert="true"
follows="top|right"
height="225"
layout="topleft"
min_height="60"
min_width="174"
name="Map"
+ title="Mini Map"
help_topic="map"
save_rect="true"
save_visibility="true"
diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
index 0893c204e7..1968d96205 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -37,6 +37,7 @@ background_visible="true"
top="2"
width="23" />
<text
+ allow_html="false"
follows="top|left|right"
font="SansSerifHugeBold"
height="26"
diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
index c243d08b97..b674b39d9b 100644
--- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
@@ -36,6 +36,7 @@
top="2"
width="20" />
<text
+ allow_html="false"
follows="left|right"
font="SansSerifSmall"
height="15"
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
index 67a4edbf32..396699ad6c 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -229,6 +229,7 @@
value="Title:"
width="290" />
<text
+ allow_html="false"
follows="left|top"
height="22"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 8fc2ae39f0..7ac771de27 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -246,6 +246,7 @@
</layout_panel>
</layout_stack>
<text
+ allow_html="false"
follows="left|top|right"
font="SansSerifLarge"
height="14"
@@ -258,6 +259,7 @@
value="SampleRegion"
width="290" />
<text
+ allow_html="false"
follows="left|top|right"
height="14"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 1c0a8ba7c5..70a58b8e03 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -96,7 +96,7 @@
name="damage_icon"
width="14"
height="13"
- top="25"
+ top="21"
left="2"
follows="right|top"
image_name="Parcel_Damage_Dark"