summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--etc/message.xml2
-rw-r--r--indra/llrender/llimagegl.cpp69
-rw-r--r--indra/llrender/llimagegl.h2
-rw-r--r--indra/llui/llaccordionctrltab.cpp3
-rw-r--r--indra/llui/llfloater.cpp4
-rw-r--r--indra/llui/llscrolllistctrl.cpp5
-rw-r--r--indra/llui/llscrolllistctrl.h3
-rw-r--r--indra/media_plugins/webkit/media_plugin_webkit.cpp9
-rw-r--r--indra/newview/app_settings/settings.xml21
-rw-r--r--indra/newview/llcallfloater.cpp30
-rw-r--r--indra/newview/llchathistory.cpp8
-rw-r--r--indra/newview/llchathistory.h1
-rw-r--r--indra/newview/llchiclet.cpp5
-rw-r--r--indra/newview/llchiclet.h2
-rw-r--r--indra/newview/llcompilequeue.cpp10
-rw-r--r--indra/newview/llfloaterchat.cpp16
-rw-r--r--indra/newview/llfloaterchat.h2
-rw-r--r--indra/newview/llfloatermediasettings.cpp10
-rw-r--r--indra/newview/llfloatertools.cpp3
-rw-r--r--indra/newview/llimfloater.cpp2
-rw-r--r--indra/newview/llimpanel.cpp1
-rw-r--r--indra/newview/llimview.cpp32
-rw-r--r--indra/newview/llimview.h11
-rw-r--r--indra/newview/lllandmarklist.cpp7
-rw-r--r--indra/newview/llmutelist.cpp1
-rw-r--r--indra/newview/llnamebox.cpp13
-rw-r--r--indra/newview/llnamebox.h1
-rw-r--r--indra/newview/llnamelistctrl.cpp80
-rw-r--r--indra/newview/llnamelistctrl.h5
-rw-r--r--indra/newview/llpanelclassified.cpp15
-rw-r--r--indra/newview/llpanelclassified.h1
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp1
-rw-r--r--indra/newview/llpanellandmarkinfo.cpp7
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp3
-rw-r--r--indra/newview/llpanelpick.cpp20
-rw-r--r--indra/newview/llpanelpick.h5
-rw-r--r--indra/newview/llpanelplaces.cpp18
-rw-r--r--indra/newview/llpanelplaces.h2
-rw-r--r--indra/newview/llpanelteleporthistory.cpp2
-rw-r--r--indra/newview/llparticipantlist.cpp2
-rw-r--r--indra/newview/llpreviewgesture.cpp6
-rw-r--r--indra/newview/llspeakingindicatormanager.cpp3
-rw-r--r--indra/newview/lltexlayer.cpp2
-rw-r--r--indra/newview/lltexturectrl.cpp7
-rw-r--r--indra/newview/lltexturectrl.h3
-rw-r--r--indra/newview/lltoolpie.cpp2
-rw-r--r--indra/newview/llviewerhelputil.cpp2
-rw-r--r--indra/newview/llviewermedia.cpp19
-rw-r--r--indra/newview/llviewermedia.h1
-rw-r--r--indra/newview/llviewermenu.cpp53
-rw-r--r--indra/newview/llviewermessage.cpp30
-rw-r--r--indra/newview/llvoicevivox.cpp1
-rw-r--r--indra/newview/llvovolume.cpp10
-rw-r--r--indra/newview/skins/default/xui/en/favorites_bar_button.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_aaa.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_outfit_save_as.xml21
-rw-r--r--indra/newview/skins/default/xui/en/floater_wearable_save_as.xml18
-rw-r--r--indra/newview/skins/default/xui/en/floater_world_map.xml4
-rw-r--r--indra/newview/skins/default/xui/en/menu_participant_list.xml6
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml13
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml10
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_pick.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_profile.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_my_profile.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_navigation_bar.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_inventory.xml42
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_advanced.xml9
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_status_bar.xml8
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml16
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml16
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml16
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml8
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_script.xml8
-rw-r--r--indra/newview/skins/default/xui/en/widgets/scroll_list.xml4
-rw-r--r--scripts/messages/message_template.msg2
78 files changed, 522 insertions, 269 deletions
diff --git a/etc/message.xml b/etc/message.xml
index da08e12aa1..c17ae3656d 100644
--- a/etc/message.xml
+++ b/etc/message.xml
@@ -50,7 +50,7 @@
<key>OpenCircuit</key>
<map>
<key>flavor</key>
- <string>template</string>
+ <string>llsd</string>
<key>trusted-sender</key>
<boolean>false</boolean>
</map>
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index f8d7ea00e0..d873005fd9 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -428,49 +428,56 @@ LLImageGL::~LLImageGL()
void LLImageGL::init(BOOL usemipmaps)
{
-#ifdef DEBUG_MISS
- mMissed = FALSE;
-#endif
+ // keep these members in the same order as declared in llimagehl.h
+ // so that it is obvious by visual inspection if we forgot to
+ // init a field.
+
+ mTextureMemory = 0;
+ mLastBindTime = 0.f;
+
+ mPickMask = NULL;
+ mUseMipMaps = usemipmaps;
+ mHasExplicitFormat = FALSE;
+ mAutoGenMips = FALSE;
+
+ mIsMask = FALSE;
+ mNeedsAlphaAndPickMask = TRUE ;
+ mAlphaStride = 0 ;
+ mAlphaOffset = 0 ;
+
+ mGLTextureCreated = FALSE ;
+ mTexName = 0;
+ mWidth = 0;
+ mHeight = 0;
+ mCurrentDiscardLevel = -1;
- mPickMask = NULL;
- mTextureMemory = 0;
- mLastBindTime = 0.f;
+ mDiscardLevelInAtlas = -1 ;
+ mTexelsInAtlas = 0 ;
+ mTexelsInGLTexture = 0 ;
- mTarget = GL_TEXTURE_2D;
- mBindTarget = LLTexUnit::TT_TEXTURE;
- mUseMipMaps = usemipmaps;
- mHasMipMaps = false;
- mAutoGenMips = FALSE;
- mTexName = 0;
- mIsResident = 0;
+ mTarget = GL_TEXTURE_2D;
+ mBindTarget = LLTexUnit::TT_TEXTURE;
+ mHasMipMaps = false;
+
+ mIsResident = 0;
+
+ mComponents = 0;
+ mMaxDiscardLevel = MAX_DISCARD_LEVEL;
mTexOptionsDirty = true;
mAddressMode = LLTexUnit::TAM_WRAP;
mFilterOption = LLTexUnit::TFO_ANISOTROPIC;
- mWidth = 0;
- mHeight = 0;
- mComponents = 0;
-
- mMaxDiscardLevel = MAX_DISCARD_LEVEL;
- mCurrentDiscardLevel = -1;
mFormatInternal = -1;
mFormatPrimary = (LLGLenum) 0;
mFormatType = GL_UNSIGNED_BYTE;
mFormatSwapBytes = FALSE;
- mHasExplicitFormat = FALSE;
-
- mGLTextureCreated = FALSE ;
- mIsMask = FALSE;
- mCategory = -1 ;
- mAlphaStride = 0 ;
- mAlphaOffset = 0 ;
- mNeedsAlphaAndPickMask = TRUE ;
+#ifdef DEBUG_MISS
+ mMissed = FALSE;
+#endif
- mDiscardLevelInAtlas = -1 ;
- mTexelsInAtlas = 0 ;
- mTexelsInGLTexture = 0 ;
+ mCategory = -1;
}
void LLImageGL::cleanup()
@@ -1669,7 +1676,7 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in)
}
if (mFormatType != GL_UNSIGNED_BYTE ||
- mFormatPrimary != GL_RGBA)
+ mFormatPrimary != GL_RGBA)
{
//cannot generate a pick mask for this texture
delete [] mPickMask;
diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h
index 937065043c..facfb7bd62 100644
--- a/indra/llrender/llimagegl.h
+++ b/indra/llrender/llimagegl.h
@@ -224,7 +224,7 @@ protected:
bool mTexOptionsDirty;
LLTexUnit::eTextureAddressMode mAddressMode; // Defaults to TAM_WRAP
- LLTexUnit::eTextureFilterOptions mFilterOption; // Defaults to TFO_TRILINEAR
+ LLTexUnit::eTextureFilterOptions mFilterOption; // Defaults to TFO_ANISOTROPIC
LLGLint mFormatInternal; // = GL internalformat
LLGLenum mFormatPrimary; // = GL format (pixel data format)
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index 9d6ba57c29..4bfe44135a 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
@@ -157,7 +157,8 @@ void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::draw()
// because the user's mental model of focus is that it goes away after
// the accordion is closed.
if (getParent()->hasFocus()
- && !(collapsible && !expanded))
+ /*&& !(collapsible && !expanded)*/ // WHY??
+ )
{
mImageHeaderFocused->draw(0,0,width,height);
}
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 3734a22f7e..4f519afa06 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2388,10 +2388,12 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out
new_height = llmax(new_height, min_height);
LLRect new_rect;
- new_rect.setLeftTopAndSize(view_rect.mTop,view_rect.mLeft,new_width, new_height);
+ new_rect.setLeftTopAndSize(view_rect.mLeft,view_rect.mTop,new_width, new_height);
floater->reshape( new_width, new_height, TRUE );
floater->setRect(new_rect);
+
+ floater->translateIntoRect( getLocalRect(), false );
}
}
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index a53a30b501..4e84013db0 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -142,6 +142,7 @@ LLScrollListCtrl::Params::Params()
contents(""),
scroll_bar_bg_visible("scroll_bar_bg_visible"),
scroll_bar_bg_color("scroll_bar_bg_color")
+ , border("border")
{
name = "scroll_list";
mouse_opaque = true;
@@ -231,10 +232,8 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
if (p.has_border)
{
LLRect border_rect = getLocalRect();
- LLViewBorder::Params params;
- params.name("dig border");
+ LLViewBorder::Params params = p.border;
params.rect(border_rect);
- params.bevel_style(LLViewBorder::BEVEL_IN);
mBorder = LLUICtrlFactory::create<LLViewBorder> (params);
addChild(mBorder);
}
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index 78bc60db6e..907dc90bea 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -51,6 +51,7 @@
#include "lldate.h"
#include "llscrolllistitem.h"
#include "llscrolllistcolumn.h"
+#include "llviewborder.h"
class LLScrollListCell;
class LLTextBox;
@@ -109,6 +110,8 @@ public:
scroll_bar_bg_color;
Optional<Contents> contents;
+
+ Optional<LLViewBorder::Params> border;
Params();
};
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 084cdd9561..42d680ade6 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -175,6 +175,15 @@ private:
}
std::string application_dir = std::string( cwd );
+#if LL_DARWIN
+ // When running under the Xcode debugger, there's a setting called "Break on Debugger()/DebugStr()" which defaults to being turned on.
+ // This causes the environment variable USERBREAK to be set to 1, which causes these legacy calls to break into the debugger.
+ // This wouldn't cause any problems except for the fact that the current release version of the Flash plugin has a call to Debugger() in it
+ // which gets hit when the plugin is probed by webkit.
+ // Unsetting the environment variable here works around this issue.
+ unsetenv("USERBREAK");
+#endif
+
#if LL_WINDOWS
//*NOTE:Mani - On windows, at least, the component path is the
// location of this dll's image file.
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 4886deaede..ccafbae156 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -285,7 +285,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>AudioStreamingMusic</key>
<map>
@@ -296,7 +296,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>AudioStreamingVideo</key>
<map>
@@ -307,7 +307,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>AuditTexture</key>
<map>
@@ -1154,7 +1154,7 @@
<key>Type</key>
<string>S32</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>5</integer>
</map>
<key>CameraAngle</key>
<map>
@@ -3629,7 +3629,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://viewer-help.secondlife.com/[LANGUAGE]/[CHANNEL]/[VERSION]/[TOPIC]/[DEBUG_MODE]</string>
+ <string>http://viewer-help.secondlife.com/[LANGUAGE]/[CHANNEL]/[VERSION]/[TOPIC][DEBUG_MODE]</string>
</map>
<key>HomeSidePanelURL</key>
<map>
@@ -3686,17 +3686,6 @@
<key>Value</key>
<string />
</map>
- <key>IMInChat</key>
- <map>
- <key>Comment</key>
- <string>Copy IM into chat console</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
<key>IMShowTimestamps</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index f909c9e6c1..21496aaa89 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -54,6 +54,7 @@
#include "lllayoutstack.h"
static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids);
+void reshape_floater(LLCallFloater* floater, S32 delta_height);
class LLNonAvatarCaller : public LLAvatarListItem
{
@@ -314,8 +315,33 @@ void LLCallFloater::updateSession()
//hide "Leave Call" button for nearby chat
bool is_local_chat = mVoiceType == VC_LOCAL_CHAT;
- childSetVisible("leave_call_btn_panel", !is_local_chat);
-
+
+ LLPanel* leave_panel = findChild<LLPanel>("leave_call_btn_panel");
+ if (leave_panel)
+ {
+ S32 delta = 0;
+ bool visible = !is_local_chat;
+ if ((bool)leave_panel->getVisible() != visible)
+ {
+ delta = visible
+ ? leave_panel->getRect().getHeight()
+ : -leave_panel->getRect().getHeight();
+ }
+ leave_panel->setVisible(visible);
+ if (delta)
+ {
+ LLLayoutStack* stack = getChild<LLLayoutStack>("my_call_stack");
+ BOOL animate = stack->getAnimate();
+ // Disable animation to prevent layout updating in several frames.
+ // We need this to get work reshapeToFitContent properly, otherwise
+ // the height of leave_call_btn_panel won't be completely included.
+ stack->setAnimate(FALSE);
+ reshape_floater(this, delta);
+ // Restore animate state.
+ stack->setAnimate(animate);
+ }
+ }
+
refreshParticipantList();
updateAgentModeratorState();
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 977f5c2bd0..a46cd84b60 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -609,3 +609,11 @@ void LLChatHistory::draw()
LLUICtrl::draw();
}
+void LLChatHistory::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ bool is_scrolled_to_end = mEditor->scrolledToEnd();
+ LLUICtrl::reshape( width, height, called_from_parent );
+ // update scroll
+ if (is_scrolled_to_end)
+ mEditor->setCursorAndScrollToEnd();
+}
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index 260015e2dc..f2d403f639 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -119,6 +119,7 @@ class LLChatHistory : public LLUICtrl
*/
void appendMessage(const LLChat& chat, const bool use_plain_text_chat_history = false, const LLStyle::Params& input_append_params = LLStyle::Params());
/*virtual*/ void clear();
+ /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
private:
std::string mLastFromName;
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index f21fbbe6f5..8da207f887 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -47,6 +47,7 @@
#include "llnotificationsutil.h"
#include "lloutputmonitorctrl.h"
#include "llscriptfloater.h"
+#include "llspeakers.h"
#include "lltextbox.h"
#include "llvoiceclient.h"
#include "llgroupmgr.h"
@@ -1293,10 +1294,12 @@ void LLChicletPanel::onChicletClick(LLUICtrl*ctrl,const LLSD&param)
void LLChicletPanel::removeChiclet(chiclet_list_t::iterator it)
{
- mScrollArea->removeChild(*it);
+ LLChiclet* chiclet = *it;
+ mScrollArea->removeChild(chiclet);
mChicletList.erase(it);
arrange();
+ chiclet->die();
}
void LLChicletPanel::removeChiclet(S32 index)
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index ae5b2148db..bb4846aa57 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -325,7 +325,7 @@ public:
};
- /*virtual*/ ~LLIMChiclet() {};
+ virtual ~LLIMChiclet() {};
/**
* Sets IM session name. This name will be displayed in chiclet tooltip.
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 72074955d1..47f1b7c9f5 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -446,10 +446,20 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status )
{
+ //TODO* CHAT: how to show this?
+ //LLSD args;
+ //args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound);
+ //LLNotificationsUtil::add("SystemMessage", args);
+
buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName;
}
else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status)
{
+ //TODO* CHAT: how to show this?
+ //LLSD args;
+ //args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound);
+ //LLNotificationsUtil::add("SystemMessage", args);
+
buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName;
}
else
diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
index fc1230d576..882d12f68e 100644
--- a/indra/newview/llfloaterchat.cpp
+++ b/indra/newview/llfloaterchat.cpp
@@ -311,7 +311,7 @@ void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data)
}
// Put a line of chat in all the right places
-void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL local_agent)
+void LLFloaterChat::addChat(const LLChat& chat, BOOL local_agent)
{
triggerAlerts(chat.mText);
@@ -321,19 +321,7 @@ void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL
//if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull())
// LLRecentPeople::instance().add(chat.mFromID);
- bool add_chat = true;
- bool log_chat = true;
- if(from_instant_message)
- {
- if (!gSavedSettings.getBOOL("IMInChat"))
- add_chat = false;
- //log_chat = false;
-}
-
- if (add_chat)
- {
- addChatHistory(chat, log_chat);
- }
+ addChatHistory(chat, true);
}
// Moved from lltextparser.cpp to break llui/llaudio library dependency.
diff --git a/indra/newview/llfloaterchat.h b/indra/newview/llfloaterchat.h
index 84fc199bfa..4437a0a5c2 100644
--- a/indra/newview/llfloaterchat.h
+++ b/indra/newview/llfloaterchat.h
@@ -61,7 +61,7 @@ public:
// *TODO:Skinning - move these to LLChat (or LLViewerChat?)
// Add chat to console and history list.
// Color based on source, type, distance.
- static void addChat(const LLChat& chat, BOOL from_im = FALSE, BOOL local_agent = FALSE);
+ static void addChat(const LLChat& chat, BOOL local_agent = FALSE);
// Add chat to history alone.
static void addChatHistory(const LLChat& chat, bool log_to_file = true);
diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp
index 5cfd56193e..976af121ae 100644
--- a/indra/newview/llfloatermediasettings.cpp
+++ b/indra/newview/llfloatermediasettings.cpp
@@ -192,6 +192,9 @@ void LLFloaterMediaSettings::initValues( const LLSD& media_settings, bool editab
sInstance->mPanelMediaSettingsGeneral->getValues( sInstance->mInitialValues );
sInstance->mPanelMediaSettingsSecurity->getValues( sInstance->mInitialValues );
sInstance->mPanelMediaSettingsPermissions->getValues( sInstance->mInitialValues );
+
+ sInstance->mApplyBtn->setEnabled(editable);
+ sInstance->mOKBtn->setEnabled(editable);
}
////////////////////////////////////////////////////////////////////////////////
@@ -266,8 +269,11 @@ const std::string LLFloaterMediaSettings::getHomeUrl()
// virtual
void LLFloaterMediaSettings::draw()
{
- // Set the enabled state of the "Apply" button if values changed
- childSetEnabled( "Apply", haveValuesChanged() );
+ if (NULL != mApplyBtn)
+ {
+ // Set the enabled state of the "Apply" button if values changed
+ mApplyBtn->setEnabled( haveValuesChanged() );
+ }
LLFloater::draw();
}
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 1287e14961..241497aeaf 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -1134,7 +1134,8 @@ void LLFloaterTools::getMediaState()
}
// XXX DISABLE this for now, because when the fetch finally
// does come in, the state of this floater doesn't properly
- // update. This needs more thought.
+ // update. Re-selecting fixes the problem, but there is
+ // contention as to whether this is a sufficient solution.
// if (object->isMediaDataBeingFetched())
// {
// LL_INFOS("LLFloaterTools: media")
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index d7c60ff34e..5dc7f900e7 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -57,7 +57,7 @@
#include "lltransientfloatermgr.h"
#include "llinventorymodel.h"
#include "llrootview.h"
-
+#include "llspeakers.h"
LLIMFloater::LLIMFloater(const LLUUID& session_id)
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index fad28015a8..0e3b78df7f 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -40,6 +40,7 @@
#include "llfontgl.h"
#include "llrect.h"
#include "llerror.h"
+#include "llmultifloater.h"
#include "llstring.h"
#include "message.h"
#include "lltextbox.h"
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index b53d36a074..950a4001c7 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -42,46 +42,30 @@
#include "llhttpclient.h"
#include "llsdutil_math.h"
#include "llstring.h"
+#include "lltrans.h"
#include "lluictrlfactory.h"
#include "llagent.h"
+#include "llagentui.h"
+#include "llappviewer.h"
#include "llavatariconctrl.h"
#include "llbottomtray.h"
#include "llcallingcard.h"
#include "llchat.h"
-#include "llchiclet.h"
-#include "llresmgr.h"
#include "llfloaterchatterbox.h"
-#include "llavataractions.h"
-#include "llhttpnode.h"
#include "llimfloater.h"
-#include "llimpanel.h"
#include "llgroupiconctrl.h"
-#include "llresizebar.h"
-#include "lltabcontainer.h"
-#include "llviewercontrol.h"
-#include "llfloater.h"
#include "llmutelist.h"
-#include "llresizehandle.h"
-#include "llkeyboard.h"
-#include "llui.h"
-#include "llviewermenu.h"
-#include "llcallingcard.h"
-#include "lltoolbar.h"
+#include "llrecentpeople.h"
#include "llviewermessage.h"
#include "llviewerwindow.h"
#include "llnotifications.h"
#include "llnotificationsutil.h"
#include "llnearbychat.h"
-#include "llviewerregion.h"
-#include "llvoicechannel.h"
-#include "lltrans.h"
-#include "llrecentpeople.h"
-#include "llsyswellwindow.h"
-
-//#include "llfirstuse.h"
-#include "llagentui.h"
+#include "llspeakers.h" //for LLIMSpeakerMgr
#include "lltextutil.h"
+#include "llviewercontrol.h"
+
const static std::string IM_TIME("time");
const static std::string IM_TEXT("message");
@@ -1859,7 +1843,7 @@ void LLIncomingCallDialog::onStartIM(void* user_data)
void LLIncomingCallDialog::processCallResponse(S32 response)
{
- if (!gIMMgr)
+ if (!gIMMgr || gDisconnected)
return;
LLUUID session_id = mPayload["session_id"].asUUID();
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index e72bda6c2b..a226d66b12 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -33,22 +33,19 @@
#ifndef LL_LLIMVIEW_H
#define LL_LLIMVIEW_H
-#include "lldarray.h"
-#include "lldockablefloater.h"
-#include "llspeakers.h" //for LLIMSpeakerMgr
-#include "llimpanel.h" //for voice channels
-#include "llmodaldialog.h"
#include "lldockablefloater.h"
#include "llinstantmessage.h"
-#include "lluuid.h"
-#include "llmultifloater.h"
+
#include "lllogchat.h"
+#include "llvoicechannel.h"
class LLFloaterChatterBox;
class LLUUID;
class LLFloaterIMPanel;
class LLFriendObserver;
class LLCallDialogManager;
+class LLIMSpeakerMgr;
+
class LLIMModel : public LLSingleton<LLIMModel>
{
diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp
index bd9d22c327..ce84474c05 100644
--- a/indra/newview/lllandmarklist.cpp
+++ b/indra/newview/lllandmarklist.cpp
@@ -59,6 +59,13 @@ LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t
LLLandmark* landmark = get_ptr_in_map(mList, asset_uuid);
if(landmark)
{
+ LLVector3d dummy;
+ if(cb && !landmark->getGlobalPos(dummy))
+ {
+ // landmark is not completely loaded yet
+ loaded_callback_map_t::value_type vt(asset_uuid, cb);
+ mLoadedCallbackMap.insert(vt);
+ }
return landmark;
}
else
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index cf4a08ce76..7ee4c64f8f 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -64,6 +64,7 @@
#include "llviewerwindow.h"
#include "llworld.h" //for particle system banning
#include "llchat.h"
+#include "llimpanel.h"
#include "llimview.h"
#include "llnotifications.h"
#include "lluistring.h"
diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp
index d434017804..cd810b9793 100644
--- a/indra/newview/llnamebox.cpp
+++ b/indra/newview/llnamebox.cpp
@@ -53,6 +53,7 @@ LLNameBox::LLNameBox(const Params& p)
{
mNameID = LLUUID::null;
mLink = p.link;
+ mInitialValue = p.initial_value().asString();
LLNameBox::sInstances.insert(this);
setText(LLStringUtil::null);
}
@@ -67,17 +68,23 @@ void LLNameBox::setNameID(const LLUUID& name_id, BOOL is_group)
mNameID = name_id;
std::string name;
+ BOOL got_name = FALSE;
if (!is_group)
{
- gCacheName->getFullName(name_id, name);
+ got_name = gCacheName->getFullName(name_id, name);
}
else
{
- gCacheName->getGroupName(name_id, name);
+ got_name = gCacheName->getGroupName(name_id, name);
}
- setName(name, is_group);
+ // Got the name already? Set it.
+ // Otherwise it will be set later in refresh().
+ if (got_name)
+ setName(name, is_group);
+ else
+ setText(mInitialValue);
}
void LLNameBox::refresh(const LLUUID& id, const std::string& firstname,
diff --git a/indra/newview/llnamebox.h b/indra/newview/llnamebox.h
index 0109525e85..48b54faec8 100644
--- a/indra/newview/llnamebox.h
+++ b/indra/newview/llnamebox.h
@@ -76,6 +76,7 @@ private:
private:
LLUUID mNameID;
BOOL mLink;
+ std::string mInitialValue;
};
diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
index 7e6145f578..6375362ae2 100644
--- a/indra/newview/llnamelistctrl.cpp
+++ b/indra/newview/llnamelistctrl.cpp
@@ -74,12 +74,12 @@ void LLNameListCtrl::addNameItem(const LLUUID& agent_id, EAddPosition pos,
{
//llinfos << "LLNameListCtrl::addNameItem " << agent_id << llendl;
- std::string fullname;
- gCacheName->getFullName(agent_id, fullname);
-
- fullname.append(suffix);
+ NameItem item;
+ item.value = agent_id;
+ item.enabled = enabled;
+ item.target = INDIVIDUAL;
- addStringUUIDItem(fullname, agent_id, pos, enabled);
+ addNameItemRow(item, pos);
}
// virtual, public
@@ -130,11 +130,12 @@ BOOL LLNameListCtrl::handleDragAndDrop(
return handled;
}
-void LLNameListCtrl::showAvatarInspector(const LLUUID& avatar_id)
+void LLNameListCtrl::showInspector(const LLUUID& avatar_id, bool is_group)
{
- LLSD key;
- key["avatar_id"] = avatar_id;
- LLFloaterReg::showInstance("inspect_avatar", key);
+ if (is_group)
+ LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", avatar_id));
+ else
+ LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", avatar_id));
}
//virtual
@@ -147,7 +148,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
&& column_index == mNameColumnIndex)
{
// ...this is the column with the avatar name
- LLUUID avatar_id = hit_item->getValue().asUUID();
+ LLUUID avatar_id = getItemId(hit_item);
if (avatar_id.notNull())
{
// ...valid avatar id
@@ -164,9 +165,12 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop );
LLPointer<LLUIImage> icon = LLUI::getUIImage("Info_Small");
+ // Should we show a group or an avatar inspector?
+ bool is_group = hit_item->getValue()["is_group"].asBoolean();
+
LLToolTip::Params params;
params.background_visible( false );
- params.click_callback( boost::bind(&LLNameListCtrl::showAvatarInspector, this, avatar_id) );
+ params.click_callback( boost::bind(&LLNameListCtrl::showInspector, this, avatar_id, is_group) );
params.delay_time(0.0f); // spawn instantly on hover
params.image( icon );
params.message("");
@@ -220,9 +224,22 @@ LLScrollListItem* LLNameListCtrl::addElement(const LLSD& element, EAddPosition p
}
-LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem& name_item, EAddPosition pos)
+LLScrollListItem* LLNameListCtrl::addNameItemRow(
+ const LLNameListCtrl::NameItem& name_item,
+ EAddPosition pos,
+ std::string& suffix)
{
- LLScrollListItem* item = LLScrollListCtrl::addRow(name_item, pos);
+ LLUUID id = name_item.value().asUUID();
+ LLScrollListItem* item = NULL;
+
+ // Store item type so that we can invoke the proper inspector.
+ // *TODO Vadim: Is there a more proper way of storing additional item data?
+ {
+ LLNameListCtrl::NameItem name_item_(name_item);
+ name_item_.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP);
+ item = LLScrollListCtrl::addRow(name_item_, pos);
+ }
+
if (!item) return NULL;
// use supplied name by default
@@ -230,7 +247,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&
switch(name_item.target)
{
case GROUP:
- gCacheName->getGroupName(name_item.value().asUUID(), fullname);
+ gCacheName->getGroupName(id, fullname);
// fullname will be "nobody" if group not found
break;
case SPECIAL:
@@ -239,7 +256,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&
case INDIVIDUAL:
{
std::string name;
- if (gCacheName->getFullName(name_item.value().asUUID(), name))
+ if (gCacheName->getFullName(id, name))
{
fullname = name;
}
@@ -249,6 +266,12 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&
break;
}
+ // Append optional suffix.
+ if (!suffix.empty())
+ {
+ fullname.append(suffix);
+ }
+
LLScrollListCell* cell = item->getColumn(mNameColumnIndex);
if (cell)
{
@@ -270,15 +293,24 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&
// public
void LLNameListCtrl::removeNameItem(const LLUUID& agent_id)
{
- BOOL item_exists = selectByID( agent_id );
- if(item_exists)
+ // Find the item specified with agent_id.
+ S32 idx = -1;
+ for (item_list::iterator it = getItemList().begin(); it != getItemList().end(); it++)
{
- S32 index = getItemIndex(getFirstSelected());
- if(index >= 0)
+ LLScrollListItem* item = *it;
+ if (getItemId(item) == agent_id)
{
- deleteSingleItem(index);
+ idx = getItemIndex(item);
+ break;
}
}
+
+ // Remove it.
+ if (idx >= 0)
+ {
+ selectNthItem(idx); // not sure whether this is needed, taken from previous implementation
+ deleteSingleItem(idx);
+ }
}
// public
@@ -303,7 +335,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first,
for (iter = getItemList().begin(); iter != getItemList().end(); iter++)
{
LLScrollListItem* item = *iter;
- if (item->getUUID() == id)
+ if (getItemId(item) == id)
{
LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(0);
cell = item->getColumn(mNameColumnIndex);
@@ -343,3 +375,9 @@ void LLNameListCtrl::updateColumns()
}
}
}
+
+// static
+LLUUID LLNameListCtrl::getItemId(LLScrollListItem* item)
+{
+ return item->getValue()["uuid"].asUUID();
+}
diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h
index d0f0ec4d21..192a3a5afa 100644
--- a/indra/newview/llnamelistctrl.h
+++ b/indra/newview/llnamelistctrl.h
@@ -94,7 +94,7 @@ public:
void addNameItem(NameItem& item, EAddPosition pos = ADD_BOTTOM);
/*virtual*/ LLScrollListItem* addElement(const LLSD& element, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL);
- LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM);
+ LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM, std::string& suffix = LLStringUtil::null);
// Add a user to the list by name. It will be added, the name
// requested from the cache, and updated as necessary.
@@ -121,7 +121,8 @@ public:
/*virtual*/ void updateColumns();
private:
- void showAvatarInspector(const LLUUID& avatar_id);
+ void showInspector(const LLUUID& avatar_id, bool is_group);
+ static LLUUID getItemId(LLScrollListItem* item);
private:
S32 mNameColumnIndex;
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index e29320ffc2..01b3f3bb7f 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -72,6 +72,7 @@
#include "llviewerwindow.h" // for window width, height
#include "llappviewer.h" // abortQuit()
#include "lltrans.h"
+#include "llstatusbar.h"
const S32 MINIMUM_PRICE_FOR_LISTING = 50; // L$
const S32 MATURE_UNDEFINED = -1;
@@ -1364,6 +1365,7 @@ static const S32 CB_ITEM_PG = 1;
LLPanelClassifiedEdit::LLPanelClassifiedEdit()
: LLPanelClassifiedInfo()
, mIsNew(false)
+ , mCanClose(false)
{
}
@@ -1559,7 +1561,7 @@ void LLPanelClassifiedEdit::resetControls()
bool LLPanelClassifiedEdit::canClose()
{
- return isValidName();
+ return mCanClose;
}
void LLPanelClassifiedEdit::sendUpdate()
@@ -1676,12 +1678,23 @@ void LLPanelClassifiedEdit::onChange()
void LLPanelClassifiedEdit::onSaveClick()
{
+ mCanClose = false;
+
if(!isValidName())
{
notifyInvalidName();
return;
}
+ if(isNew())
+ {
+ if(gStatusBar->getBalance() < getPriceForListing())
+ {
+ LLNotificationsUtil::add("ClassifiedInsuffisientFunds");
+ return;
+ }
+ }
+ mCanClose = true;
sendUpdate();
resetDirty();
}
diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h
index 10fdf60bbe..e46806f576 100644
--- a/indra/newview/llpanelclassified.h
+++ b/indra/newview/llpanelclassified.h
@@ -340,6 +340,7 @@ protected:
private:
bool mIsNew;
+ bool mCanClose;
};
#endif // LL_LLPANELCLASSIFIED_H
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index a2d30662f3..c0b2a40d46 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -46,6 +46,7 @@
#include "llimview.h"
#include "llvoicechannel.h"
#include "llsidetray.h"
+#include "llspeakers.h"
#include "lltrans.h"
void LLPanelChatControlPanel::onCallButtonClicked()
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index 597b8bdb2d..9654e17659 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -185,6 +185,13 @@ void LLPanelLandmarkInfo::processParcelInfo(const LLParcelData& parcel_data)
region_z = llround(mPosRegion.mV[VZ]);
}
+ LLSD info;
+ info["update_verbs"] = true;
+ info["global_x"] = parcel_data.global_x;
+ info["global_y"] = parcel_data.global_y;
+ info["global_z"] = parcel_data.global_z;
+ notifyParent(info);
+
if (mInfoType == CREATE_LANDMARK)
{
if (parcel_data.name.empty())
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index df73c27f54..fd5ce7a46d 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -569,8 +569,6 @@ void LLPanelOutfitsInventory::initTabPanels()
myoutfits_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
mTabPanels[1] = myoutfits_panel;
- mActivePanel = mTabPanels[0];
-
for (tabpanels_vec_t::iterator iter = mTabPanels.begin();
iter != mTabPanels.end();
++iter)
@@ -581,6 +579,7 @@ void LLPanelOutfitsInventory::initTabPanels()
mAppearanceTabs = getChild<LLTabContainer>("appearance_tabs");
mAppearanceTabs->setCommitCallback(boost::bind(&LLPanelOutfitsInventory::onTabChange, this));
+ mActivePanel = (LLInventoryPanel*)mAppearanceTabs->getCurrentPanel();
}
void LLPanelOutfitsInventory::onTabSelectionChange(LLInventoryPanel* tab_panel, const std::deque<LLFolderViewItem*> &items, BOOL user_action)
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
index e7615929c8..5ac0587550 100644
--- a/indra/newview/llpanelpick.cpp
+++ b/indra/newview/llpanelpick.cpp
@@ -448,7 +448,7 @@ BOOL LLPanelPickEdit::postBuild()
{
LLPanelPickInfo::postBuild();
- mSnapshotCtrl->setOnSelectCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1));
+ mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelPickEdit::onSnapshotChanged, this));
LLLineEditor* line_edit = getChild<LLLineEditor>("pick_name");
line_edit->setKeystrokeCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1), NULL);
@@ -537,16 +537,14 @@ void LLPanelPickEdit::sendUpdate()
}
}
+void LLPanelPickEdit::onSnapshotChanged()
+{
+ enableSaveButton(true);
+}
+
void LLPanelPickEdit::onPickChanged(LLUICtrl* ctrl)
{
- if(isDirty())
- {
- enableSaveButton(true);
- }
- else
- {
- enableSaveButton(false);
- }
+ enableSaveButton(isDirty());
}
void LLPanelPickEdit::resetData()
@@ -613,10 +611,6 @@ void LLPanelPickEdit::initTexturePickerMouseEvents()
mSnapshotCtrl->setMouseEnterCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseEnter, this, _1));
mSnapshotCtrl->setMouseLeaveCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseLeave, this, _1));
- // *WORKAROUND: Needed for EXT-1625: enabling save button each time when picker is opened, even if
- // texture wasn't changed (see Steve's comment).
- mSnapshotCtrl->setMouseDownCallback(boost::bind(&LLPanelPickEdit::enableSaveButton, this, true));
-
text_icon->setVisible(FALSE);
}
diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h
index 62c3b20c0d..4f27760a8d 100644
--- a/indra/newview/llpanelpick.h
+++ b/indra/newview/llpanelpick.h
@@ -222,6 +222,11 @@ protected:
void sendUpdate();
/**
+ * Called when snapshot image changes.
+ */
+ void onSnapshotChanged();
+
+ /**
* Callback for Pick snapshot, name and description changed event.
*/
void onPickChanged(LLUICtrl* ctrl);
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 685104a8b1..a71c8d8958 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -449,6 +449,22 @@ void LLPanelPlaces::setItem(LLInventoryItem* item)
}
}
+S32 LLPanelPlaces::notifyParent(const LLSD& info)
+{
+ if(info.has("update_verbs"))
+ {
+ if(mPosGlobal.isExactlyZero())
+ {
+ mPosGlobal.setVec(info["global_x"], info["global_y"], info["global_z"]);
+ }
+
+ updateVerbs();
+
+ return 1;
+ }
+ return LLPanel::notifyParent(info);
+}
+
void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)
{
if (!mLandmarkInfo)
@@ -460,6 +476,8 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)
mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal);
mSaveBtn->setEnabled(TRUE);
+
+ updateVerbs();
}
void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_filter)
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index b134cf0cba..27b5911ebb 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -75,6 +75,8 @@ public:
std::string getPlaceInfoType() { return mPlaceInfoType; }
+ /*virtual*/ S32 notifyParent(const LLSD& info);
+
private:
void onLandmarkLoaded(LLLandmark* landmark);
void onFilterEdit(const std::string& search_string, bool force_filter);
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 571745ee02..1b8fb49641 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -1036,7 +1036,7 @@ void LLTeleportHistoryPanel::setAccordionCollapsedByUser(LLUICtrl* acc_tab, bool
bool LLTeleportHistoryPanel::isAccordionCollapsedByUser(LLUICtrl* acc_tab)
{
LLSD param = acc_tab->getValue();
- if(!param.has("acc_collapsed"))
+ if(!param.has(COLLAPSED_BY_USER))
{
return false;
}
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 0d8c847d27..dcb7e9e878 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -581,7 +581,7 @@ void LLParticipantList::LLParticipantListMenu::moderateVoiceOtherParticipants(co
bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& userdata)
{
std::string item = userdata.asString();
- if (item == "can_mute_text" || "can_block" == item)
+ if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item)
{
return mUUIDs.front() != gAgentID;
}
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 2a40cbaba0..84bdaafacf 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -364,6 +364,12 @@ BOOL LLPreviewGesture::postBuild()
LLTextBox* text;
LLCheckBoxCtrl* check;
+ edit = getChild<LLLineEditor>("name");
+ edit->setKeystrokeCallback(onKeystrokeCommit, this);
+
+ edit = getChild<LLLineEditor>("desc");
+ edit->setKeystrokeCallback(onKeystrokeCommit, this);
+
edit = getChild<LLLineEditor>("trigger_editor");
edit->setKeystrokeCallback(onKeystrokeCommit, this);
edit->setCommitCallback(onCommitSetDirty, this);
diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp
index 2f3b288a47..0aeef6ac40 100644
--- a/indra/newview/llspeakingindicatormanager.cpp
+++ b/indra/newview/llspeakingindicatormanager.cpp
@@ -36,7 +36,6 @@
#include "llspeakingindicatormanager.h"
-#include "llagentdata.h"
#include "llvoicechannel.h"
#include "llvoiceclient.h"
@@ -134,7 +133,7 @@ private:
//////////////////////////////////////////////////////////////////////////
void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator)
{
- if (speaker_id == gAgentID) return;
+ // do not exclude agent's indicators. They should be processed in the same way as others. See EXT-3889.
LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << LL_ENDL;
speaking_indicator_value_t value_type(speaker_id, speaking_indicator);
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 72ef383be9..4a7d784c3e 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -1139,7 +1139,7 @@ LLTexLayerInterface::LLTexLayerInterface(const LLTexLayerInterface &layer, LLWea
BOOL LLTexLayerInterface::setInfo(const LLTexLayerInfo *info, LLWearable* wearable ) // This sets mInfo and calls initialization functions
{
- llassert(mInfo == NULL);
+ //llassert(mInfo == NULL); // nyx says this is probably bogus but needs investigating
mInfo = info;
//mID = info->mID; // No ID
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index b980f65e68..9c4825763b 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -878,6 +878,7 @@ LLTextureCtrl::LLTextureCtrl(const LLTextureCtrl::Params& p)
{
setAllowNoTexture(p.allow_no_texture);
setCanApplyImmediately(p.can_apply_immediately);
+ mCommitOnSelection = !p.no_commit_on_selection;
LLTextBox::Params params(p.caption_text);
params.name(p.label);
@@ -1122,7 +1123,11 @@ void LLTextureCtrl::onFloaterCommit(ETexturePickOp op)
}
else
{
- onCommit();
+ // If the "no_commit_on_selection" parameter is set
+ // we commit only when user presses OK in the picker
+ // (i.e. op == TEXTURE_SELECT) or changes texture via DnD.
+ if (mCommitOnSelection || op == TEXTURE_SELECT)
+ onCommit();
}
}
}
diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h
index fb1d591e32..023329a9b2 100644
--- a/indra/newview/lltexturectrl.h
+++ b/indra/newview/lltexturectrl.h
@@ -74,6 +74,7 @@ public:
Optional<std::string> default_image_name;
Optional<bool> allow_no_texture;
Optional<bool> can_apply_immediately;
+ Optional<bool> no_commit_on_selection; // don't commit unless it's DnD or OK button press
Optional<S32> label_width;
Optional<LLUIColor> border_color;
@@ -88,6 +89,7 @@ public:
default_image_name("default_image_name"),
allow_no_texture("allow_no_texture"),
can_apply_immediately("can_apply_immediately"),
+ no_commit_on_selection("no_commit_on_selection", false),
label_width("label_width", -1),
border_color("border_color"),
multiselect_text("multiselect_text"),
@@ -204,6 +206,7 @@ private:
PermissionMask mImmediateFilterPermMask;
PermissionMask mNonImmediateFilterPermMask;
BOOL mCanApplyImmediately;
+ BOOL mCommitOnSelection;
BOOL mNeedsRawImageData;
LLViewBorder* mBorder;
BOOL mValid;
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index da7e8cd767..da68af1597 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -1515,7 +1515,7 @@ BOOL LLToolPie::pickRightMouseDownCallback()
}
else
{
- mute_msg = LLTrans::getString("MuteObject");
+ mute_msg = LLTrans::getString("MuteObject2");
}
gMenuHolder->childSetText("Object Mute", mute_msg);
diff --git a/indra/newview/llviewerhelputil.cpp b/indra/newview/llviewerhelputil.cpp
index ffc5761372..967a2925e3 100644
--- a/indra/newview/llviewerhelputil.cpp
+++ b/indra/newview/llviewerhelputil.cpp
@@ -64,7 +64,7 @@ std::string LLViewerHelpUtil::buildHelpURL( const std::string &topic)
{
LLSD substitution;
substitution["TOPIC"] = helpURLEncode(topic);
- substitution["DEBUG_MODE"] = gAgent.isGodlike() ? "debug" : "";
+ substitution["DEBUG_MODE"] = gAgent.isGodlike() ? "/debug" : "";
// get the help URL and expand all of the substitutions
// (also adds things like [LANGUAGE], [VERSION], [OS], etc.)
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index ef596f9297..04d67fe750 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -1246,7 +1246,24 @@ void LLViewerMediaImpl::loadURI()
{
if(mMediaSource)
{
- mMediaSource->loadURI( mMediaURL );
+ // *HACK: we don't know if the URI coming in is properly escaped
+ // (the contract doesn't specify whether it is escaped or not.
+ // but LLQtWebKit expects it to be, so we do our best to encode
+ // special characters)
+ // The strings below were taken right from http://www.ietf.org/rfc/rfc1738.txt
+ // Note especially that '%' and '/' are there.
+ std::string uri = LLURI::escape(mMediaURL,
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
+ "0123456789"
+ "$-_.+"
+ "!*'(),"
+ "{}|\\^~[]`"
+ "<>#%"
+ ";/?:@&=",
+ false);
+ llinfos << "Asking media source to load URI: " << uri << llendl;
+
+ mMediaSource->loadURI( uri );
if(mPreviousMediaState == MEDIA_PLAYING)
{
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 668f3b563d..ff18ed605a 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -330,6 +330,7 @@ public:
bool isNavigateSuspended() { return mNavigateSuspended; };
void cancelMimeTypeProbe();
+
private:
// a single media url with some data and an impl.
LLPluginClassMedia* mMediaSource;
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index ba26a51b8b..6262bca432 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -6373,8 +6373,57 @@ class LLToolsSelectedScriptAction : public view_listener_t
void handle_selected_texture_info(void*)
{
- //useless without LLFloaterChat
- //as since we don't use LLFloaterChat...
+ for (LLObjectSelection::valid_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_begin();
+ iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++)
+ {
+ LLSelectNode* node = *iter;
+
+ std::string msg;
+ msg.assign("Texture info for: ");
+ msg.append(node->mName);
+
+ //TODO* CHAT: how to show this?
+ //LLSD args;
+ //args["MESSAGE"] = msg;
+ //LLNotificationsUtil::add("SystemMessage", args);
+
+ U8 te_count = node->getObject()->getNumTEs();
+ // map from texture ID to list of faces using it
+ typedef std::map< LLUUID, std::vector<U8> > map_t;
+ map_t faces_per_texture;
+ for (U8 i = 0; i < te_count; i++)
+ {
+ if (!node->isTESelected(i)) continue;
+
+ LLViewerTexture* img = node->getObject()->getTEImage(i);
+ LLUUID image_id = img->getID();
+ faces_per_texture[image_id].push_back(i);
+ }
+ // Per-texture, dump which faces are using it.
+ map_t::iterator it;
+ for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it)
+ {
+ LLUUID image_id = it->first;
+ U8 te = it->second[0];
+ LLViewerTexture* img = node->getObject()->getTEImage(te);
+ S32 height = img->getHeight();
+ S32 width = img->getWidth();
+ S32 components = img->getComponents();
+ msg = llformat("%dx%d %s on face ",
+ width,
+ height,
+ (components == 4 ? "alpha" : "opaque"));
+ for (U8 i = 0; i < it->second.size(); ++i)
+ {
+ msg.append( llformat("%d ", (S32)(it->second[i])));
+ }
+
+ //TODO* CHAT: how to show this?
+ //LLSD args;
+ //args["MESSAGE"] = msg;
+ //LLNotificationsUtil::add("SystemMessage", args);
+ }
+ }
}
void handle_test_male(void*)
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 9b15a5154f..52f1de5ffa 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -78,6 +78,7 @@
#include "llstatenums.h"
#include "llstatusbar.h"
#include "llimview.h"
+#include "llspeakers.h"
#include "lltrans.h"
#include "llviewerfoldertype.h"
#include "lluri.h"
@@ -908,6 +909,14 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
LLSideTray::getInstance()->showPanel("panel_places",
LLSD().with("type", "landmark").with("id", item->getUUID()));
}
+ else if("group_offer" == from_name)
+ {
+ // do not open inventory when we open group notice attachment because
+ // we already opened landmark info panel
+ // "group_offer" is passed by LLOpenTaskGroupOffer
+
+ continue;
+ }
else if(from_name.empty())
{
// we receive a message from LLOpenTaskOffer, it mean that new landmark has been added.
@@ -1356,7 +1365,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
if (check_offer_throttle(mFromName, true))
{
log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");
- //TODO* should go to history only - how?
+ //TODO* CHAT: how to show this?
//LLSD args;
//args["MESSAGE"] = log_message;
//LLNotificationsUtil::add("SystemMessage", args);
@@ -1401,7 +1410,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
// send the message
msg->sendReliable(mHost);
- //TODO* should go to message history only...
+ //TODO* CHAT: how to show this?
//log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";
//LLSD args;
//args["MESSAGE"] = log_message;
@@ -1829,17 +1838,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// history. Pretend the chat is from a local agent,
// so it will go into the history but not be shown on screen.
- //TODO* should go to message hisyory only
+ //TODO* CHAT: how to show this?
//and this is not system message...
//LLSD args;
//args["MESSAGE"] = buffer;
//LLNotificationsUtil::add("SystemMessage", args);
-
- /*
- chat.mText = buffer;
- BOOL local_agent = TRUE;
- LLFloaterChat::addChat( chat, TRUE, local_agent );
- */
}
}
break;
@@ -3075,10 +3078,11 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
if (avatarp)
{
// Chat the "back" SLURL. (DEV-4907)
- //should go to history only so leave commented
- //LLSD args;
- //args["MESSAGE"] = message;
- //LLNotificationsUtil::add("SystemMessage", args);
+
+ //TODO* CHAT: how to show this?
+ //LLSD args;
+ //args["MESSAGE"] = message;
+ //LLNotificationsUtil::add("SystemMessage", args);
// Set the new position
avatarp->setPositionAgent(agent_pos);
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 9f1fe0c11f..03b03b3884 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -59,6 +59,7 @@
#include "llparcel.h"
#include "llviewerparcelmgr.h"
//#include "llfirstuse.h"
+#include "llspeakers.h"
#include "llviewerwindow.h"
#include "llviewercamera.h"
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index d23bcf9006..d5dd19e470 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -2116,11 +2116,19 @@ viewer_media_t LLVOVolume::getMediaImpl(U8 face_id) const
F64 LLVOVolume::getTotalMediaInterest() const
{
+ // If this object is currently focused, this object has "high" interest
if (LLViewerMediaFocus::getInstance()->getFocusedObjectID() == getID())
return F64_MAX;
F64 interest = (F64)-1.0; // means not interested;
- int i = 0;
+
+ // If this object is selected, this object has "high" interest, but since
+ // there can be more than one, we still add in calculated impl interest
+ // XXX Sadly, 'contains()' doesn't take a const :(
+ if (LLSelectMgr::getInstance()->getSelection()->contains(const_cast<LLVOVolume*>(this)))
+ interest = F64_MAX / 2.0;
+
+ int i = 0;
const int end = getNumTEs();
for ( ; i < end; ++i)
{
diff --git a/indra/newview/skins/default/xui/en/favorites_bar_button.xml b/indra/newview/skins/default/xui/en/favorites_bar_button.xml
index dfb0695ec3..6adf2a5950 100644
--- a/indra/newview/skins/default/xui/en/favorites_bar_button.xml
+++ b/indra/newview/skins/default/xui/en/favorites_bar_button.xml
@@ -3,7 +3,6 @@
<!-- All buttons in the Favorites bar will be created from this one -->
<button
follows="left|bottom"
- font_halign="center"
halign="center"
height="15"
image_disabled="transparent.j2c"
diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index cb4cbd229a..0b48ba9321 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -18,7 +18,7 @@
single_instance="true"
width="320">
<string name="nudge_parabuild">Nudge 1</string>
- <string name="test_the_vlt">This string is extracted.</string>
+ <string name="test_the_vlt">This string CHANGE is extracted.</string>
<chat_history
allow_html="true"
bg_readonly_color="ChatHistoryBgColor"
diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
index c3d84de9a7..16079b30cb 100644
--- a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
@@ -1,7 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
- legacy_header_height="18"
- border="true"
can_close="false"
can_minimize="false"
height="100"
@@ -9,7 +7,7 @@
name="modal container"
width="240">
<button
- height="20"
+ height="23"
label="Save"
label_selected="Save"
layout="topleft"
@@ -18,7 +16,7 @@
top="70"
width="82" />
<button
- height="20"
+ height="23"
label="Cancel"
label_selected="Cancel"
layout="topleft"
@@ -30,14 +28,15 @@
type="string"
length="1"
follows="left|top"
- font="SansSerif"
- height="16"
+ height="30"
layout="topleft"
left="20"
+ word_wrap="true"
name="Save item as:"
top="10"
width="200">
- Save outfit as:
+ Save what I'm wearing
+as a new Outfit:
</text>
<line_editor
type="string"
@@ -45,15 +44,15 @@
border_style="line"
border_thickness="1"
follows="left|top"
- font="SansSerif"
handle_edit_keys_directly="true"
- height="20"
+ height="23"
layout="topleft"
left_delta="0"
+ show_text_as_tentative="false"
+ top_pad="0"
max_length="63"
name="name ed"
- top_pad="4"
width="200">
- [DESC]
+ [DESC] (new)
</line_editor>
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml
index 9a95e3dfef..b4b57f2dbc 100644
--- a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml
+++ b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
- legacy_header_height="18"
- border="true"
+ legacy_header_height="0"
can_close="false"
can_minimize="false"
height="100"
@@ -9,7 +8,7 @@
name="modal container"
width="240">
<button
- height="20"
+ height="23"
label="Save"
label_selected="Save"
layout="topleft"
@@ -18,7 +17,7 @@
top="70"
width="82" />
<button
- height="20"
+ height="23"
label="Cancel"
label_selected="Cancel"
layout="topleft"
@@ -30,14 +29,14 @@
type="string"
length="1"
follows="left|top"
- font="SansSerif"
- height="16"
+ height="30"
layout="topleft"
+ word_wrap="true"
left="20"
name="Save item as:"
top="10"
width="200">
- Save item as:
+ Save item to my inventory as:
</text>
<line_editor
type="string"
@@ -45,14 +44,13 @@
border_style="line"
border_thickness="1"
follows="left|top"
- font="SansSerif"
handle_edit_keys_directly="true"
- height="20"
+ height="23"
layout="topleft"
left_delta="0"
max_length="63"
name="name ed"
- top_pad="4"
+ top_pad="0"
width="200">
New [DESC]
</line_editor>
diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml
index 8904d4f49c..65c9c2a8fa 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -77,7 +77,7 @@
top_delta="6"
left_pad="5"
layout="topleft"
- name="person_label"
+ name="me_label"
width="90">
Me
</text>
@@ -196,7 +196,7 @@
height="16"
layout="topleft"
left_pad="0"
- name="auction_label"
+ name="by_owner_label"
top_delta="3"
width="100">
by owner
diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml
index 31263fbea8..805ffbae66 100644
--- a/indra/newview/skins/default/xui/en/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml
@@ -47,6 +47,9 @@
name="IM">
<menu_item_call.on_click
function="Avatar.IM" />
+ <menu_item_call.on_enable
+ function="ParticipantList.EnableItem"
+ parameter="can_im" />
</menu_item_call>
<menu_item_call
label="Call"
@@ -65,6 +68,9 @@
name="Share">
<menu_item_call.on_click
function="Avatar.Share" />
+ <menu_item_call.on_enable
+ function="ParticipantList.EnableItem"
+ parameter="can_share" />
</menu_item_call>
<menu_item_call
label="Pay"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 45100eb1ff..a98a049c17 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -293,7 +293,7 @@
create_jump_keys="true"
label="Show"
layout="topleft"
- name="Land"
+ name="LandShow"
tear_off="true">
<menu_item_check
label="Move Controls"
@@ -1603,17 +1603,6 @@
function="ToggleControl"
parameter="MouseSmooth" />
</menu_item_check>
- <menu_item_check
- label="Show IMs in Nearby Chat"
- layout="topleft"
- name="IMInChat">
- <menu_item_check.on_check
- function="CheckControl"
- parameter="IMInChat" />
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="IMInChat" />
- </menu_item_check>
<menu_item_separator
layout="topleft" />
<menu
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 598c5fd8ca..c981220c01 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -770,6 +770,16 @@ Save changes to classified [NAME]?
notext="Don&apos;t Save"
yestext="Save"/>
</notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="ClassifiedInsuffisientFunds"
+ type="alertmodal">
+Insuffisient funds to create classified.
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
<notification
icon="alertmodal.tga"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index 15eff4b67c..8e39697a16 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -61,6 +61,7 @@
height="197"
width="280"
layout="topleft"
+ no_commit_on_selection="true"
top="20"
left="10"
name="pick_snapshot" />
diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
index 172cf18fc4..8268937e7f 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -304,8 +304,10 @@
<name_box
follows="left|top|right"
height="30"
+ initial_value="(retrieving)"
layout="topleft"
left="0"
+ link="true"
name="partner_text"
top="0"
width="285"
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 8188048821..5b0a7107e4 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
@@ -88,6 +88,7 @@ background_visible="true"
initial_value="(retrieving)"
layout="topleft"
left_delta="0"
+ link="true"
name="founder_name"
top_pad="2"
use_ellipses="true"
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
index 27c1af1860..2659156ba8 100644
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -267,6 +267,7 @@
<name_box
follows="left|top"
height="10"
+ initial_value="(retrieving)"
layout="topleft"
left="0"
link="true"
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 58cb5fed5d..bfc97ed5da 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -127,7 +127,11 @@
label="Search [SECOND_LIFE]"
name="search_combo_editor"/>
<combo_list
- draw_border="true" />
+ draw_border="true"
+ border.highlight_light_color="FocusColor"
+ border.highlight_dark_color="FocusColor"
+ border.shadow_light_color="FocusColor"
+ border.shadow_dark_color="FocusColor"/>
</search_combo_box>
</panel>
<favorites_bar
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index fd540bdc7e..8895484326 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -21,22 +21,8 @@
halign="center"
width="313">
<inventory_panel
- follows="all"
- background_visible="true"
- background_opaque="true"
- label="WEARING"
- help_topic="now_wearing_tab"
- allow_multi_select="true"
- border="false"
- left="0"
- top="0"
- mouse_opaque="true"
- name="cof_accordionpanel"
- start_folder="Current Outfit"
- width="313" />
- <inventory_panel
- background_visible="true"
- background_opaque="true"
+ background_visible="true"
+ background_opaque="true"
label="MY OUTFITS"
help_topic="my_outfits_tab"
allow_multi_select="true"
@@ -48,6 +34,20 @@
mouse_opaque="true"
name="outfitslist_tab"
start_folder="My Outfits" />
+ <inventory_panel
+ follows="all"
+ background_visible="true"
+ background_opaque="true"
+ label="WEARING"
+ help_topic="now_wearing_tab"
+ allow_multi_select="true"
+ border="false"
+ left="0"
+ top="0"
+ mouse_opaque="true"
+ name="cof_accordionpanel"
+ start_folder="Current Outfit"
+ width="313" />
</tab_container>
<panel
background_visible="true"
@@ -103,5 +103,15 @@
top="26"
tool_tip="Wear selected outfit"
width="120" />
+ <button
+ follows="bottom|left"
+ height="23"
+ label="M"
+ layout="topleft"
+ right="-140"
+ name="look_edit_btn"
+ top="26"
+ visible="false"
+ width="20" />
</panel>
</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 1e7acb566f..141678f7eb 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -34,7 +34,14 @@
name="background"
tool_tip="Choose color for bubble chat"
top_delta="1"
- width="44" />
+ 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"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 597b6410cd..2b907ed251 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -247,6 +247,7 @@
<name_box
follows="left|top"
height="10"
+ initial_value="(retrieving)"
layout="topleft"
left="0"
link="true"
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index bfca2f2e46..7a6089c74e 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -53,7 +53,7 @@
label_shadow="false"
name="buycurrency"
tool_tip="My Balance"
- top="5"
+ top="3"
width="100" />
<button
auto_resize="true"
@@ -71,7 +71,7 @@
name="buyL"
pad_right="20px"
tool_tip="Click to buy more L$"
- top="5"
+ top="2"
width="100" />
<text
type="string"
@@ -80,7 +80,7 @@
follows="right|bottom"
halign="right"
height="16"
- top="7"
+ top="5"
layout="topleft"
left_pad="0"
name="TimeText"
@@ -96,7 +96,7 @@
image_unselected="Audio_Off"
is_toggle="true"
left_pad="18"
- top="4"
+ top="2"
name="volume_btn"
tool_tip="Global Volume Control"
width="16" />
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 02dc507781..b378944e48 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2170,7 +2170,7 @@ this texture in your inventory
Unknown file extension .%s
Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
</string>
- <string name="MuteObject">Block</string>
+ <string name="MuteObject2">Block</string>
<string name="MuteAvatar">Block</string>
<string name="UnmuteObject">Unblock</string>
<string name="UnmuteAvatar">Unblock</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
index 2bec5b8a29..e5cad0df2e 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<chiclet_im_adhoc
- height="25"
+ height="23"
name="im_adhoc_chiclet"
show_speaker="false"
width="25">
<chiclet_im_adhoc.chiclet_button
- height="25"
+ height="23"
image_selected="PushButton_Selected"
image_unselected="PushButton_Off"
name="chiclet_button"
@@ -14,27 +14,27 @@
<chiclet_im_adhoc.speaker
auto_update="true"
draw_border="false"
- height="25"
+ height="23"
left="25"
name="speaker"
visible="false"
width="20" />
<chiclet_im_adhoc.avatar_icon
- bottom="3"
+ bottom="2"
follows="left|top|bottom"
height="19"
left="3"
mouse_opaque="true"
name="adhoc_icon"
- width="19" />
+ width="18" />
<chiclet_im_adhoc.unread_notifications
- font_halign="center"
- height="25"
+ halign="center"
+ height="23"
left="25"
mouse_opaque="false"
name="unread"
text_color="white"
- v_pad="5"
+ v_pad="3"
visible="false"
width="20" />
<chiclet_im_adhoc.new_message_icon
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
index 1d7f3208af..70e4ea8d26 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<chiclet_im_group
- height="25"
+ height="23"
name="im_group_chiclet"
show_speaker="false"
width="25">
<chiclet_im_group.chiclet_button
- height="25"
+ height="23"
image_selected="PushButton_Selected"
image_unselected="PushButton_Off"
name="chiclet_button"
@@ -14,28 +14,28 @@
<chiclet_im_group.speaker
auto_update="true"
draw_border="false"
- height="25"
+ height="23"
left="25"
name="speaker"
visible="false"
width="20" />
<chiclet_im_group.group_icon
- bottom="3"
+ bottom="2"
default_icon="Generic_Group"
follows="left|top|bottom"
- height="19"
+ height="18"
left="3"
mouse_opaque="false"
name="group_icon"
width="19" />
<chiclet_im_group.unread_notifications
- height="25"
- font_halign="center"
+ height="23"
+ halign="center"
left="25"
mouse_opaque="false"
name="unread"
text_color="white"
- v_pad="5"
+ v_pad="3"
visible="false"
width="20"/>
<chiclet_im_group.new_message_icon
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
index e6289f7cef..ec6500cf80 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<chiclet_im_p2p
- height="25"
+ height="23"
name="im_p2p_chiclet"
show_speaker="false"
width="25">
<chiclet_im_p2p.chiclet_button
- height="25"
+ height="23"
image_selected="PushButton_Selected"
image_unselected="PushButton_Off"
name="chiclet_button"
@@ -14,27 +14,27 @@
<chiclet_im_p2p.speaker
auto_update="true"
draw_border="false"
- height="25"
+ height="23"
left="25"
name="speaker"
visible="false"
width="20"/>
<chiclet_im_p2p.avatar_icon
- bottom="3"
+ bottom="2"
follows="left|top|bottom"
- height="19"
+ height="18"
left="3"
mouse_opaque="false"
name="avatar_icon"
width="19" />
<chiclet_im_p2p.unread_notifications
- height="25"
- font_halign="center"
+ height="23"
+ halign="center"
left="25"
mouse_opaque="false"
name="unread"
text_color="white"
- v_pad="5"
+ v_pad="3"
visible="false"
width="20"/>
<chiclet_im_p2p.new_message_icon
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
index 138b50c968..1bf9bc9e71 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<chiclet_offer
- height="25"
+ height="23"
name="offer_chiclet"
width="25">
<chiclet_offer.chiclet_button
- height="25"
+ height="23"
image_selected="PushButton_Selected"
image_unselected="PushButton_Off"
name="chiclet_button"
tab_stop="false"
width="25"/>
<chiclet_offer.icon
- bottom="3"
+ bottom="2"
default_icon="Generic_Object_Small"
follows="all"
- height="19"
+ height="18"
left="3"
mouse_opaque="false"
name="chiclet_icon"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
index ecf149dc76..38d9904d13 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<chiclet_script
- height="25"
+ height="23"
name="script_chiclet"
width="25">
<chiclet_script.chiclet_button
- height="25"
+ height="23"
image_selected="PushButton_Selected"
image_unselected="PushButton_Off"
name="chiclet_button"
tab_stop="false"
width="25"/>
<chiclet_script.icon
- bottom="3"
+ bottom="2"
follows="all"
- height="19"
+ height="18"
image_name="Generic_Object_Small"
left="3"
mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
index 4520768216..63166f32b7 100644
--- a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
+++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
@@ -15,4 +15,6 @@
background_visible="true"
heading_height="23"
draw_border="false"
- draw_heading="false" />
+ draw_heading="false"
+ border.name="dig border"
+ border.bevel_style="in" />
diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg
index a5a99d79f0..c50ae4ad80 100644
--- a/scripts/messages/message_template.msg
+++ b/scripts/messages/message_template.msg
@@ -53,7 +53,7 @@ version 2.0
// OpenCircuit - Tells the recipient's messaging system to open the descibed circuit
{
- OpenCircuit Fixed 0xFFFFFFFC NotTrusted Unencoded
+ OpenCircuit Fixed 0xFFFFFFFC NotTrusted Unencoded UDPBlackListed
{
CircuitInfo Single
{ IP IPADDR }