summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/linux_crash_logger/CMakeLists.txt11
-rw-r--r--indra/linux_updater/CMakeLists.txt11
-rw-r--r--indra/llui/llfloater.cpp39
-rw-r--r--indra/llui/llfloater.h1
-rw-r--r--indra/newview/CMakeLists.txt13
-rw-r--r--indra/newview/app_settings/settings.xml22
-rw-r--r--indra/newview/llagentwearables.cpp1
-rw-r--r--indra/newview/llcallfloater.h4
-rw-r--r--indra/newview/llchathistory.cpp28
-rw-r--r--indra/newview/llfloaterpreference.cpp29
-rw-r--r--indra/newview/llfloatertools.cpp9
-rw-r--r--indra/newview/llimfloatercontainer.cpp7
-rw-r--r--indra/newview/lllogchat.cpp28
-rw-r--r--indra/newview/llnearbychathandler.cpp2
-rw-r--r--indra/newview/llnotificationhandlerutil.cpp1
-rw-r--r--indra/newview/llpanelnearbymedia.cpp2
-rw-r--r--indra/newview/llpanelobjectinventory.cpp2
-rw-r--r--indra/newview/llscreenchannel.cpp25
-rw-r--r--indra/newview/llsidetray.cpp5
-rw-r--r--indra/newview/llstartup.cpp4
-rw-r--r--indra/newview/lltexlayer.cpp4
-rw-r--r--indra/newview/lltoast.cpp159
-rw-r--r--indra/newview/lltoast.h26
-rw-r--r--indra/newview/skins/default/xui/en/floater_event.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_preferences.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_widgets.xml5
-rw-r--r--indra/newview/skins/default/xui/en/floater_tools.xml3
-rw-r--r--indra/newview/skins/default/xui/en/inspect_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml12
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_media.xml72
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_privacy.xml37
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_sound.xml394
-rw-r--r--indra/newview/skins/default/xui/en/panel_toast.xml34
-rw-r--r--indra/newview/skins/default/xui/en/widgets/button.xml1
-rw-r--r--indra/newview/skins/default/xui/en/widgets/combo_box.xml1
-rw-r--r--indra/newview/skins/default/xui/en/widgets/flyout_button.xml2
-rwxr-xr-xindra/newview/viewer_manifest.py29
37 files changed, 548 insertions, 481 deletions
diff --git a/indra/linux_crash_logger/CMakeLists.txt b/indra/linux_crash_logger/CMakeLists.txt
index 4b19e28066..ab62a0d0af 100644
--- a/indra/linux_crash_logger/CMakeLists.txt
+++ b/indra/linux_crash_logger/CMakeLists.txt
@@ -54,12 +54,5 @@ target_link_libraries(linux-crash-logger
${DB_LIBRARIES}
)
-add_custom_command(
- OUTPUT linux-crash-logger-stripped
- COMMAND strip
- ARGS --strip-debug -o linux-crash-logger-stripped linux-crash-logger
- DEPENDS linux-crash-logger
- )
-
-add_custom_target(linux-crash-logger-strip-target ALL
- DEPENDS linux-crash-logger-stripped)
+add_custom_target(linux-crash-logger-target ALL
+ DEPENDS linux-crash-logger)
diff --git a/indra/linux_updater/CMakeLists.txt b/indra/linux_updater/CMakeLists.txt
index 9fe32ecb46..00a78b2a8f 100644
--- a/indra/linux_updater/CMakeLists.txt
+++ b/indra/linux_updater/CMakeLists.txt
@@ -47,12 +47,5 @@ target_link_libraries(linux-updater
${LLCOMMON_LIBRARIES}
)
-add_custom_command(
- OUTPUT linux-updater-stripped
- COMMAND strip
- ARGS --strip-debug -o linux-updater-stripped linux-updater
- DEPENDS linux-updater
- )
-
-add_custom_target(linux-updater-strip-target ALL
- DEPENDS linux-updater-stripped)
+add_custom_target(linux-updater-target ALL
+ DEPENDS linux-updater)
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index a55915af35..0199fe3f57 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -1565,25 +1565,13 @@ void LLFloater::draw()
// draw background
if( isBackgroundVisible() )
{
+ drawShadow(this);
+
S32 left = LLPANEL_BORDER_WIDTH;
S32 top = getRect().getHeight() - LLPANEL_BORDER_WIDTH;
S32 right = getRect().getWidth() - LLPANEL_BORDER_WIDTH;
S32 bottom = LLPANEL_BORDER_WIDTH;
- static LLUICachedControl<S32> shadow_offset_S32 ("DropShadowFloater", 0);
- static LLUIColor shadow_color_cached = LLUIColorTable::instance().getColor("ColorDropShadow");
- LLColor4 shadow_color = shadow_color_cached;
- F32 shadow_offset = (F32)shadow_offset_S32;
-
- if (!isBackgroundOpaque())
- {
- shadow_offset *= 0.2f;
- shadow_color.mV[VALPHA] *= 0.5f;
- }
- gl_drop_shadow(left, top, right, bottom,
- shadow_color % alpha,
- llround(shadow_offset));
-
LLUIImage* image = NULL;
LLColor4 color;
if (isBackgroundOpaque())
@@ -1666,6 +1654,29 @@ void LLFloater::draw()
}
}
+void LLFloater::drawShadow(LLPanel* panel)
+{
+ F32 alpha = panel->getDrawContext().mAlpha;
+ S32 left = LLPANEL_BORDER_WIDTH;
+ S32 top = panel->getRect().getHeight() - LLPANEL_BORDER_WIDTH;
+ S32 right = panel->getRect().getWidth() - LLPANEL_BORDER_WIDTH;
+ S32 bottom = LLPANEL_BORDER_WIDTH;
+
+ static LLUICachedControl<S32> shadow_offset_S32 ("DropShadowFloater", 0);
+ static LLUIColor shadow_color_cached = LLUIColorTable::instance().getColor("ColorDropShadow");
+ LLColor4 shadow_color = shadow_color_cached;
+ F32 shadow_offset = (F32)shadow_offset_S32;
+
+ if (!panel->isBackgroundOpaque())
+ {
+ shadow_offset *= 0.2f;
+ shadow_color.mV[VALPHA] *= 0.5f;
+ }
+ gl_drop_shadow(left, top, right, bottom,
+ shadow_color % alpha,
+ llround(shadow_offset));
+}
+
void LLFloater::setCanMinimize(BOOL can_minimize)
{
// if removing minimize/restore button programmatically,
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 2166d8db8a..19e8288807 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -222,6 +222,7 @@ public:
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 mask);
virtual void draw();
+ virtual void drawShadow(LLPanel* panel);
virtual void onOpen(const LLSD& key) {}
virtual void onClose(bool app_quitting) {}
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 6634fe5379..14eb75e457 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1624,13 +1624,6 @@ set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH
if (LINUX)
- add_custom_command(
- OUTPUT secondlife-stripped
- COMMAND strip
- ARGS --strip-debug -o secondlife-stripped ${VIEWER_BINARY_NAME}
- DEPENDS ${VIEWER_BINARY_NAME}
- )
-
set(product SecondLife-${ARCH}-${viewer_VERSION})
add_custom_command(
@@ -1650,15 +1643,15 @@ if (LINUX)
--login_channel=${VIEWER_LOGIN_CHANNEL}
--source=${CMAKE_CURRENT_SOURCE_DIR}
--touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched
- DEPENDS secondlife-stripped ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
+ DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
)
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_gstreamer010 media_plugin_webkit)
if (NOT INSTALL)
add_custom_target(package ALL DEPENDS ${product}.tar.bz2)
- add_dependencies(package linux-crash-logger-strip-target)
- add_dependencies(package linux-updater-strip-target)
+ add_dependencies(package linux-crash-logger-target)
+ add_dependencies(package linux-updater-target)
check_message_template(package)
endif (NOT INSTALL)
endif (LINUX)
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 000c63d22c..1a8a6ee23d 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4,13 +4,13 @@
<key>AFKTimeout</key>
<map>
<key>Comment</key>
- <string>Time before automatically setting AFK (away from keyboard) mode (seconds)</string>
+ <string>Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
- <real>300.0</real>
+ <real>0</real>
</map>
<key>AdvanceSnapshot</key>
<map>
@@ -197,7 +197,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>1.0</real>
+ <real>0.5</real>
</map>
<key>AudioLevelMic</key>
<map>
@@ -219,7 +219,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>1.0</real>
+ <real>0.5</real>
</map>
<key>AudioLevelRolloff</key>
<map>
@@ -241,7 +241,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>1.0</real>
+ <real>0.5</real>
</map>
<key>AudioLevelUI</key>
<map>
@@ -4328,13 +4328,13 @@
<key>LoginLocation</key>
<map>
<key>Comment</key>
- <string>Login at same location you last logged out</string>
+ <string>Login location ('last', 'home')</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>last</string>
+ <string>home</string>
</map>
<key>LoginPage</key>
<map>
@@ -4598,7 +4598,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>MediaShowWithinParcel</key>
<map>
@@ -5360,7 +5360,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>PerAccountSettingsFile</key>
<map>
@@ -5554,7 +5554,7 @@
<key>PreferredMaturity</key>
<map>
<key>Comment</key>
- <string>Setting for the user's preferred maturity level.</string>
+ <string>Setting for the user's preferred maturity level (consts in indra_constants.h)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -10114,7 +10114,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>UseFreezeFrame</key>
<map>
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 401e8d25c5..a955696447 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1677,6 +1677,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
if (mAvatarObject)
{
mAvatarObject->updateVisualParams();
+ mAvatarObject->invalidateAll();
}
// Start rendering & update the server
diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h
index dac4390fa7..0a8ea7de39 100644
--- a/indra/newview/llcallfloater.h
+++ b/indra/newview/llcallfloater.h
@@ -260,6 +260,10 @@ private:
* @see sOnCurrentChannelChanged()
*/
static LLVoiceChannel* sCurrentVoiceCanel;
+
+ /* virtual */
+ LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::IM; }
+
boost::signals2::connection mVoiceChannelStateChangeConnection;
};
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 81cc52528c..cf5ac6b2e6 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -122,7 +122,7 @@ public:
BOOL handleToolTip(S32 x, S32 y, MASK mask)
{
LLTextBase* name = getChild<LLTextBase>("user_name");
- if (name && name->parentPointInView(x, y) && mAvatarID.notNull() && SYSTEM_FROM != mFrom)
+ if (name && name->parentPointInView(x, y) && mAvatarID.notNull() && mFrom.size() && SYSTEM_FROM != mFrom)
{
// Spawn at right side of the name textbox.
@@ -179,12 +179,7 @@ public:
}
else if (level == "add")
{
- std::string name;
- name.assign(getFirstName());
- name.append(" ");
- name.append(getLastName());
-
- LLAvatarActions::requestFriendshipDialog(getAvatarId(), name);
+ LLAvatarActions::requestFriendshipDialog(getAvatarId(), mFrom);
}
else if (level == "remove")
{
@@ -253,8 +248,6 @@ public:
}
const LLUUID& getAvatarId () const { return mAvatarID;}
- const std::string& getFirstName() const { return mFirstName; }
- const std::string& getLastName () const { return mLastName; }
void setup(const LLChat& chat,const LLStyle::Params& style_params)
{
@@ -264,7 +257,7 @@ public:
gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4));
//*TODO overly defensive thing, source type should be maintained out there
- if(chat.mFromID.isNull() || chat.mFromName == SYSTEM_FROM)
+ if((chat.mFromID.isNull() && chat.mFromName.empty()) || chat.mFromName == SYSTEM_FROM)
{
mSourceType = CHAT_SOURCE_SYSTEM;
}
@@ -275,9 +268,11 @@ public:
userName->setColor(style_params.color());
userName->setValue(chat.mFromName);
+ mFrom = chat.mFromName;
if (chat.mFromName.empty() || CHAT_SOURCE_SYSTEM == mSourceType)
{
- userName->setValue(LLTrans::getString("SECOND_LIFE"));
+ mFrom = LLTrans::getString("SECOND_LIFE");
+ userName->setValue(mFrom);
}
@@ -337,8 +332,7 @@ public:
{
if (id != mAvatarID)
return;
- mFirstName = first;
- mLastName = last;
+ mFrom = first + " " + last;
}
protected:
static const S32 PADDING = 20;
@@ -423,8 +417,6 @@ protected:
LLUUID mAvatarID;
EChatSourceType mSourceType;
- std::string mFirstName;
- std::string mLastName;
std::string mFrom;
LLUUID mSessionID;
@@ -796,6 +788,12 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
}
}
+ if (irc_me && !use_plain_text_chat_history)
+ {
+ message = chat.mFromName + message;
+ }
+
+
mEditor->appendText(message, FALSE, style_params);
}
mEditor->blockUndo();
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index f20ef76bed..0b7e3fee30 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -321,9 +321,6 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
mCommitCallbackRegistrar.add("Pref.VertexShaderEnable", boost::bind(&LLFloaterPreference::onVertexShaderEnable, this));
mCommitCallbackRegistrar.add("Pref.WindowedMod", boost::bind(&LLFloaterPreference::onCommitWindowedMode, this));
mCommitCallbackRegistrar.add("Pref.UpdateSliderText", boost::bind(&LLFloaterPreference::onUpdateSliderText,this, _1,_2));
- mCommitCallbackRegistrar.add("Pref.ParcelMediaAutoPlayEnable", boost::bind(&LLFloaterPreference::onCommitParcelMediaAutoPlayEnable, this));
- mCommitCallbackRegistrar.add("Pref.MediaEnabled", boost::bind(&LLFloaterPreference::onCommitMediaEnabled, this));
- mCommitCallbackRegistrar.add("Pref.MusicEnabled", boost::bind(&LLFloaterPreference::onCommitMusicEnabled, this));
mCommitCallbackRegistrar.add("Pref.QualityPerformance", boost::bind(&LLFloaterPreference::onChangeQuality, this, _2));
mCommitCallbackRegistrar.add("Pref.applyUIColor", boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2));
mCommitCallbackRegistrar.add("Pref.getUIColor", boost::bind(&LLFloaterPreference::getUIColor, this ,_1, _2));
@@ -514,7 +511,8 @@ void LLFloaterPreference::onOpen(const LLSD& key)
// if we have no agent, we can't let them choose anything
// if we have an agent, then we only let them choose if they have a choice
bool can_choose_maturity =
- gAgent.getID().notNull() && (gAgent.isMature() || gAgent.isGodlike());
+ gAgent.getID().notNull() &&
+ (gAgent.isMature() || gAgent.isGodlike());
LLComboBox* maturity_combo = getChild<LLComboBox>("maturity_desired_combobox");
@@ -957,29 +955,6 @@ void LLFloaterPreference::disableUnavailableSettings()
}
}
-void LLFloaterPreference::onCommitParcelMediaAutoPlayEnable()
-{
- BOOL autoplay = getChild<LLCheckBoxCtrl>("autoplay_enabled")->get();
-
- gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, autoplay);
-
- lldebugs << "autoplay now = " << int(autoplay) << llendl;
-}
-
-void LLFloaterPreference::onCommitMediaEnabled()
-{
- LLCheckBoxCtrl *media_enabled_ctrl = getChild<LLCheckBoxCtrl>("media_enabled");
- bool enabled = media_enabled_ctrl->get();
- gSavedSettings.setBOOL("AudioStreamingMedia", enabled);
-}
-
-void LLFloaterPreference::onCommitMusicEnabled()
-{
- LLCheckBoxCtrl *music_enabled_ctrl = getChild<LLCheckBoxCtrl>("music_enabled");
- bool enabled = music_enabled_ctrl->get();
- gSavedSettings.setBOOL("AudioStreamingMusic", enabled);
-}
-
void LLFloaterPreference::refresh()
{
LLPanel::refresh();
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index f9bd5ada15..7c42a581ff 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -1550,7 +1550,9 @@ void LLFloaterTools::updateMediaSettings()
// Auto scale
- value_bool = default_media_data.getAutoScale();
+ // set default to auto scale TRUE -- angela EXT-5172
+ //value_bool = default_media_data.getAutoScale();
+ value_bool = true;
struct functor_getter_auto_scale : public LLSelectedTEGetFunctor< bool >
{
functor_getter_auto_scale(const LLMediaEntry& entry): mMediaEntry(entry) {}
@@ -1561,8 +1563,9 @@ void LLFloaterTools::updateMediaSettings()
if ( object->getTE(face) )
if ( object->getTE(face)->getMediaData() )
return object->getTE(face)->getMediaData()->getAutoScale();
- return mMediaEntry.getAutoScale();;
- };
+ // return mMediaEntry.getAutoScale(); set default to auto scale TRUE -- angela EXT-5172
+ return true;
+ };
const LLMediaEntry &mMediaEntry;
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 2f248f3596..db7998fe6e 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -39,6 +39,7 @@
#include "llavatariconctrl.h"
#include "llgroupiconctrl.h"
#include "llagent.h"
+#include "lltransientfloatermgr.h"
//
// LLIMFloaterContainer
@@ -47,9 +48,13 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed)
: LLMultiFloater(seed)
{
mAutoResize = FALSE;
+ LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::IM, this);
}
-LLIMFloaterContainer::~LLIMFloaterContainer(){}
+LLIMFloaterContainer::~LLIMFloaterContainer()
+{
+ LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this);
+}
BOOL LLIMFloaterContainer::postBuild()
{
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index 96ce01c05f..f13445fa5d 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -69,6 +69,8 @@ const static std::string MULTI_LINE_PREFIX(" ");
* Katar Ivercourt is Offline
* [3:00] Katar Ivercourt is Offline
* [2009/11/20 3:01] Corba ProductEngine is Offline
+ *
+ * Note: "You" was used as an avatar names in viewers of previous versions
*/
const static boost::regex TIMESTAMP_AND_STUFF("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\\d{2}\\]\\s+|\\[\\d{1,2}:\\d{2}\\]\\s+)?(.*)$");
@@ -78,6 +80,9 @@ const static boost::regex TIMESTAMP_AND_STUFF("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+
*/
const static boost::regex NAME_AND_TEXT("(You:|Second Life:|[^\\s:]+\\s*[:]{1}|\\S+\\s+[^\\s:]+[:]{1})?(\\s*)(.*)");
+//is used to parse complex object names like "Xstreet SL Terminal v2.2.5 st"
+const static std::string NAME_TEXT_DIVIDER(": ");
+
const static int IDX_TIMESTAMP = 1;
const static int IDX_STUFF = 2;
const static int IDX_NAME = 1;
@@ -160,10 +165,19 @@ void LLLogChat::saveHistory(const std::string& filename,
if (gSavedPerAccountSettings.getBOOL("LogTimestamp"))
item["time"] = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate"));
- item["from"] = from;
item["from_id"] = from_id;
item["message"] = line;
+ //adding "Second Life:" for all system messages to make chat log history parsing more reliable
+ if (from.empty() && from_id.isNull())
+ {
+ item["from"] = SYSTEM_FROM;
+ }
+ else
+ {
+ item["from"] = from;
+ }
+
file << LLChatLogFormatter(item) << std::endl;
file.close();
@@ -398,6 +412,18 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im)
im[IM_FROM_ID] = LLUUID::null;
}
+ //possibly a case of complex object names consisting of 3+ words
+ if (!has_name)
+ {
+ U32 divider_pos = stuff.find(NAME_TEXT_DIVIDER);
+ if (divider_pos != std::string::npos && divider_pos < (stuff.length() - NAME_TEXT_DIVIDER.length()))
+ {
+ im[IM_FROM] = stuff.substr(0, divider_pos);
+ im[IM_TEXT] = stuff.substr(divider_pos + NAME_TEXT_DIVIDER.length());
+ return true;
+ }
+ }
+
if (!has_name)
{
//text is mandatory
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index 29e3c66684..3c390c0281 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -282,7 +282,7 @@ void LLNearbyChatScreenChannel::showToastsBottom()
gFloaterView->sendChildToBack(toast);
}
- bottom = toast->getRect().mTop;
+ bottom = toast->getRect().mTop - toast->getTopPad();
}
}
}
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index b8e0892b02..35569cffac 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -220,6 +220,7 @@ void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChat
{
LLChat chat_msg(notification->getMessage());
chat_msg.mSourceType = type;
+ chat_msg.mFromName = SYSTEM_FROM;
nearby_chat->addMessage(chat_msg);
}
}
diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
index 6a88c916d7..d38dd0f870 100644
--- a/indra/newview/llpanelnearbymedia.cpp
+++ b/indra/newview/llpanelnearbymedia.cpp
@@ -614,6 +614,8 @@ void LLPanelNearByMedia::refreshList()
// Clear all items so the list gets regenerated.
mMediaList->deleteAllItems();
+ mParcelAudioItem = NULL;
+ mParcelMediaItem = NULL;
all_items_deleted = true;
updateColumns();
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index e8ae006968..d888f8d566 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -1568,7 +1568,7 @@ void LLPanelObjectInventory::reset()
{
clearContents();
- setBorderVisible(FALSE);
+ //setBorderVisible(FALSE);
mCommitCallbackRegistrar.pushScope(); // push local callbacks
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index 7c2e7e3319..c75d90be6f 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -79,17 +79,12 @@ LLScreenChannelBase::~LLScreenChannelBase()
bool LLScreenChannelBase::isHovering()
{
- bool res = mHoveredToast != NULL;
- if (!res)
+ if (!mHoveredToast)
{
- return res;
+ return false;
}
- S32 x, y;
- mHoveredToast->screenPointToLocal(gViewerWindow->getCurrentMouseX(),
- gViewerWindow->getCurrentMouseY(), &x, &y);
- res = mHoveredToast->pointInView(x, y) == TRUE;
- return res;
+ return mHoveredToast->isHovered();
}
void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
@@ -479,7 +474,8 @@ void LLScreenChannel::showToastsBottom()
{
if(it != mToastList.rbegin())
{
- bottom = (*(it-1)).toast->getRect().mTop;
+ LLToast* toast = (*(it-1)).toast;
+ bottom = toast->getRect().mTop - toast->getTopPad();
toast_margin = gSavedSettings.getS32("ToastGap");
}
@@ -777,23 +773,16 @@ void LLScreenChannel::onToastHover(LLToast* toast, bool mouse_enter)
{
// because of LLViewerWindow::updateUI() that NOT ALWAYS calls onMouseEnter BEFORE onMouseLeave
// we must check hovering directly to prevent incorrect setting for hovering in a channel
- S32 x,y;
if (mouse_enter)
{
- toast->screenPointToLocal(gViewerWindow->getCurrentMouseX(),
- gViewerWindow->getCurrentMouseY(), &x, &y);
- bool hover = toast->pointInView(x, y) == TRUE;
- if (hover)
+ if (toast->isHovered())
{
mHoveredToast = toast;
}
}
else if (mHoveredToast != NULL)
{
- mHoveredToast->screenPointToLocal(gViewerWindow->getCurrentMouseX(),
- gViewerWindow->getCurrentMouseY(), &x, &y);
- bool hover = mHoveredToast->pointInView(x, y) == TRUE;
- if (!hover)
+ if (!mHoveredToast->isHovered())
{
mHoveredToast = NULL;
}
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index 50c47e293e..fba1503b4a 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -248,6 +248,11 @@ LLSideTray::LLSideTray(Params& params)
// panel_name should be specified via "parameter" attribute.
commit.add("SideTray.ShowPanel", boost::bind(&LLSideTray::showPanel, this, _2, LLUUID::null));
LLTransientFloaterMgr::getInstance()->addControlView(this);
+ LLView* side_bar_tabs = gViewerWindow->getRootView()->getChildView("side_bar_tabs");
+ if (side_bar_tabs != NULL)
+ {
+ LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
+ }
LLPanel::Params p;
p.name = "buttons_panel";
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 136989166f..fa07278cb9 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -2899,7 +2899,9 @@ bool process_login_success_response()
text = response["agent_region_access"].asString();
if (!text.empty())
{
- int preferredMaturity = LLAgent::convertTextToMaturity(text[0]);
+ U32 preferredMaturity =
+ llmin((U32)LLAgent::convertTextToMaturity(text[0]),
+ gSavedSettings.getU32("PreferredMaturity"));
gSavedSettings.setU32("PreferredMaturity", preferredMaturity);
}
// During the AO transition, this flag will be true. Then the flag will
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index ddb6405c41..662e6dcabe 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -167,8 +167,8 @@ void LLTexLayerSetBuffer::popProjection() const
BOOL LLTexLayerSetBuffer::needsRender()
{
const LLVOAvatarSelf* avatar = mTexLayerSet->getAvatar();
- BOOL upload_now = mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal();
- BOOL needs_update = gAgentQueryManager.hasNoPendingQueries() && (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating;
+ BOOL upload_now = mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal() && gAgentQueryManager.hasNoPendingQueries();
+ BOOL needs_update = (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating;
if (needs_update)
{
BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == LLVOAvatarDefines::TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT);
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index 110d158e2d..60a89c02e4 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -68,12 +68,17 @@ LLToast::LLToast(const LLToast::Params& p)
mNotification(p.notification),
mIsHidden(false),
mHideBtnPressed(false),
- mIsTip(p.is_tip)
+ mIsTip(p.is_tip),
+ mWrapperPanel(NULL)
{
LLUICtrlFactory::getInstance()->buildFloater(this, "panel_toast.xml", NULL);
setCanDrag(FALSE);
+ mWrapperPanel = getChild<LLPanel>("wrapper_panel");
+ mWrapperPanel->setMouseEnterCallback(boost::bind(&LLToast::onToastMouseEnter, this));
+ mWrapperPanel->setMouseLeaveCallback(boost::bind(&LLToast::onToastMouseLeave, this));
+
if(mPanel)
{
insertPanel(mPanel);
@@ -83,6 +88,8 @@ LLToast::LLToast(const LLToast::Params& p)
{
mHideBtn = getChild<LLButton>("hide_btn");
mHideBtn->setClickedCallback(boost::bind(&LLToast::hide,this));
+ mHideBtn->setMouseEnterCallback(boost::bind(&LLToast::onToastMouseEnter, this));
+ mHideBtn->setMouseLeaveCallback(boost::bind(&LLToast::onToastMouseLeave, this));
}
// init callbacks if present
@@ -174,6 +181,42 @@ void LLToast::hide()
mOnFadeSignal(this);
}
+void LLToast::onFocusLost()
+{
+ if(mWrapperPanel && !isBackgroundVisible())
+ {
+ // Lets make wrapper panel behave like a floater
+ setBackgroundOpaque(FALSE);
+ }
+}
+
+void LLToast::onFocusReceived()
+{
+ if(mWrapperPanel && !isBackgroundVisible())
+ {
+ // Lets make wrapper panel behave like a floater
+ setBackgroundOpaque(TRUE);
+ }
+}
+
+S32 LLToast::getTopPad()
+{
+ if(mWrapperPanel)
+ {
+ return getRect().getHeight() - mWrapperPanel->getRect().getHeight();
+ }
+ return 0;
+}
+
+S32 LLToast::getRightPad()
+{
+ if(mWrapperPanel)
+ {
+ return getRect().getWidth() - mWrapperPanel->getRect().getWidth();
+ }
+ return 0;
+}
+
//--------------------------------------------------------------------------
void LLToast::setCanFade(bool can_fade)
{
@@ -199,22 +242,21 @@ void LLToast::reshapeToPanel()
if(!panel)
return;
- LLRect panel_rect;
+ LLRect panel_rect = panel->getRect();
- panel_rect = panel->getRect();
- reshape(panel_rect.getWidth(), panel_rect.getHeight());
panel_rect.setLeftTopAndSize(0, panel_rect.getHeight(), panel_rect.getWidth(), panel_rect.getHeight());
- panel->setRect(panel_rect);
+ panel->setShape(panel_rect);
LLRect toast_rect = getRect();
- toast_rect.setLeftTopAndSize(toast_rect.mLeft,toast_rect.mTop,panel_rect.getWidth(), panel_rect.getHeight());
- setRect(toast_rect);
+ toast_rect.setLeftTopAndSize(toast_rect.mLeft, toast_rect.mTop,
+ panel_rect.getWidth() + getRightPad(), panel_rect.getHeight() + getTopPad());
+ setShape(toast_rect);
}
void LLToast::insertPanel(LLPanel* panel)
{
- addChild(panel);
+ mWrapperPanel->addChild(panel);
reshapeToPanel();
}
@@ -227,6 +269,19 @@ void LLToast::draw()
}
LLFloater::draw();
+
+ if(!isBackgroundVisible())
+ {
+ // Floater background is invisible, lets make wrapper panel look like a
+ // floater - draw shadow.
+ drawShadow(mWrapperPanel);
+
+ // Shadow will probably overlap close button, lets redraw the button
+ if(mHideBtn)
+ {
+ drawChild(mHideBtn);
+ }
+ }
}
//--------------------------------------------------------------------------
@@ -261,43 +316,78 @@ void LLToast::setVisible(BOOL show)
}
}
-//--------------------------------------------------------------------------
-void LLToast::onMouseEnter(S32 x, S32 y, MASK mask)
+void LLToast::onToastMouseEnter()
{
- mOnToastHoverSignal(this, MOUSE_ENTER);
+ LLRect panel_rc = mWrapperPanel->calcScreenRect();
+ LLRect button_rc;
+ if(mHideBtn)
+ {
+ button_rc = mHideBtn->calcScreenRect();
+ }
- setBackgroundOpaque(TRUE);
+ S32 x, y;
+ LLUI::getMousePositionScreen(&x, &y);
- //toasts fading is management by Screen Channel
-
- sendChildToFront(mHideBtn);
- if(mHideBtn && mHideBtn->getEnabled())
- mHideBtn->setVisible(TRUE);
- mOnMouseEnterSignal(this);
+ if(panel_rc.pointInRect(x, y) || button_rc.pointInRect(x, y))
+ {
+ mOnToastHoverSignal(this, MOUSE_ENTER);
+
+ setBackgroundOpaque(TRUE);
+
+ //toasts fading is management by Screen Channel
- LLModalDialog::onMouseEnter(x, y, mask);
+ sendChildToFront(mHideBtn);
+ if(mHideBtn && mHideBtn->getEnabled())
+ {
+ mHideBtn->setVisible(TRUE);
+ }
+ mOnMouseEnterSignal(this);
+ mToastMouseEnterSignal(this, getValue());
+ }
}
-//--------------------------------------------------------------------------
-void LLToast::onMouseLeave(S32 x, S32 y, MASK mask)
-{
- mOnToastHoverSignal(this, MOUSE_LEAVE);
+void LLToast::onToastMouseLeave()
+{
+ LLRect panel_rc = mWrapperPanel->calcScreenRect();
+ LLRect button_rc;
+ if(mHideBtn)
+ {
+ button_rc = mHideBtn->calcScreenRect();
+ }
- //toasts fading is management by Screen Channel
+ S32 x, y;
+ LLUI::getMousePositionScreen(&x, &y);
- if(mHideBtn && mHideBtn->getEnabled())
+ if( !panel_rc.pointInRect(x, y) && !button_rc.pointInRect(x, y))
{
- if( mHideBtnPressed )
+ mOnToastHoverSignal(this, MOUSE_LEAVE);
+
+ //toasts fading is management by Screen Channel
+
+ if(mHideBtn && mHideBtn->getEnabled())
{
- mHideBtnPressed = false;
- return;
+ if( mHideBtnPressed )
+ {
+ mHideBtnPressed = false;
+ return;
+ }
+ mHideBtn->setVisible(FALSE);
}
- mHideBtn->setVisible(FALSE);
+ mToastMouseLeaveSignal(this, getValue());
}
-
- LLModalDialog::onMouseLeave(x, y, mask);
}
+void LLToast::setBackgroundOpaque(BOOL b)
+{
+ if(mWrapperPanel && !isBackgroundVisible())
+ {
+ mWrapperPanel->setBackgroundOpaque(b);
+ }
+ else
+ {
+ LLModalDialog::setBackgroundOpaque(b);
+ }
+}
void LLNotificationsUI::LLToast::stopFading()
{
@@ -315,6 +405,13 @@ void LLNotificationsUI::LLToast::startFading()
}
}
+bool LLToast::isHovered()
+{
+ S32 x, y;
+ LLUI::getMousePositionScreen(&x, &y);
+ return mWrapperPanel->calcScreenRect().pointInRect(x, y);
+}
+
//--------------------------------------------------------------------------
BOOL LLToast::handleMouseDown(S32 x, S32 y, MASK mask)
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h
index 3d25fd4f02..64855020a9 100644
--- a/indra/newview/lltoast.h
+++ b/indra/newview/lltoast.h
@@ -86,8 +86,6 @@ public:
// Toast handlers
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- virtual void onMouseEnter(S32 x, S32 y, MASK mask);
- virtual void onMouseLeave(S32 x, S32 y, MASK mask);
//Fading
@@ -97,6 +95,7 @@ public:
/** Start fading timer */
virtual void startFading();
+ bool isHovered();
// Operating with toasts
// insert a panel to a toast
@@ -118,10 +117,22 @@ public:
virtual void draw();
//
virtual void setVisible(BOOL show);
+
+ /*virtual*/ void setBackgroundOpaque(BOOL b);
//
virtual void hide();
+ /*virtual*/ void onFocusLost();
+
+ /*virtual*/ void onFocusReceived();
+ /**
+ * Returns padding between floater top and wrapper_panel top.
+ * This padding should be taken into account when positioning or reshaping toasts
+ */
+ S32 getTopPad();
+
+ S32 getRightPad();
// get/set Toast's flags or states
// get information whether the notification corresponding to the toast is valid or not
@@ -154,9 +165,15 @@ public:
toast_hover_check_signal_t mOnToastHoverSignal;
boost::signals2::connection setOnToastHoverCallback(toast_hover_check_callback_t cb) { return mOnToastHoverSignal.connect(cb); }
+ boost::signals2::connection setMouseEnterCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseEnterSignal.connect(cb); };
+ boost::signals2::connection setMouseLeaveCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseLeaveSignal.connect(cb); };
private:
+ void onToastMouseEnter();
+
+ void onToastMouseLeave();
+
void handleTipToastClick(S32 x, S32 y, MASK mask);
// check timer
@@ -168,6 +185,8 @@ private:
LLUUID mSessionID;
LLNotificationPtr mNotification;
+ LLPanel* mWrapperPanel;
+
// timer counts a lifetime of a toast
LLTimer mTimer;
F32 mToastLifetime; // in seconds
@@ -184,6 +203,9 @@ private:
bool mHideBtnPressed;
bool mIsHidden; // this flag is TRUE when a toast has faded or was hidden with (x) button (EXT-1849)
bool mIsTip;
+
+ commit_signal_t mToastMouseEnterSignal;
+ commit_signal_t mToastMouseLeaveSignal;
};
}
diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml
index 9ce0c9c86d..50f0f0454c 100644
--- a/indra/newview/skins/default/xui/en/floater_event.xml
+++ b/indra/newview/skins/default/xui/en/floater_event.xml
@@ -2,9 +2,11 @@
<floater
follows="all"
height="350"
+ help_topic="event_details"
label="Event"
layout="topleft"
name="Event"
+ title="EVENT DETAILS"
width="330">
<floater.string
name="none">
diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml
index 05deca705a..7aa8e23e76 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences.xml
@@ -72,7 +72,7 @@
<panel
class="panel_preference"
filename="panel_preferences_sound.xml"
- label="Sound"
+ label="Sound &amp; Media"
layout="topleft"
help_topic="preferences_audio_tab"
name="audio" />
diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
index 447bd7f599..80cb2723a0 100644
--- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
@@ -88,7 +88,6 @@
<!-- First column -->
<button
- height="20"
follows="top|left"
label="Button"
layout="topleft"
@@ -100,7 +99,6 @@
<!-- "flyout_button" is a button that can spawn a menu -->
<flyout_button
follows="top|left"
- height="20"
label="Flyout"
layout="topleft"
left_delta="0"
@@ -136,7 +134,6 @@
<combo_box
bottom_delta="35"
follows="top|left"
- height="16"
width="150"
label="Combobox"
layout="topleft"
@@ -343,12 +340,10 @@ line to actually fit
<tab_container
follows="all"
height="400"
- halign="center"
layout="topleft"
left="525"
name="group_tab_container"
tab_position="top"
- tab_height="20"
tool_tip="tab container"
top="80"
width="300">
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 23203d227e..d989282b9f 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -2785,6 +2785,9 @@ even though the user gets a free copy.
name="button permissions"
width="130" />
<panel_inventory_object
+ border="true"
+ border_visible="true"
+ bevel_style="in"
follows="left|top"
height="325"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml
index 9796f7b5b6..194ae151d2 100644
--- a/indra/newview/skins/default/xui/en/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml
@@ -123,7 +123,7 @@
<button
follows="top|left"
height="20"
- label="More"
+ label="Profile"
layout="topleft"
name="view_profile_btn"
left_delta="96"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index e11b18ec31..61ff66b407 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -194,18 +194,6 @@
function="SideTray.PanelPeopleTab"
parameter="nearby_panel" />
</menu_item_call>
- <menu_item_check
- label="Nearby Media"
- layout="topleft"
- name="Nearby Media"
- shortcut="control|alt|N">
- <menu_item_check.on_check
- function="Floater.Visible"
- parameter="nearby_media" />
- <menu_item_check.on_click
- function="Floater.Toggle"
- parameter="nearby_media" />
- </menu_item_check>
</menu>
<menu
label="World"
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
index 4a71be370e..acfd63db37 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
@@ -6,7 +6,7 @@
background_visible="true"
layout="topleft"
width="270"
- height="325"
+ height="235"
name="nearby_media"
help_topic="nearby_media">
<string name="media_item_count_format">(%ld media items)</string>
@@ -88,7 +88,7 @@
top_delta="30"
right="-1"
left="0"
- height="295">
+ height="200">
<text
type="string"
length="1"
@@ -149,7 +149,7 @@
<scroll_list
follows="left|top|bottom|right"
column_padding="0"
- height="100"
+ height="105"
draw_heading="false"
draw_stripes="true"
bg_stripe_color="0.25 0.25 0.25 0.25"
@@ -200,7 +200,7 @@
name="media_controls"
follows="left|right|top"
animate="false"
- height="75"
+ height="26"
layout="topleft"
top="4"
left="10"
@@ -408,69 +408,5 @@
user_resize="false" />
</layout_stack>
</panel>
- <panel
- bevel_style="in"
- background_visible="true"
- bg_alpha_color="0.0 0.0 0.0 1.0"
- bg_opaque_color="0 0 0 0.3"
- follows="left|right|bottom"
- top_pad="5"
- height="90"
- left="10"
- right="-10">
- <check_box
- name="media_enabled_btn"
- control_name="AudioStreamingMedia"
- value="true"
- follows="left|bottom|right"
- height="15"
- tool_tip="Check this to enable all media"
- label="All Media Enabled"
- top="10"
- left="10"/>
- <check_box
- name="media_auto_play_btn"
- control_name="ParcelMediaAutoPlayEnable"
- enabled_control="AudioStreamingMedia"
- value="true"
- follows="left|bottom|right"
- height="15"
- tool_tip="Check this to let media auto-play if it wants"
- label="Allow Media to auto-play"
- top_pad="5"
- left="10"/>
- <!--
- <check_box
- name="media_show_within_parcel_btn"
- control_name="MediaShowWithinParcel"
- enabled_control="AudioStreamingMedia"
- value="true"
- follows="left|bottom|right"
- height="15"
- tool_tip="Uncheck this to hide media within the parcel you are standing in"
- label="Show media within current parcel"
- left="10"/>
- -->
- <check_box
- name="media_show_outside_parcel_btn"
- control_name="MediaShowOutsideParcel"
- enabled_control="AudioStreamingMedia"
- value="true"
- follows="left|bottom|right"
- height="15"
- tool_tip="Uncheck this to hide media outside the parcel you are standing in"
- label="Show media outside current parcel"
- left="10"/>
- <check_box
- name="media_show_on_others_btn"
- control_name="MediaShowOnOthers"
- enabled_control="AudioStreamingMedia"
- value="true"
- follows="left|bottom|right"
- height="15"
- tool_tip="Uncheck this to hide media attached to other avatars nearby"
- label="Show media attached to other avatars"
- left="10"/>
- </panel>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index f78d90c434..f232a69482 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -78,43 +78,6 @@
name="cookies_enabled"
top_pad="10"
width="350" />
- <check_box
- name="media_enabled"
- control_name="AudioStreamingMedia"
- height="16"
- label="Media Enabled"
- layout="topleft"
- left="30"
- top_pad="10"
- width="350">
- <check_box.commit_callback
- function="Pref.MediaEnabled" />
- </check_box>
- <check_box
- enabled_control="AudioStreamingMedia"
- control_name="ParcelMediaAutoPlayEnable"
- height="16"
- label="Allow Media to auto-play"
- layout="topleft"
- left="30"
- name="autoplay_enabled"
- top_pad="10"
- width="350">
- <check_box.commit_callback
- function="Pref.ParcelMediaAutoPlayEnable" />
- </check_box>
- <check_box
- control_name="AudioStreamingMusic"
- height="16"
- label="Music Enabled"
- layout="topleft"
- left="30"
- name="music_enabled"
- top_pad="10"
- width="350">
- <check_box.commit_callback
- function="Pref.MusicEnabled" />
- </check_box>
<text
type="string"
length="1"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index ae5e6fbbfa..c371b19fc5 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -17,7 +17,7 @@
increment="0.05"
initial_value="0.5"
label="Master volume"
- label_width="160"
+ label_width="120"
layout="topleft"
left="0"
name="System Volume"
@@ -25,20 +25,20 @@
slider_label.halign="right"
top="10"
volume="true"
- width="350">
+ width="300">
<slider.commit_callback
function="Pref.setControlFalse"
parameter="MuteAudio" />
</slider>
<button
control_name="MuteAudio"
- follows="top|right"
+ follows="top|left"
height="16"
image_selected="AudioMute_Off"
image_unselected="Audio_Off"
is_toggle="true"
layout="topleft"
- left_pad="16"
+ left_pad="5"
name="mute_audio"
tab_stop="false"
width="16" />
@@ -46,12 +46,46 @@
control_name="MuteWhenMinimized"
height="15"
initial_value="true"
- label="Mute if minimized"
+ label="Mute when minimized"
layout="topleft"
- left="167"
name="mute_when_minimized"
- top_pad="5"
+ top_delta="3"
+ left_pad="5"
width="215" />
+ <slider
+ control_name="AudioLevelUI"
+ disabled_control="MuteAudio"
+ follows="left|top"
+ height="15"
+ increment="0.05"
+ initial_value="0.5"
+ label="Buttons"
+ label_width="120"
+ layout="topleft"
+ left="0"
+ name="UI Volume"
+ show_text="false"
+ slider_label.halign="right"
+ top_pad="7"
+ volume="true"
+ width="300">
+ <slider.commit_callback
+ function="Pref.setControlFalse"
+ parameter="MuteUI" />
+ </slider>
+ <button
+ control_name="MuteUI"
+ disabled_control="MuteAudio"
+ follows="top|left"
+ height="16"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
+ is_toggle="true"
+ layout="topleft"
+ left_pad="5"
+ name="mute_audio"
+ tab_stop="false"
+ width="16" />
<slider
control_name="AudioLevelAmbient"
disabled_control="MuteAudio"
@@ -60,7 +94,7 @@
increment="0.05"
initial_value="0.5"
label="Ambient"
- label_width="160"
+ label_width="120"
layout="topleft"
left="0"
name="Wind Volume"
@@ -68,7 +102,7 @@
slider_label.halign="right"
top_pad="7"
volume="true"
- width="350">
+ width="300">
<slider.commit_callback
function="Pref.setControlFalse"
parameter="MuteAmbient" />
@@ -76,81 +110,13 @@
<button
control_name="MuteAmbient"
disabled_control="MuteAudio"
- follows="top|right"
- height="16"
- image_selected="AudioMute_Off"
- image_unselected="Audio_Off"
- is_toggle="true"
- layout="topleft"
- left_pad="16"
- name="mute_audio"
- tab_stop="false"
- width="16" />
- <slider
- control_name="AudioLevelUI"
- disabled_control="MuteAudio"
- follows="left|top"
- height="15"
- increment="0.05"
- initial_value="0.5"
- label="Buttons"
- label_width="160"
- layout="topleft"
- left="0"
- name="UI Volume"
- show_text="false"
- slider_label.halign="right"
- top_pad="7"
- volume="true"
- width="350">
- <slider.commit_callback
- function="Pref.setControlFalse"
- parameter="MuteUI" />
- </slider>
- <button
- control_name="MuteUI"
- disabled_control="MuteAudio"
- follows="top|right"
- height="16"
- image_selected="AudioMute_Off"
- image_unselected="Audio_Off"
- is_toggle="true"
- layout="topleft"
- left_pad="16"
- name="mute_audio"
- tab_stop="false"
- width="16" />
- <slider
- control_name="AudioLevelMedia"
- disabled_control="MuteAudio"
- follows="left|top"
- height="15"
- increment="0.05"
- initial_value="0.5"
- label="Media"
- label_width="160"
- layout="topleft"
- left="0"
- name="Media Volume"
- show_text="false"
- slider_label.halign="right"
- top_pad="7"
- volume="true"
- width="350">
- <slider.commit_callback
- function="Pref.setControlFalse"
- parameter="MuteMedia" />
- </slider>
- <button
- control_name="MuteMedia"
- disabled_control="MuteAudio"
- follows="top|right"
+ follows="top|left"
height="16"
image_selected="AudioMute_Off"
image_unselected="Audio_Off"
is_toggle="true"
layout="topleft"
- left_pad="16"
+ left_pad="5"
name="mute_audio"
tab_stop="false"
width="16" />
@@ -161,8 +127,8 @@
height="15"
increment="0.05"
initial_value="0.5"
- label="Sound effects"
- label_width="160"
+ label="Sound Effects"
+ label_width="120"
slider_label.halign="right"
layout="topleft"
left="0"
@@ -170,7 +136,7 @@
show_text="false"
top_pad="7"
volume="true"
- width="350">
+ width="300">
<slider.commit_callback
function="Pref.setControlFalse"
parameter="MuteSounds" />
@@ -178,13 +144,13 @@
<button
control_name="MuteSounds"
disabled_control="MuteAudio"
- follows="top|right"
+ follows="top|left"
height="16"
image_selected="AudioMute_Off"
image_unselected="Audio_Off"
is_toggle="true"
layout="topleft"
- left_pad="16"
+ left_pad="5"
name="mute_audio"
tab_stop="false"
width="16" />
@@ -196,7 +162,7 @@
increment="0.05"
initial_value="0.5"
label="Streaming music"
- label_width="160"
+ label_width="120"
layout="topleft"
left="0"
name="Music Volume"
@@ -204,119 +170,199 @@
show_text="false"
top_pad="7"
volume="true"
- width="350">
+ width="300">
<slider.commit_callback
function="Pref.setControlFalse"
parameter="MuteMusic" />
- </slider>
- <button
+ </slider>
+ <button
control_name="MuteMusic"
- disabled_control="MuteAudio"
- follows="top|right"
+ disabled_control="MuteAudio"
+ follows="top|left"
height="16"
image_selected="AudioMute_Off"
image_unselected="Audio_Off"
is_toggle="true"
layout="topleft"
- left_pad="16"
+ left_pad="5"
name="mute_audio"
tab_stop="false"
- width="16" />
- <check_box
- label_text.halign="left"
- follows="left|top"
- height="16"
- control_name ="EnableVoiceChat"
- disabled_control="CmdLineDisableVoice"
- label="Enable voice"
- layout="topleft"
- left="28"
- name="enable_voice_check"
- top_pad="5"
- width="110"
- >
- </check_box>
- <slider
- control_name="AudioLevelVoice"
- enabled_control="EnableVoiceChat"
- disabled_control="MuteAudio"
+ width="16" />
+ <check_box
+ control_name="AudioStreamingMusic"
+ height="16"
+ label="Enabled"
+ layout="topleft"
+ left_pad="5"
+ name="music_enabled"
+ top_delta="2"
+ width="350"/>
+ <slider
+ control_name="AudioLevelMedia"
+ disabled_control="MuteAudio"
+ follows="left|top"
+ height="16"
+ increment="0.05"
+ initial_value="0.5"
+ label="Media"
+ label_width="120"
+ layout="topleft"
+ left="0"
+ name="Media Volume"
+ show_text="false"
+ slider_label.halign="right"
+ top_pad="7"
+ volume="true"
+ width="300">
+ <slider.commit_callback
+ function="Pref.setControlFalse"
+ parameter="MuteMedia" />
+ </slider>
+ <button
+ control_name="MuteMedia"
+ disabled_control="MuteAudio"
+ follows="top|left"
+ height="16"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
+ is_toggle="true"
+ layout="topleft"
+ left_pad="5"
+ name="mute_audio"
+ tab_stop="false"
+ width="16" />
+ <check_box
+ label_text.halign="left"
+ follows="left|top"
+ height="16"
+ control_name ="AudioStreamingMedia"
+ label="Enabled"
+ layout="topleft"
+ top_delta="2"
+ left_pad="5"
+ name="enable_media"
+ width="110"/>
+ <slider
+ control_name="AudioLevelVoice"
+ disabled_control="MuteAudio"
+ follows="left|top"
+ height="16"
+ increment="0.05"
+ initial_value="0.5"
+ label="Voice Chat"
+ label_width="120"
+ layout="topleft"
+ left="0"
+ top_delta="20"
+ name="Voice Volume"
+ show_text="false"
+ slider_label.halign="right"
+ volume="true"
+ width="300">
+ <slider.commit_callback
+ function="Pref.setControlFalse"
+ parameter="MuteVoice" />
+ </slider>
+ <button
+ control_name="MuteVoice"
+ disabled_control="MuteAudio"
+ follows="top|left"
+ height="16"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
+ is_toggle="true"
+ layout="topleft"
+ left_pad="5"
+ name="mute_audio"
+ tab_stop="false"
+ width="16" />
+ <check_box
+ label_text.halign="left"
+ follows="left|top"
+ height="16"
+ control_name ="EnableVoiceChat"
+ disabled_control="CmdLineDisableVoice"
+ label="Enabled"
+ layout="topleft"
+ top_delta="2"
+ left_pad="5"
+ name="enable_voice_check"
+ width="110"/>
+ <!-- -->
+ <check_box
+ name="media_auto_play_btn"
+ control_name="ParcelMediaAutoPlayEnable"
+ value="true"
+ follows="left|bottom|right"
+ height="15"
+ tool_tip="Check this to let media auto-play if it wants"
+ label="Allow Media to auto-play"
+ top_pad="5"
+ left="25"/>
+ <check_box
+ name="media_show_on_others_btn"
+ control_name="MediaShowOnOthers"
+ value="true"
+ follows="left|bottom|right"
+ height="15"
+ tool_tip="Uncheck this to hide media attached to other avatars nearby"
+ label="Play media attached to other avatars"
+ left="25"/>
+
+ <text
+ type="string"
+ length="1"
follows="left|top"
- height="15"
- increment="0.05"
- initial_value="0.5"
- label="Voice"
- label_width="160"
- layout="topleft"
- left="0"
- top_delta="20"
- name="Voice Volume"
- show_text="false"
- slider_label.halign="right"
- volume="true"
- width="350">
- <slider.commit_callback
- function="Pref.setControlFalse"
- parameter="MuteVoice" />
- </slider>
- <button
- control_name="MuteVoice"
- disabled_control="MuteAudio"
- follows="top|right"
- height="16"
- image_selected="AudioMute_Off"
- image_unselected="Audio_Off"
- is_toggle="true"
+ height="20"
layout="topleft"
- left_pad="16"
- name="mute_audio"
- tab_stop="false"
- width="16" />
+ left="25"
+ name="Listen from"
+ width="200"
+ top="210">
+ Voice Chat Settings
+ </text>
<text
type="string"
length="1"
follows="left|top"
- height="13"
layout="topleft"
- left="30"
+ left="80"
+ top_delta="16"
name="Listen from"
- width="200"
- top="205">
+ width="80">
Listen from:
</text>
- <icon
- follows="left|top"
- height="18"
- image_name="Cam_FreeCam_Off"
- layout="topleft"
- name="camera_icon"
- mouse_opaque="false"
- visible="true"
- width="18"
- left="80"
- top="219"/>
<icon
- follows="left|top"
- height="18"
- image_name="Move_Walk_Off"
- layout="topleft"
- name="avatar_icon"
- mouse_opaque="false"
- visible="true"
- width="18"
- top="239"
- left="80"
- />
+ follows="left|top"
+ height="18"
+ image_name="Cam_FreeCam_Off"
+ layout="topleft"
+ name="camera_icon"
+ mouse_opaque="false"
+ visible="true"
+ width="18"
+ left_pad="0"
+ top_delta="-5"/>
+ <icon
+ follows="left|top"
+ height="18"
+ image_name="Move_Walk_Off"
+ layout="topleft"
+ name="avatar_icon"
+ mouse_opaque="false"
+ visible="true"
+ width="18"
+ top_delta="20" />
<radio_group
enabled_control="EnableVoiceChat"
control_name="VoiceEarLocation"
draw_border="false"
follows="left|top"
layout="topleft"
- left="100"
+ left_pad="2"
width="221"
height="38"
- name="ear_location"
- top="218">
+ name="ear_location">
<radio_item
height="16"
label="Camera position"
@@ -339,8 +385,8 @@
is_toggle="true"
label="Input/Output devices"
layout="topleft"
- left="30"
- top="262"
+ left="80"
+ top_pad="5"
name="device_settings_btn"
width="190">
</button>
@@ -440,28 +486,28 @@
<locate
height="20"
layout="topleft"
- left_pad="2"
+ left_pad="5"
name="bar1"
top_delta="0"
width="20" />
<locate
height="20"
layout="topleft"
- left_pad="2"
+ left_pad="5"
name="bar2"
top_delta="0"
width="20" />
<locate
height="20"
layout="topleft"
- left_pad="2"
+ left_pad="5"
name="bar3"
top_delta="0"
width="20" />
<locate
height="20"
layout="topleft"
- left_pad="2"
+ left_pad="5"
name="bar4"
top_delta="0"
width="20" />
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index bfe3cce7d0..11069b3ac3 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -3,17 +3,25 @@
<!-- Don't remove floater's height! It is needed for Overflow and Start-Up toasts!-->
+<!--
+ This floater is invisible. To make toast look like a floater we render wrapper_panel
+ like a floater(draw shadows and so on). This is done with one purpose - make close button
+ look like it is positioned out of floater and able to accept mouse clicks (see EXT-4246)
+-->
+
<floater
- legacy_header_height="18"
+ legacy_header_height="0"
+ header_height="0"
name="toast"
title=""
visible="false"
layout="topleft"
- height="40"
- width="305"
+ height="47"
+ width="310"
left="0"
top="0"
follows="right|bottom"
+ background_visible="false"
bg_opaque_image="Toast_Over"
bg_alpha_image="Toast_Background"
can_minimize="false"
@@ -27,6 +35,21 @@
drop_shadow_visible = "false"
border = "false"
>
+ <panel
+ background_opaque="false"
+ border_visible="false"
+ background_visible="true"
+ bg_opaque_image="Toast_Over"
+ bg_alpha_image="Toast_Background"
+ label="wrapper_panel"
+ layout="topleft"
+ left="0"
+ name="wrapper_panel"
+ top="7"
+ height="40"
+ follows="all"
+ translate="false"
+ width="305">
<!-- Don't remove this wiget! It is needed for Overflow and Start-Up toasts!-->
<text
clip_partial="true"
@@ -46,10 +69,11 @@
width="260">
Toast text;
</text>
+ </panel>
<button
layout="topleft"
- top="-14"
- left="293"
+ top="0"
+ right="310"
width="17"
height="17"
follows="top|right"
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index 1b34a731a5..c4f0fe5208 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -22,5 +22,6 @@
hover_glow_amount="0.15"
halign="center"
pad_bottom="3"
+ height="23"
scale_image="true">
</button>
diff --git a/indra/newview/skins/default/xui/en/widgets/combo_box.xml b/indra/newview/skins/default/xui/en/widgets/combo_box.xml
index 1f7499646f..d1f68a9ef9 100644
--- a/indra/newview/skins/default/xui/en/widgets/combo_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/combo_box.xml
@@ -2,6 +2,7 @@
<combo_box font="SansSerifSmall"
list_position="below"
max_chars="20"
+ height="23"
follows="right|top">
<combo_box.combo_button name="Combobox Button"
hover_glow_amount="0.15"
diff --git a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml
index a5043c5c14..83df10e417 100644
--- a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<flyout_button list_position="below">
+<flyout_button list_position="below" height="23">
<action_button scale_image="true"
image_selected="SegmentedBtn_Left_Selected"
image_unselected="SegmentedBtn_Left_Off"
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 15a51bbe14..3f379fcf75 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -854,16 +854,10 @@ class Linux_i686Manifest(LinuxManifest):
print "Skipping %s - not found" % libfile
pass
-
- if(self.args['buildtype'].lower() == 'release'):
- print "* packaging stripped viewer binary."
- self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin")
- else:
- print "* packaging un-stripped viewer binary."
- self.path("secondlife-bin","bin/do-not-directly-run-secondlife-bin")
+ self.path("secondlife-bin","bin/do-not-directly-run-secondlife-bin")
- self.path("../linux_crash_logger/linux-crash-logger-stripped","bin/linux-crash-logger.bin")
- self.path("../linux_updater/linux-updater-stripped", "bin/linux-updater.bin")
+ self.path("../linux_crash_logger/linux-crash-logger","bin/linux-crash-logger.bin")
+ self.path("../linux_updater/linux-updater", "bin/linux-updater.bin")
self.path("../llplugin/slplugin/SLPlugin", "bin/SLPlugin")
if self.prefix("res-sdl"):
self.path("*")
@@ -914,23 +908,16 @@ class Linux_i686Manifest(LinuxManifest):
if self.prefix(src="vivox-runtime/i686-linux", dst="lib"):
self.path("libortp.so")
self.path("libsndfile.so.1")
- #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OAL lib
+ #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib
self.path("libvivoxsdk.so")
self.path("libvivoxplatform.so")
self.end_prefix("lib")
-class Linux_x86_64Manifest(LinuxManifest):
- def construct(self):
- super(Linux_x86_64Manifest, self).construct()
- self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin")
- self.path("../linux_crash_logger/linux-crash-logger-stripped","linux-crash-logger.bin")
- if self.prefix("res-sdl"):
- self.path("*")
- # recurse
- self.end_prefix("res-sdl")
+ if self.args['buildtype'].lower() == 'release':
+ print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build"
+ self.run_command("find %(d)r/bin %(d)r/lib -type f | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure
- self.path("featuretable_linux.txt")
- self.path("secondlife-i686.supp")
+################################################################
if __name__ == "__main__":
main()