summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llcallfloater.cpp61
-rw-r--r--indra/newview/llcallfloater.h11
-rw-r--r--indra/newview/llchathistory.cpp30
-rw-r--r--indra/newview/llfloaterabout.cpp4
-rw-r--r--indra/newview/llfloatermediasettings.cpp55
-rw-r--r--indra/newview/llfloatermediasettings.h12
-rw-r--r--indra/newview/llimfloater.cpp5
-rw-r--r--indra/newview/llimview.cpp36
-rw-r--r--indra/newview/llimview.h10
-rw-r--r--indra/newview/llnotificationgrouphandler.cpp2
-rw-r--r--indra/newview/llnotificationhandler.h15
-rw-r--r--indra/newview/llnotificationhandlerutil.cpp85
-rw-r--r--indra/newview/llnotificationofferhandler.cpp2
-rw-r--r--indra/newview/llnotificationscripthandler.cpp2
-rw-r--r--indra/newview/llpanelmediasettingsgeneral.cpp18
-rw-r--r--indra/newview/llpanelmediasettingssecurity.cpp2
-rw-r--r--indra/newview/llpanelprimmediacontrols.cpp71
-rw-r--r--indra/newview/llpanelprimmediacontrols.h8
-rw-r--r--indra/newview/llparticipantlist.cpp13
-rw-r--r--indra/newview/llparticipantlist.h5
-rw-r--r--indra/newview/llviewermediafocus.cpp9
-rw-r--r--indra/newview/skins/default/xui/en/floater_voice_controls.xml43
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml20
-rw-r--r--indra/newview/skins/default/xui/en/panel_im_control_panel.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_media_settings_general.xml23
-rw-r--r--indra/newview/skins/default/xui/en/panel_prim_media_controls.xml39
26 files changed, 427 insertions, 155 deletions
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index b41f962ffa..1b929eca0e 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -35,6 +35,7 @@
#include "llcallfloater.h"
+#include "llagentdata.h" // for gAgentID
#include "llavatarlist.h"
#include "llbottomtray.h"
#include "llparticipantlist.h"
@@ -46,6 +47,7 @@ LLCallFloater::LLCallFloater(const LLSD& key)
, mSpeakerManager(NULL)
, mPaticipants(NULL)
, mAvatarList(NULL)
+, mVoiceType(VC_LOCAL_CHAT)
{
}
@@ -69,6 +71,8 @@ BOOL LLCallFloater::postBuild()
anchor_panel, this,
getDockTongue(), LLDockControl::TOP));
+ initAgentData();
+
// update list for current session
updateSession();
@@ -110,6 +114,19 @@ void LLCallFloater::updateSession()
if (im_session)
{
mSpeakerManager = LLIMModel::getInstance()->getSpeakerManager(session_id);
+ switch (im_session->mType)
+ {
+ case IM_NOTHING_SPECIAL:
+ case IM_SESSION_P2P_INVITE:
+ mVoiceType = VC_PEER_TO_PEER;
+ break;
+ case IM_SESSION_CONFERENCE_START:
+ mVoiceType = VC_AD_HOC_CHAT;
+ break;
+ default:
+ mVoiceType = VC_GROUP_CHAT;
+ break;
+ }
}
if (NULL == mSpeakerManager)
@@ -117,8 +134,10 @@ void LLCallFloater::updateSession()
// by default let show nearby chat participants
mSpeakerManager = LLLocalSpeakerMgr::getInstance();
lldebugs << "Set DEFAULT speaker manager" << llendl;
+ mVoiceType = VC_LOCAL_CHAT;
}
+ updateTitle();
refreshPartisipantList();
}
@@ -129,10 +148,52 @@ void LLCallFloater::refreshPartisipantList()
bool do_not_use_context_menu_in_local_chat = LLLocalSpeakerMgr::getInstance() != mSpeakerManager;
mPaticipants = new LLParticipantList(mSpeakerManager, mAvatarList, do_not_use_context_menu_in_local_chat);
+
+ if (!do_not_use_context_menu_in_local_chat)
+ {
+ mAvatarList->setNoItemsCommentText(getString("no_one_near"));
+ }
}
void LLCallFloater::onCurrentChannelChanged(const LLUUID& /*session_id*/)
{
updateSession();
}
+
+void LLCallFloater::updateTitle()
+{
+ LLVoiceChannel* voice_channel = LLVoiceChannel::getCurrentVoiceChannel();
+ std::string title;
+ switch (mVoiceType)
+ {
+ case VC_LOCAL_CHAT:
+ title = getString("title_nearby");
+ break;
+ case VC_PEER_TO_PEER:
+ title = voice_channel->getSessionName();
+ break;
+ case VC_AD_HOC_CHAT:
+ title = getString("title_adhoc");
+ break;
+ case VC_GROUP_CHAT:
+ LLStringUtil::format_map_t args;
+ args["[GROUP]"] = voice_channel->getSessionName();
+ title = getString("title_group", args);
+ break;
+ }
+
+ setTitle(title);
+}
+
+void LLCallFloater::initAgentData()
+{
+ childSetValue("user_icon", gAgentID);
+
+ std::string name;
+ gCacheName->getFullName(gAgentID, name);
+ childSetValue("user_text", name);
+
+ LLOutputMonitorCtrl* speaking_indicator = getChild<LLOutputMonitorCtrl>("speaking_indicator");
+ speaking_indicator->setSpeakerId(gAgentID);
+}
//EOF
diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h
index bfaa1075c4..8a440873ff 100644
--- a/indra/newview/llcallfloater.h
+++ b/indra/newview/llcallfloater.h
@@ -61,6 +61,14 @@ public:
/*virtual*/ void onOpen(const LLSD& key);
private:
+ typedef enum e_voice_controls_type
+ {
+ VC_LOCAL_CHAT,
+ VC_GROUP_CHAT,
+ VC_AD_HOC_CHAT,
+ VC_PEER_TO_PEER
+ }EVoiceControls;
+
/**
* Updates mSpeakerManager and list according to current Voice Channel
*
@@ -74,11 +82,14 @@ private:
*/
void refreshPartisipantList();
void onCurrentChannelChanged(const LLUUID& session_id);
+ void updateTitle();
+ void initAgentData();
private:
LLSpeakerMgr* mSpeakerManager;
LLParticipantList* mPaticipants;
LLAvatarList* mAvatarList;
+ EVoiceControls mVoiceType;
};
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index caf9c08057..078c2518c6 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -267,20 +267,20 @@ protected:
}
private:
- std::string appendTime(const LLChat& chat)
- {
- time_t utc_time;
- utc_time = time_corrected();
- std::string timeStr ="["+ LLTrans::getString("TimeHour")+"]:["
- +LLTrans::getString("TimeMin")+"] ";
-
- LLSD substitution;
-
- substitution["datetime"] = (S32) utc_time;
- LLStringUtil::format (timeStr, substitution);
-
- return timeStr;
- }
+ std::string appendTime(const LLChat& chat)
+ {
+ time_t utc_time;
+ utc_time = time_corrected();
+ std::string timeStr ="["+ LLTrans::getString("TimeHour")+"]:["
+ +LLTrans::getString("TimeMin")+"] ";
+
+ LLSD substitution;
+
+ substitution["datetime"] = (S32) utc_time;
+ LLStringUtil::format (timeStr, substitution);
+
+ return timeStr;
+ }
void setTimeField(const LLChat& chat)
{
@@ -302,7 +302,7 @@ private:
time_box->translate(delta_pos_x, delta_pos_y);
//... & change width of the name control
- LLTextBox* user_name = getChild<LLTextBox>("user_name");
+ LLView* user_name = getChild<LLView>("user_name");
const LLRect& user_rect = user_name->getRect();
user_name->reshape(user_rect.getWidth() + delta_pos_x, user_rect.getHeight());
}
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 80b0a430e0..58c0c19761 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -269,10 +269,10 @@ LLSD LLFloaterAbout::getInfo()
info["J2C_VERSION"] = LLImageJ2C::getEngineInfo();
bool want_fullname = true;
info["AUDIO_DRIVER_VERSION"] = gAudiop ? LLSD(gAudiop->getDriverName(want_fullname)) : LLSD();
- info["VIVOX_VERSION"] = gVoiceClient ? gVoiceClient->getAPIVersion() : "Unknown";
+ info["VIVOX_VERSION"] = gVoiceClient ? gVoiceClient->getAPIVersion() : LLTrans::getString("NotConnected");
// TODO: Implement media plugin version query
- info["QT_WEBKIT_VERSION"] = "4.5.2";
+ info["QT_WEBKIT_VERSION"] = "4.5.2 (version number hard-coded)";
if (gPacketsIn > 0)
{
diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp
index 44e68d7745..f7ce826a39 100644
--- a/indra/newview/llfloatermediasettings.cpp
+++ b/indra/newview/llfloatermediasettings.cpp
@@ -41,6 +41,7 @@
#include "lluictrlfactory.h"
#include "llbutton.h"
#include "llselectmgr.h"
+#include "llsdutil.h"
LLFloaterMediaSettings* LLFloaterMediaSettings::sInstance = NULL;
@@ -145,15 +146,15 @@ LLFloaterMediaSettings* LLFloaterMediaSettings::getInstance()
//static
void LLFloaterMediaSettings::apply()
{
- LLSD settings;
+ LLSD settings;
sInstance->mPanelMediaSettingsGeneral->preApply();
- sInstance->mPanelMediaSettingsGeneral->getValues( settings );
+ sInstance->mPanelMediaSettingsGeneral->getValues( settings );
sInstance->mPanelMediaSettingsSecurity->preApply();
sInstance->mPanelMediaSettingsSecurity->getValues( settings );
sInstance->mPanelMediaSettingsPermissions->preApply();
- sInstance->mPanelMediaSettingsPermissions->getValues( settings );
+ sInstance->mPanelMediaSettingsPermissions->getValues( settings );
LLSelectMgr::getInstance()->selectionSetMedia( LLTextureEntry::MF_HAS_MEDIA );
- LLSelectMgr::getInstance()->selectionSetMediaData(settings);
+ LLSelectMgr::getInstance()->selectionSetMediaData(settings);
sInstance->mPanelMediaSettingsGeneral->postApply();
sInstance->mPanelMediaSettingsSecurity->postApply();
sInstance->mPanelMediaSettingsPermissions->postApply();
@@ -183,7 +184,12 @@ void LLFloaterMediaSettings::initValues( const LLSD& media_settings, bool editab
sInstance->mPanelMediaSettingsPermissions->
initValues( sInstance->mPanelMediaSettingsPermissions, media_settings, editable );
-
+
+ // Squirrel away initial values
+ sInstance->mInitialValues.clear();
+ sInstance->mPanelMediaSettingsGeneral->getValues( sInstance->mInitialValues );
+ sInstance->mPanelMediaSettingsSecurity->getValues( sInstance->mInitialValues );
+ sInstance->mPanelMediaSettingsPermissions->getValues( sInstance->mInitialValues );
}
////////////////////////////////////////////////////////////////////////////////
@@ -206,7 +212,7 @@ void LLFloaterMediaSettings::clearValues( bool editable)
{
// clean up all panels before updating
sInstance->mPanelMediaSettingsGeneral ->clearValues(sInstance->mPanelMediaSettingsGeneral, editable);
- sInstance->mPanelMediaSettingsSecurity ->clearValues(sInstance->mPanelMediaSettingsSecurity, editable);
+ sInstance->mPanelMediaSettingsSecurity ->clearValues(sInstance->mPanelMediaSettingsSecurity, editable);
sInstance->mPanelMediaSettingsPermissions->clearValues(sInstance->mPanelMediaSettingsPermissions, editable);
}
@@ -235,7 +241,7 @@ void LLFloaterMediaSettings::onBtnApply( void* userdata )
// static
void LLFloaterMediaSettings::onBtnCancel( void* userdata )
{
- sInstance->closeFloater();
+ sInstance->closeFloater();
}
////////////////////////////////////////////////////////////////////////////////
@@ -250,7 +256,6 @@ void LLFloaterMediaSettings::onTabChanged(void* user_data, bool from_click)
//
void LLFloaterMediaSettings::enableOkApplyBtns( bool enable )
{
- setCtrlsEnabled( enable );
childSetEnabled( "OK", enable );
childSetEnabled( "Apply", enable );
}
@@ -265,7 +270,6 @@ const std::string LLFloaterMediaSettings::getHomeUrl()
return std::string( "" );
}
-
////////////////////////////////////////////////////////////////////////////////
//
bool LLFloaterMediaSettings::passesWhiteList( const std::string& test_url )
@@ -279,3 +283,36 @@ bool LLFloaterMediaSettings::passesWhiteList( const std::string& test_url )
// this is all we can do
return false;
}
+
+////////////////////////////////////////////////////////////////////////////////
+// virtual
+void LLFloaterMediaSettings::draw()
+{
+ // *NOTE: The code below is very inefficient. Better to do this
+ // only when data change.
+ // Every frame, check to see what the values are. If they are not
+ // the same as the default media data, enable the OK/Apply buttons
+ LLSD settings;
+ sInstance->mPanelMediaSettingsGeneral->getValues( settings );
+ sInstance->mPanelMediaSettingsSecurity->getValues( settings );
+ sInstance->mPanelMediaSettingsPermissions->getValues( settings );
+
+ bool values_changed = false;
+
+ LLSD::map_const_iterator iter = settings.beginMap();
+ LLSD::map_const_iterator end = settings.endMap();
+ for ( ; iter != end; ++iter )
+ {
+ const std::string &current_key = iter->first;
+ const LLSD &current_value = iter->second;
+ if ( ! llsd_equals(current_value, mInitialValues[current_key]))
+ {
+ values_changed = true;
+ break;
+ }
+ }
+
+ enableOkApplyBtns(values_changed);
+
+ LLFloater::draw();
+}
diff --git a/indra/newview/llfloatermediasettings.h b/indra/newview/llfloatermediasettings.h
index 17a47cb0f5..e2af1705bf 100644
--- a/indra/newview/llfloatermediasettings.h
+++ b/indra/newview/llfloatermediasettings.h
@@ -54,11 +54,13 @@ public:
static void apply();
static void initValues( const LLSD& media_settings , bool editable);
static void clearValues( bool editable);
- void enableOkApplyBtns( bool enable );
- LLPanelMediaSettingsSecurity* getPanelSecurity(){return mPanelMediaSettingsSecurity;};
- const std::string getHomeUrl();
+
+ LLPanelMediaSettingsSecurity* getPanelSecurity(){return mPanelMediaSettingsSecurity;};
+ const std::string getHomeUrl();
bool passesWhiteList( const std::string& test_url );
+ virtual void draw();
+
bool mIdenticalHasMediaInfo;
bool mMultipleMedia;
bool mMultipleValidMedia;
@@ -83,6 +85,10 @@ protected:
static LLFloaterMediaSettings* sInstance;
private:
+
+ void enableOkApplyBtns( bool enable );
+
+ LLSD mInitialValues;
bool mWaitingToClose;
};
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 310eaaec27..5e9ffdf410 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -34,6 +34,8 @@
#include "llimfloater.h"
+#include "llnotificationsutil.h"
+
#include "llagent.h"
#include "llappviewer.h"
#include "llbutton.h"
@@ -634,6 +636,9 @@ void LLIMFloater::processAgentListUpdates(const LLSD& body)
else
label = LLTrans::getString("IM_to_label") + " " + LLIMModel::instance().getName(mSessionID);
mInputEditor->setLabel(label);
+
+ if (moderator_muted_text)
+ LLNotificationsUtil::add("TextChatIsMutedByModerator");
}
}
}
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 2f88578739..be719c0a78 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -233,6 +233,12 @@ void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::ES
break;
}
}
+
+ // Update speakers list when connected
+ if (LLVoiceChannel::STATE_CONNECTED == new_state)
+ {
+ mSpeakers->update(true);
+ }
}
else // group || ad-hoc calls
{
@@ -445,6 +451,19 @@ bool LLIMModel::addToHistory(const LLUUID& session_id, const std::string& from,
return true;
}
+bool LLIMModel::logToFile(const std::string& session_name, const std::string& from, const LLUUID& from_id, const std::string& utf8_text)
+{
+ if (gSavedPerAccountSettings.getBOOL("LogInstantMessages"))
+ {
+ LLLogChat::saveHistory(session_name, from, from_id, utf8_text);
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
bool LLIMModel::logToFile(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text)
{
if (gSavedPerAccountSettings.getBOOL("LogInstantMessages"))
@@ -476,8 +495,7 @@ bool LLIMModel::proccessOnlineOfflineNotification(
}
bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, const LLUUID& from_id,
- const std::string& utf8_text, bool log2file /* = true */)
-{
+ const std::string& utf8_text, bool log2file /* = true */) {
LLIMSession* session = findIMSession(session_id);
if (!session)
@@ -486,7 +504,10 @@ bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, co
return false;
}
- addMessageSilently(*session, from, from_id, utf8_text, log2file);
+ addToHistory(session_id, from, from_id, utf8_text);
+ if (log2file) logToFile(session_id, from, from_id, utf8_text);
+
+ session->mNumUnread++;
// notify listeners
LLSD arg;
@@ -501,15 +522,6 @@ bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, co
return true;
}
-void LLIMModel::addMessageSilently(LLIMSession& session, const std::string& from, const LLUUID& from_id,
- const std::string& utf8_text, bool log2file /* = true */)
-{
- addToHistory(session.mSessionID, from, from_id, utf8_text);
- if (log2file) logToFile(session.mSessionID, from, from_id, utf8_text);
-
- session.mNumUnread++;
-}
-
const std::string& LLIMModel::getName(const LLUUID& session_id) const
{
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 72fd006222..40e3a8fb69 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -146,11 +146,6 @@ public:
bool addMessage(const LLUUID& session_id, const std::string& from, const LLUUID& other_participant_id, const std::string& utf8_text, bool log2file = true);
/**
- * Adds message without new message notification.
- */
- void addMessageSilently(LLIMSession& session, const std::string& from, const LLUUID& other_participant_id, const std::string& utf8_text, bool log2file = true);
-
- /**
* Add a system message to an IM Model
*/
bool proccessOnlineOfflineNotification(const LLUUID& session_id, const std::string& utf8_text);
@@ -205,6 +200,11 @@ public:
void testMessages();
+ /**
+ * Saves an IM message into a file
+ */
+ bool logToFile(const std::string& session_name, const std::string& from, const LLUUID& from_id, const std::string& utf8_text);
+
private:
/**
diff --git a/indra/newview/llnotificationgrouphandler.cpp b/indra/newview/llnotificationgrouphandler.cpp
index 2e7f95660a..6889931956 100644
--- a/indra/newview/llnotificationgrouphandler.cpp
+++ b/indra/newview/llnotificationgrouphandler.cpp
@@ -88,6 +88,8 @@ bool LLGroupHandler::processNotification(const LLSD& notify)
if(notify["sigtype"].asString() == "add" || notify["sigtype"].asString() == "change")
{
+ LLHandlerUtil::logGroupNoticeToIMGroup(notification);
+
LLPanel* notify_box = new LLToastGroupNotifyPanel(notification);
LLToast::Params p;
p.notif_id = notification->getID();
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index d42b0148d6..da8928321a 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -268,7 +268,20 @@ public:
/**
* Writes notification message to IM session.
*/
- static void logToIM(const LLNotificationPtr& notification);
+ static void logToIM(const EInstantMessage& session_type,
+ const std::string& session_name, const std::string& from_name,
+ const std::string& message, const LLUUID& session_owner_id,
+ const LLUUID& from_id);
+
+ /**
+ * Writes notification message to IM p2p session.
+ */
+ static void logToIMP2P(const LLNotificationPtr& notification);
+
+ /**
+ * Writes group notice notification message to IM group session.
+ */
+ static void logGroupNoticeToIMGroup(const LLNotificationPtr& notification);
};
}
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index e1236b935e..05da338513 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -36,6 +36,7 @@
#include "llnotificationhandler.h"
#include "llnotifications.h"
#include "llimview.h"
+#include "llagent.h"
using namespace LLNotificationsUI;
@@ -52,37 +53,77 @@ bool LLHandlerUtil::canLogToIM(const LLNotificationPtr& notification)
}
// static
-void LLHandlerUtil::logToIM(const LLNotificationPtr& notification)
+void LLHandlerUtil::logToIM(const EInstantMessage& session_type,
+ const std::string& session_name, const std::string& from_name,
+ const std::string& message, const LLUUID& session_owner_id,
+ const LLUUID& from_id)
+{
+ LLUUID session_id = LLIMMgr::computeSessionID(session_type,
+ session_owner_id);
+ LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(
+ session_id);
+ if (session == NULL)
+ {
+ LLIMModel::instance().logToFile(session_name, from_name, from_id, message);
+ }
+ else
+ {
+ // store active session id
+ const LLUUID & active_session_id =
+ LLIMModel::instance().getActiveSessionID();
+
+ // set searched session as active to avoid IM toast popup
+ LLIMModel::instance().setActiveSessionID(session_id);
+
+ LLIMModel::instance().addMessage(session_id, from_name, from_id,
+ message);
+
+ // restore active session id
+ LLIMModel::instance().setActiveSessionID(active_session_id);
+ }
+}
+
+// static
+void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification)
{
- // add message to IM
const std::string
name =
notification->getSubstitutions().has("NAME") ? notification->getSubstitutions()["NAME"]
: notification->getSubstitutions()["[NAME]"];
- // don't create IM session with objects, it's necessary condition to log
+ // don't create IM p2p session with objects, it's necessary condition to log
if (notification->getName() != OBJECT_GIVE_ITEM && notification->getName()
!= OBJECT_GIVE_ITEM_UNKNOWN_USER)
{
LLUUID from_id = notification->getPayload()["from_id"];
- LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL,
- from_id);
-
- LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(session_id);
- if (session == NULL)
- {
- session_id = LLIMMgr::instance().addSession(name,
- IM_NOTHING_SPECIAL, from_id);
- session = LLIMModel::instance().findIMSession(session_id);
- }
-
- if (session == NULL)
- {
- llerrs << "session " << session_id << "does not exist " << llendl;
- return;
- }
-
- LLIMModel::instance().addMessageSilently(*session, name, from_id,
- notification->getMessage());
+
+ logToIM(IM_NOTHING_SPECIAL, name, name, notification->getMessage(),
+ from_id, from_id);
}
}
+
+// static
+void LLHandlerUtil::logGroupNoticeToIMGroup(
+ const LLNotificationPtr& notification)
+{
+
+ const LLSD& payload = notification->getPayload();
+ LLGroupData groupData;
+ if (!gAgent.getGroupData(payload["group_id"].asUUID(), groupData))
+ {
+ llwarns
+ << "Group notice for unkown group: "
+ << payload["group_id"].asUUID() << llendl;
+ }
+
+ const std::string group_name = groupData.mName;
+ const std::string sender_name = payload["sender_name"].asString();
+
+ // we can't retrieve sender id from group notice system message, so try to lookup it from cache
+ LLUUID sender_id;
+ gCacheName->getUUID(sender_name, sender_id);
+
+ logToIM(IM_SESSION_GROUP_START, group_name, sender_name, payload["message"],
+ payload["group_id"], sender_id);
+}
+
diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp
index cfe7fd09ac..c179a2cf90 100644
--- a/indra/newview/llnotificationofferhandler.cpp
+++ b/indra/newview/llnotificationofferhandler.cpp
@@ -90,7 +90,7 @@ bool LLOfferHandler::processNotification(const LLSD& notify)
if(notify["sigtype"].asString() == "add" || notify["sigtype"].asString() == "change")
{
- LLHandlerUtil::logToIM(notification);
+ LLHandlerUtil::logToIMP2P(notification);
LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(notification);
diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp
index 6f91b6e58b..c7261199e3 100644
--- a/indra/newview/llnotificationscripthandler.cpp
+++ b/indra/newview/llnotificationscripthandler.cpp
@@ -98,7 +98,7 @@ bool LLScriptHandler::processNotification(const LLSD& notify)
{
if (LLHandlerUtil::canLogToIM(notification))
{
- LLHandlerUtil::logToIM(notification);
+ LLHandlerUtil::logToIMP2P(notification);
}
if(SCRIPT_DIALOG == notification->getName() || SCRIPT_DIALOG_GROUP == notification->getName() || SCRIPT_LOAD_URL == notification->getName())
diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp
index 5bb266a01d..b1e7dd3d50 100644
--- a/indra/newview/llpanelmediasettingsgeneral.cpp
+++ b/indra/newview/llpanelmediasettingsgeneral.cpp
@@ -392,19 +392,19 @@ void LLPanelMediaSettingsGeneral::preApply()
//
void LLPanelMediaSettingsGeneral::getValues( LLSD &fill_me_in )
{
- fill_me_in[LLMediaEntry::AUTO_LOOP_KEY] = mAutoLoop->getValue();
- fill_me_in[LLMediaEntry::AUTO_PLAY_KEY] = mAutoPlay->getValue();
- fill_me_in[LLMediaEntry::AUTO_SCALE_KEY] = mAutoScale->getValue();
- fill_me_in[LLMediaEntry::AUTO_ZOOM_KEY] = mAutoZoom->getValue();
- fill_me_in[LLMediaEntry::CONTROLS_KEY] = mControls->getCurrentIndex();
+ fill_me_in[LLMediaEntry::AUTO_LOOP_KEY] = (LLSD::Boolean)mAutoLoop->getValue();
+ fill_me_in[LLMediaEntry::AUTO_PLAY_KEY] = (LLSD::Boolean)mAutoPlay->getValue();
+ fill_me_in[LLMediaEntry::AUTO_SCALE_KEY] = (LLSD::Boolean)mAutoScale->getValue();
+ fill_me_in[LLMediaEntry::AUTO_ZOOM_KEY] = (LLSD::Boolean)mAutoZoom->getValue();
+ fill_me_in[LLMediaEntry::CONTROLS_KEY] = (LLSD::Integer)mControls->getCurrentIndex();
//Don't fill in current URL: this is only supposed to get changed via navigate
// fill_me_in[LLMediaEntry::CURRENT_URL_KEY] = mCurrentURL->getValue();
- fill_me_in[LLMediaEntry::HEIGHT_PIXELS_KEY] = mHeightPixels->getValue();
+ fill_me_in[LLMediaEntry::HEIGHT_PIXELS_KEY] = (LLSD::Integer)mHeightPixels->getValue();
// Don't fill in the home URL if it is the special "Multiple Media" string!
if (LLTrans::getString("Multiple Media") != mHomeURL->getValue())
- fill_me_in[LLMediaEntry::HOME_URL_KEY] = mHomeURL->getValue();
- fill_me_in[LLMediaEntry::FIRST_CLICK_INTERACT_KEY] = mFirstClick->getValue();
- fill_me_in[LLMediaEntry::WIDTH_PIXELS_KEY] = mWidthPixels->getValue();
+ fill_me_in[LLMediaEntry::HOME_URL_KEY] = (LLSD::String)mHomeURL->getValue();
+ fill_me_in[LLMediaEntry::FIRST_CLICK_INTERACT_KEY] = (LLSD::Boolean)mFirstClick->getValue();
+ fill_me_in[LLMediaEntry::WIDTH_PIXELS_KEY] = (LLSD::Integer)mWidthPixels->getValue();
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpanelmediasettingssecurity.cpp b/indra/newview/llpanelmediasettingssecurity.cpp
index 94e137b0f4..7ec53ed57a 100644
--- a/indra/newview/llpanelmediasettingssecurity.cpp
+++ b/indra/newview/llpanelmediasettingssecurity.cpp
@@ -213,7 +213,7 @@ void LLPanelMediaSettingsSecurity::preApply()
//
void LLPanelMediaSettingsSecurity::getValues( LLSD &fill_me_in )
{
- fill_me_in[LLMediaEntry::WHITELIST_ENABLE_KEY] = mEnableWhiteList->getValue();
+ fill_me_in[LLMediaEntry::WHITELIST_ENABLE_KEY] = (LLSD::Boolean)mEnableWhiteList->getValue();
// iterate over white list and extract items
std::vector< LLScrollListItem* > white_list_items = mWhiteListList->getAllData();
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index 71c1b0cbb9..e86123d565 100644
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -66,10 +66,6 @@
glh::matrix4f glh_get_current_modelview();
glh::matrix4f glh_get_current_projection();
-const F32 ZOOM_NEAR_PADDING = 1.0f;
-const F32 ZOOM_MEDIUM_PADDING = 1.15f;
-const F32 ZOOM_FAR_PADDING = 1.5f;
-
// Warning: make sure these two match!
const LLPanelPrimMediaControls::EZoomLevel LLPanelPrimMediaControls::kZoomLevels[] = { ZOOM_NONE, ZOOM_MEDIUM };
const int LLPanelPrimMediaControls::kNumZoomLevels = 2;
@@ -86,7 +82,13 @@ LLPanelPrimMediaControls::LLPanelPrimMediaControls() :
mUpdateSlider(true),
mClearFaceOnFade(false),
mCurrentRate(0.0),
- mMovieDuration(0.0)
+ mMovieDuration(0.0),
+ mTargetObjectID(LLUUID::null),
+ mTargetObjectFace(0),
+ mTargetImplID(LLUUID::null),
+ mTargetObjectNormal(LLVector3::zero),
+ mZoomObjectID(LLUUID::null),
+ mZoomObjectFace(0)
{
mCommitCallbackRegistrar.add("MediaCtrl.Close", boost::bind(&LLPanelPrimMediaControls::onClickClose, this));
mCommitCallbackRegistrar.add("MediaCtrl.Back", boost::bind(&LLPanelPrimMediaControls::onClickBack, this));
@@ -152,6 +154,11 @@ BOOL LLPanelPrimMediaControls::postBuild()
mRightBookend = getChild<LLUICtrl>("right_bookend");
mBackgroundImage = LLUI::getUIImage(getString("control_background_image_name"));
LLStringUtil::convertToF32(getString("skip_step"), mSkipStep);
+ LLStringUtil::convertToS32(getString("min_width"), mMinWidth);
+ LLStringUtil::convertToS32(getString("min_height"), mMinHeight);
+ LLStringUtil::convertToF32(getString("zoom_near_padding"), mZoomNearPadding);
+ LLStringUtil::convertToF32(getString("zoom_medium_padding"), mZoomMediumPadding);
+ LLStringUtil::convertToF32(getString("zoom_far_padding"), mZoomFarPadding);
// These are currently removed...but getChild creates a "dummy" widget.
// This class handles them missing.
@@ -257,9 +264,6 @@ LLPluginClassMedia* LLPanelPrimMediaControls::getTargetMediaPlugin()
void LLPanelPrimMediaControls::updateShape()
{
- const S32 MIN_HUD_WIDTH=400;
- const S32 MIN_HUD_HEIGHT=120;
-
LLViewerMediaImpl* media_impl = getTargetMediaImpl();
LLViewerObject* objectp = getTargetObject();
@@ -279,7 +283,7 @@ void LLPanelPrimMediaControls::updateShape()
bool can_navigate = parcel->getMediaAllowNavigate();
bool enabled = false;
- bool is_zoomed = (mCurrentZoom != ZOOM_NONE);
+ bool is_zoomed = (mCurrentZoom != ZOOM_NONE) && (mTargetObjectID == mZoomObjectID) && (mTargetObjectFace == mZoomObjectFace);
// There is no such thing as "has_focus" being different from normal controls set
// anymore (as of user feedback from bri 10/09). So we cheat here and force 'has_focus'
// to 'true' (or, actually, we use a setting)
@@ -309,7 +313,7 @@ void LLPanelPrimMediaControls::updateShape()
mStopCtrl->setVisible(false);
mHomeCtrl->setVisible(has_focus);
mZoomCtrl->setVisible(!is_zoomed);
- mUnzoomCtrl->setVisible(has_focus && is_zoomed);
+ mUnzoomCtrl->setVisible(is_zoomed);
mOpenCtrl->setVisible(true);
mMediaAddressCtrl->setVisible(has_focus && !mini_controls);
mMediaPlaySliderPanel->setVisible(has_focus && !mini_controls);
@@ -332,13 +336,12 @@ void LLPanelPrimMediaControls::updateShape()
if(media_plugin && media_plugin->pluginSupportsMediaTime())
{
- mReloadCtrl->setEnabled(FALSE);
- mReloadCtrl->setVisible(FALSE);
+ mReloadCtrl->setEnabled(false);
+ mReloadCtrl->setVisible(false);
mMediaStopCtrl->setVisible(has_focus);
- mHomeCtrl->setVisible(FALSE);
- // No nav controls
- mBackCtrl->setVisible(FALSE);
- mFwdCtrl->setEnabled(FALSE);
+ mHomeCtrl->setVisible(has_focus);
+ mBackCtrl->setVisible(false);
+ mFwdCtrl->setVisible(false);
mMediaAddressCtrl->setVisible(false);
mMediaAddressCtrl->setEnabled(false);
mMediaPlaySliderPanel->setVisible(has_focus && !mini_controls);
@@ -416,7 +419,6 @@ void LLPanelPrimMediaControls::updateShape()
mPlayCtrl->setVisible(FALSE);
mPauseCtrl->setEnabled(TRUE);
mPauseCtrl->setVisible(has_focus);
- mMediaStopCtrl->setEnabled(TRUE);
break;
case LLPluginClassMediaOwner::MEDIA_PAUSED:
@@ -425,7 +427,6 @@ void LLPanelPrimMediaControls::updateShape()
mPauseCtrl->setVisible(FALSE);
mPlayCtrl->setEnabled(TRUE);
mPlayCtrl->setVisible(has_focus);
- mMediaStopCtrl->setEnabled(FALSE);
break;
}
}
@@ -508,12 +509,10 @@ void LLPanelPrimMediaControls::updateShape()
{
mMediaProgressPanel->setVisible(true);
mMediaProgressBar->setPercent(media_plugin->getProgressPercent());
- gFocusMgr.setTopCtrl(mMediaProgressPanel);
}
- else if (mMediaProgressPanel->getVisible())
+ else
{
mMediaProgressPanel->setVisible(false);
- gFocusMgr.setTopCtrl(NULL);
}
}
@@ -599,12 +598,12 @@ void LLPanelPrimMediaControls::updateShape()
}
LLCoordGL screen_min;
- screen_min.mX = llround((F32)gViewerWindow->getWorldViewWidthRaw() * (min.mV[VX] + 1.f) * 0.5f);
- screen_min.mY = llround((F32)gViewerWindow->getWorldViewHeightRaw() * (min.mV[VY] + 1.f) * 0.5f);
+ screen_min.mX = llround((F32)gViewerWindow->getWorldViewWidthScaled() * (min.mV[VX] + 1.f) * 0.5f);
+ screen_min.mY = llround((F32)gViewerWindow->getWorldViewHeightScaled() * (min.mV[VY] + 1.f) * 0.5f);
LLCoordGL screen_max;
- screen_max.mX = llround((F32)gViewerWindow->getWorldViewWidthRaw() * (max.mV[VX] + 1.f) * 0.5f);
- screen_max.mY = llround((F32)gViewerWindow->getWorldViewHeightRaw() * (max.mV[VY] + 1.f) * 0.5f);
+ screen_max.mX = llround((F32)gViewerWindow->getWorldViewWidthScaled() * (max.mV[VX] + 1.f) * 0.5f);
+ screen_max.mY = llround((F32)gViewerWindow->getWorldViewHeightScaled() * (max.mV[VY] + 1.f) * 0.5f);
// grow panel so that screenspace bounding box fits inside "media_region" element of HUD
LLRect media_controls_rect;
@@ -613,14 +612,15 @@ void LLPanelPrimMediaControls::updateShape()
media_controls_rect.mBottom -= mMediaRegion->getRect().mBottom;
media_controls_rect.mTop += getRect().getHeight() - mMediaRegion->getRect().mTop;
media_controls_rect.mRight += getRect().getWidth() - mMediaRegion->getRect().mRight;
-
- LLRect old_hud_rect = media_controls_rect;
+
// keep all parts of HUD on-screen
media_controls_rect.intersectWith(getParent()->getLocalRect());
+ if (mCurrentZoom != ZOOM_NONE)
+ media_controls_rect.mBottom -= mMediaControlsStack->getRect().getHeight() + mMediaProgressPanel->getRect().getHeight();
// clamp to minimum size, keeping centered
media_controls_rect.setCenterAndSize(media_controls_rect.getCenterX(), media_controls_rect.getCenterY(),
- llmax(MIN_HUD_WIDTH, media_controls_rect.getWidth()), llmax(MIN_HUD_HEIGHT, media_controls_rect.getHeight()));
+ llmax(mMinWidth, media_controls_rect.getWidth()), llmax(mMinHeight, media_controls_rect.getHeight()));
setShape(media_controls_rect, true);
@@ -968,17 +968,17 @@ void LLPanelPrimMediaControls::updateZoom()
}
case ZOOM_FAR:
{
- zoom_padding = ZOOM_FAR_PADDING;
+ zoom_padding = mZoomFarPadding;
break;
}
case ZOOM_MEDIUM:
{
- zoom_padding = ZOOM_MEDIUM_PADDING;
+ zoom_padding = mZoomMediumPadding;
break;
}
case ZOOM_NEAR:
{
- zoom_padding = ZOOM_NEAR_PADDING;
+ zoom_padding = mZoomNearPadding;
break;
}
default:
@@ -988,9 +988,16 @@ void LLPanelPrimMediaControls::updateZoom()
}
}
- if (zoom_padding > 0.0f)
+ if (zoom_padding > 0.0f)
+ {
LLViewerMediaFocus::setCameraZoom(getTargetObject(), mTargetObjectNormal, zoom_padding);
+ }
+
+ // Remember the object ID/face we zoomed into, so we can update the zoom icon appropriately
+ mZoomObjectID = mTargetObjectID;
+ mZoomObjectFace = mTargetObjectFace;
}
+
void LLPanelPrimMediaControls::onScrollUp(void* user_data)
{
LLPanelPrimMediaControls* this_panel = static_cast<LLPanelPrimMediaControls*> (user_data);
diff --git a/indra/newview/llpanelprimmediacontrols.h b/indra/newview/llpanelprimmediacontrols.h
index accfb72a04..fe8f100abe 100644
--- a/indra/newview/llpanelprimmediacontrols.h
+++ b/indra/newview/llpanelprimmediacontrols.h
@@ -160,6 +160,11 @@ private:
LLUICtrl *mRightBookend;
LLUIImage* mBackgroundImage;
F32 mSkipStep;
+ S32 mMinWidth;
+ S32 mMinHeight;
+ F32 mZoomNearPadding;
+ F32 mZoomMediumPadding;
+ F32 mZoomFarPadding;
LLUICtrl *mMediaPanelScroll;
LLButton *mScrollUpCtrl;
@@ -190,6 +195,9 @@ private:
S32 mTargetObjectFace;
LLUUID mTargetImplID;
LLVector3 mTargetObjectNormal;
+
+ LLUUID mZoomObjectID;
+ S32 mZoomObjectFace;
};
#endif // LL_PANELPRIMMEDIACONTROLS_H
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 68dc1b511f..07a1214b4f 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -87,7 +87,7 @@ LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* av
for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++)
{
const LLPointer<LLSpeaker>& speakerp = *it;
- group_members.push_back(speakerp->mID);
+ addAvatarIDExceptAgent(group_members, speakerp->mID);
if ( speakerp->mIsModerator )
{
mModeratorList.insert(speakerp->mID);
@@ -192,7 +192,7 @@ bool LLParticipantList::onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, co
return true;
}
- group_members.push_back(uu_id);
+ addAvatarIDExceptAgent(group_members, uu_id);
// Mark AvatarList as dirty one
mAvatarList->setDirty();
sort();
@@ -260,6 +260,15 @@ void LLParticipantList::sort()
}
}
+// static
+void LLParticipantList::addAvatarIDExceptAgent(std::vector<LLUUID>& existing_list, const LLUUID& avatar_id)
+{
+ if (gAgent.getID() != avatar_id)
+ {
+ existing_list.push_back(avatar_id);
+ }
+}
+
//
// LLParticipantList::SpeakerAddListener
//
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
index ce61dd9b96..460cf4b9ef 100644
--- a/indra/newview/llparticipantlist.h
+++ b/indra/newview/llparticipantlist.h
@@ -132,6 +132,11 @@ class LLParticipantList
void onAvatarListDoubleClicked(LLAvatarList* list);
void onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param);
+ /**
+ * Adds specified avatar ID to the existing list if it is not Agent's ID
+ */
+ static void addAvatarIDExceptAgent(std::vector<LLUUID>& existing_list, const LLUUID& avatar_id);
+
LLSpeakerMgr* mSpeakerMgr;
LLAvatarList* mAvatarList;
diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp
index fd74c9c2fc..f639c841e7 100644
--- a/indra/newview/llviewermediafocus.cpp
+++ b/indra/newview/llviewermediafocus.cpp
@@ -138,15 +138,6 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac
}
else
{
- if(mFocusedImplID.notNull())
- {
- if(mMediaControls.get())
- {
- // Don't reset camera zoom by default, just tell the controls they're no longer controlling zoom.
- mMediaControls.get()->resetZoomLevel(false);
- }
- }
-
if(hasFocus())
{
gFocusMgr.setKeyboardFocus(NULL);
diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
index 4434fe7403..04696ca2e7 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
@@ -8,32 +8,49 @@
save_visibility="true"
single_instance="true"
width="282">
+ <string
+ name="title_nearby">
+ NEARBY VOICE
+ </string>
+ <string
+ name="title_group">
+ Group Call with [GROUP]
+ </string>
+ <string
+ name="title_adhoc">
+ Conference Call
+ </string>
+ <string
+ name="no_one_near">
+ No one near
+ </string>
<panel
bevel_style="in"
follows="left|right|top"
- height="73"
+ height="62"
layout="topleft"
left="0"
name="control_panel"
- width="285">
+ width="282">
<panel
- height="20"
+ height="18"
+ follows="top|left|right"
layout="topleft"
left="10"
name="my_panel"
- width="262">
+ width="263">
<avatar_icon
enabled="false"
follows="left|top"
height="18"
- image_name="Generic_Person"
+ default_icon_name="Generic_Person"
layout="topleft"
left="0"
name="user_icon"
top="0"
width="18" />
<text
- follows="top|left"
+ follows="top|left|right"
font="SansSerifSmallBold"
height="16"
layout="topleft"
@@ -41,8 +58,20 @@
name="user_text"
text_color="white"
top="4"
+ use_ellipses="true"
value="Mya Avatar:"
- width="80" />
+ width="210" />
+ <output_monitor
+ auto_update="true"
+ draw_border="false"
+ follows="right"
+ height="16"
+ layout="topleft"
+ name="speaking_indicator"
+ right="-1"
+ top="2"
+ visible="true"
+ width="20" />
</panel>
<layout_stack
bottom="10"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 49276172d5..cb0614797a 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5783,6 +5783,26 @@ Server Error: Media update or get failed.
yestext="OK"/>
</notification>
+ <notification
+ icon="alertmodal.tga"
+ name="TextChatIsMutedByModerator"
+ type="alertmodal">
+Your text chat has been muted by moderator.
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="VoiceIsMutedByModerator"
+ type="alertmodal">
+Your voice has been muted by moderator.
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
<notification
icon="alertmodal.tga"
name="ConfirmClearTeleportHistory"
diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
index 0a5812882d..0a3fd1699f 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -76,7 +76,6 @@
visible="false"
width="100" />
<button
- enabled="false"
bottom="10"
height="20"
label="Voice Controls"
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
index e00f654750..89f1fe35ca 100644
--- a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
@@ -221,12 +221,23 @@
width="50" />
<text bottom_delta="0" follows="top|left" height="15" left_delta="60" name="X_label">
- X
+ X
</text>
- <spinner bottom_delta="0"
- decimal_digits="0" enabled="true" follows="left|top" height="16"
- increment="1" initial_val="256" label="" label_width="0"
- left_delta="20" max_val="2048" min_val="0" mouse_opaque="true"
- name="height_pixels" width="50" />
+ <spinner
+ bottom_delta="0"
+ decimal_digits="0"
+ enabled="true"
+ follows="left|top"
+ height="16"
+ increment="1"
+ initial_val="256"
+ label=""
+ label_width="0"
+ left_delta="20"
+ max_val="2048"
+ min_val="0"
+ mouse_opaque="true"
+ name="height_pixels"
+ width="50" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
index af4c01185a..8b86067b03 100644
--- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
@@ -9,6 +9,11 @@
width="800">
<string name="control_background_image_name">Inspector_Background</string>
<string name="skip_step">0.2</string>
+ <string name="min_width">400</string>
+ <string name="min_height">120</string>
+ <string name="zoom_near_padding">1.0</string>
+ <string name="zoom_medium_padding">1.25</string>
+ <string name="zoom_far_padding">1.5</string>
<panel
name="media_region"
bottom="125"
@@ -20,7 +25,7 @@
name="media_controls"
follows="left|right"
animate="false"
- height="32"
+ height="26"
layout="topleft"
left="0"
orientation="horizontal"
@@ -235,18 +240,17 @@
width="190"
min_width="90">
<!--
- RE-ENABLE THIS WHEN WE HAVE A HISTORY DROP-DOWN AGAIN
-
-<combo_box
-name="media_address_url"
-allow_text_entry="true"
-height="22"
-layout="topleft"
-max_chars="1024"
-tool_tip = "Media URL"
-<combo_box.commit_callback
-function="MediaCtrl.CommitURL" />
-</combo_box>
+ RE-ENABLE THIS WHEN WE HAVE A HISTORY DROP-DOWN AGAIN
+ <combo_box
+ name="media_address_url"
+ allow_text_entry="true"
+ height="22"
+ layout="topleft"
+ max_chars="1024"
+ tool_tip = "Media URL">
+ <combo_box.commit_callback
+ function="MediaCtrl.CommitURL" />
+ </combo_box>
-->
<line_editor
name="media_address_url"
@@ -304,17 +308,17 @@ function="MediaCtrl.CommitURL" />
user_resize="false"
follows="left|right|top|bottom"
layout="topleft"
+ height="16"
min_width="100"
width="200">
<slider_bar
name="media_play_slider"
follows="left|right|top"
- height="22"
+ height="16"
increment="0.05"
initial_value="0.5"
layout="topleft"
tool_tip="Movie play progress"
- top="8"
min_width="100"
width="200">
<slider_bar.commit_callback
@@ -619,7 +623,7 @@ function="MediaCtrl.CommitURL" />
</layout_stack>
<layout_stack
follows="left|right|bottom"
- height="32"
+ height="20"
layout="topleft"
animate="false"
left="0"
@@ -632,7 +636,7 @@ function="MediaCtrl.CommitURL" />
user_resize="false" />
<panel
name="media_progress_indicator"
- height="22"
+ height="20"
layout="topleft"
left="0"
top="0"
@@ -644,6 +648,7 @@ function="MediaCtrl.CommitURL" />
name="media_progress_bar"
color_bar="1 1 1 0.96"
follows="left|right|top"
+ top="5"
height="8"
layout="topleft"
left="0"