summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/app_settings/logcontrol.xml1
-rw-r--r--indra/newview/llavataractions.cpp1
-rw-r--r--indra/newview/llavatariconctrl.cpp10
-rw-r--r--indra/newview/llavatariconctrl.h3
-rw-r--r--indra/newview/llbottomtray.cpp407
-rw-r--r--indra/newview/llbottomtray.h33
-rw-r--r--indra/newview/llchathistory.cpp23
-rw-r--r--indra/newview/llchathistory.h4
-rw-r--r--indra/newview/llchiclet.cpp8
-rw-r--r--indra/newview/llchiclet.h3
-rw-r--r--indra/newview/llimfloater.cpp24
-rw-r--r--indra/newview/llimview.cpp34
-rw-r--r--indra/newview/llnearbychatbar.cpp3
-rw-r--r--indra/newview/llnotificationofferhandler.cpp5
-rw-r--r--indra/newview/llpanelclassified.cpp25
-rw-r--r--indra/newview/llpanelclassified.h9
-rw-r--r--indra/newview/llpanelgrouproles.cpp6
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp7
-rw-r--r--indra/newview/llpanelpicks.cpp5
-rw-r--r--indra/newview/llsidetray.cpp10
-rw-r--r--indra/newview/llsidetray.h3
-rw-r--r--indra/newview/lltoastimpanel.cpp14
-rw-r--r--indra/newview/llviewermessage.cpp27
-rw-r--r--indra/newview/skins/default/colors.xml2
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_avatar_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray.xml33
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_general.xml20
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml60
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_land_money.xml40
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_notices.xml16
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_roles.xml85
-rw-r--r--indra/newview/skins/default/xui/en/panel_instant_message.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_picks.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_side_tray.xml6
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml1
-rw-r--r--indra/newview/skins/default/xui/en/widgets/avatar_icon.xml4
38 files changed, 588 insertions, 354 deletions
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index d7bb64ce8a..ec80d2d014 100644
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -34,6 +34,7 @@
</array>
<key>classes</key>
<array>
+ <string>LLBottomTray</string>
</array>
<key>files</key>
<array>
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 4456e0aa74..f631978565 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -54,6 +54,7 @@
#include "llmutelist.h"
#include "llrecentpeople.h"
#include "llsidetray.h"
+#include "lltrans.h"
#include "llviewerobjectlist.h"
#include "llviewermessage.h" // for handle_lure
#include "llviewerregion.h"
diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp
index 46902006a6..327d80ba34 100644
--- a/indra/newview/llavatariconctrl.cpp
+++ b/indra/newview/llavatariconctrl.cpp
@@ -143,7 +143,8 @@ void LLAvatarIconIDCache::remove (const LLUUID& avatar_id)
LLAvatarIconCtrl::Params::Params()
: avatar_id("avatar_id"),
- draw_tooltip("draw_tooltip", true)
+ draw_tooltip("draw_tooltip", true),
+ default_icon_name("default_icon_name")
{
name = "avatar_icon";
}
@@ -151,7 +152,8 @@ LLAvatarIconCtrl::Params::Params()
LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p)
: LLIconCtrl(p),
- mDrawTooltip(p.draw_tooltip)
+ mDrawTooltip(p.draw_tooltip),
+ mDefaultIconName(p.default_icon_name)
{
mPriority = LLViewerFetchedTexture::BOOST_ICON;
@@ -193,7 +195,7 @@ LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p)
}
else
{
- LLIconCtrl::setValue("default_profile_picture.j2c");
+ LLIconCtrl::setValue(mDefaultIconName);
}
}
@@ -260,7 +262,7 @@ bool LLAvatarIconCtrl::updateFromCache()
}
else
{
- LLIconCtrl::setValue("default_profile_picture.j2c");
+ LLIconCtrl::setValue(mDefaultIconName);
}
return true;
diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h
index 5eb830df4b..38616b7852 100644
--- a/indra/newview/llavatariconctrl.h
+++ b/indra/newview/llavatariconctrl.h
@@ -74,6 +74,7 @@ public:
{
Optional <LLUUID> avatar_id;
Optional <bool> draw_tooltip;
+ Optional <std::string> default_icon_name;
Params();
};
@@ -106,7 +107,7 @@ protected:
std::string mFirstName;
std::string mLastName;
bool mDrawTooltip;
-
+ std::string mDefaultIconName;
bool updateFromCache();
};
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 832694873f..204d7d23fa 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -50,6 +50,8 @@ LLBottomTray::LLBottomTray(const LLSD&)
mSpeakBtn(NULL),
mNearbyChatBar(NULL),
mToolbarStack(NULL)
+, mMovementButton(NULL)
+// Add more members
{
mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
@@ -72,6 +74,8 @@ LLBottomTray::LLBottomTray(const LLSD&)
//destroyed LLBottomTray requires some subsystems that are long gone
//LLUI::getRootView()->addChild(this);
+ initStateProcessedObjectMap();
+
// Necessary for focus movement among child controls
setFocusRoot(TRUE);
}
@@ -254,10 +258,11 @@ void LLBottomTray::showSnapshotButton(BOOL visible)
namespace
{
- const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel";
- const std::string& PANEL_CHATBAR_NAME = "chat_bar";
- const std::string& PANEL_MOVEMENT_NAME = "movement_panel";
- const std::string& PANEL_CAMERA_NAME = "cam_panel";
+ const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel";
+ const std::string& PANEL_CHATBAR_NAME = "chat_bar";
+ const std::string& PANEL_MOVEMENT_NAME = "movement_panel";
+ const std::string& PANEL_CAMERA_NAME = "cam_panel";
+ const std::string& PANEL_GESTURE_NAME = "gesture_panel";
}
BOOL LLBottomTray::postBuild()
@@ -283,159 +288,393 @@ BOOL LLBottomTray::postBuild()
return TRUE;
}
+void LLBottomTray::log(LLView* panel, const std::string& descr)
+{
+ if (NULL == panel) return;
+ LLView* layout = panel->getParent();
+ lldebugs << descr << ": "
+ << "panel: " << panel->getName()
+ << ", rect: " << panel->getRect()
+
+
+ << "layout: " << layout->getName()
+ << ", rect: " << layout->getRect()
+ << llendl
+ ;
+}
+
void LLBottomTray::verifyChildControlsSizes()
{
LLRect rect = mChicletPanel->getRect();
+ /*
if (rect.getWidth() < mChicletPanel->getMinWidth())
{
+ llwarns << "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ: chiclet panel less then min" << llendl;
mChicletPanel->reshape(mChicletPanel->getMinWidth(), rect.getHeight());
}
-
+*/
rect = mNearbyChatBar->getRect();
+/*
if (rect.getWidth() < mNearbyChatBar->getMinWidth())
{
+ llwarns << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel less then min" << llendl;
mNearbyChatBar->reshape(mNearbyChatBar->getMinWidth(), rect.getHeight());
}
- else if (rect.getWidth() > mNearbyChatBar->getMaxWidth())
+ else
+*/
+ if (rect.getWidth() > mNearbyChatBar->getMaxWidth())
{
+ llerrs << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel more then max width" << llendl;
+
rect.setLeftTopAndSize(rect.mLeft, rect.mTop, mNearbyChatBar->getMaxWidth(), rect.getHeight());
mNearbyChatBar->reshape(mNearbyChatBar->getMaxWidth(), rect.getHeight());
mNearbyChatBar->setRect(rect);
}
}
-
+#define __FEATURE_EXT_991
void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
{
+ lldebugs << "****************************************" << llendl;
+
+ S32 current_width = getRect().getWidth();
+ lldebugs << "Reshaping: "
+ << ", width: " << width
+ << ", height: " << height
+ << ", called_from_parent: " << called_from_parent
+ << ", cur width: " << current_width
+ << ", cur height: " << getRect().getHeight()
+ << llendl;
+
+ if (mNearbyChatBar) log(mNearbyChatBar, "before");
+ if (mChicletPanel) log(mChicletPanel, "before");
if (mChicletPanel && mToolbarStack && mNearbyChatBar)
{
-#ifdef __FEATURE_EXT_991__
- BOOL shrink = width < getRect().getWidth();
- const S32 MIN_RENDERED_CHARS = 3;
-#endif
+ mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
+ verifyChildControlsSizes();
+ updateResizeState(width, current_width);
+ }
- verifyChildControlsSizes();
- updateResizeState(width, height);
+ LLPanel::reshape(width, height, called_from_parent);
+
+
+ if (mNearbyChatBar) log(mNearbyChatBar, "after");
+ if (mChicletPanel) log(mChicletPanel, "after");
+}
+
+void LLBottomTray::updateResizeState(S32 new_width, S32 cur_width)
+{
+ mResizeState = RS_NORESIZE;
+ MASK compensative_view_item_mask = RS_CHATBAR_INPUT;
+ LLPanel* compansative_view = mNearbyChatBar;
+
+ S32 delta_width = new_width - cur_width;
+// if (delta_width == 0) return;
+ bool shrink = new_width < cur_width;
+
+ const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
+ const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();
+
+ const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();
+ const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();
+ const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth();
+
+ lldebugs << "chatbar_panel_width: " << chatbar_panel_width
+ << ", chatbar_panel_min_width: " << chatbar_panel_min_width
+ << ", chatbar_panel_max_width: " << chatbar_panel_max_width
+ << ", chiclet_panel_width: " << chiclet_panel_width
+ << ", chiclet_panel_min_width: " << chiclet_panel_min_width
+ << llendl;
+
+ bool still_should_be_processed = true;
+ // bottom tray is narrowed
+ if (shrink)
+ {
+ S32 compensative_delta_width = 0;
+ if (chiclet_panel_width > chiclet_panel_min_width)
+ {
+ // we have some space to decrease chiclet panel
+ S32 panel_delta_min = chiclet_panel_width - chiclet_panel_min_width;
+ mResizeState |= RS_CHICLET_PANEL;
+
+ S32 delta_panel = llmin(-delta_width, panel_delta_min);
+
+ lldebugs << "delta_width: " << delta_width
+ << ", panel_delta_min: " << panel_delta_min
+ << ", delta_panel: " << delta_panel
+ << llendl;
+
+ // is chiclet panel width enough to process resizing?
+ delta_width += panel_delta_min;
- switch (mResizeState)
+ still_should_be_processed = delta_width < 0;
+
+ mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - delta_panel, mChicletPanel->getParent()->getRect().getHeight());
+ log(mChicletPanel, "after processing panel decreasing via chiclet panel");
+
+ lldebugs << "RS_CHICLET_PANEL"
+ << ", delta_width: " << delta_width
+ << llendl;
+ }
+
+ if (still_should_be_processed && chatbar_panel_width > chatbar_panel_min_width)
{
- case STATE_CHICLET_PANEL:
- mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
+ // we have some space to decrease chatbar panel
+ S32 panel_delta_min = chatbar_panel_width - chatbar_panel_min_width;
+ mResizeState |= RS_CHATBAR_INPUT;
- mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE);
- mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE);
- mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
+ S32 delta_panel = llmin(-delta_width, panel_delta_min);
- break;
- case STATE_CHATBAR_INPUT:
- mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, TRUE);
+ // is chatbar panel width enough to process resizing?
+ delta_width += panel_delta_min;
+
- mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, FALSE);
- mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE);
- mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
+ still_should_be_processed = delta_width < 0;
- break;
+ mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - delta_panel, mNearbyChatBar->getRect().getHeight());
-#ifdef __FEATURE_EXT_991__
+ lldebugs << "RS_CHATBAR_INPUT"
+ << ", delta_panel: " << delta_panel
+ << ", delta_width: " << delta_width
+ << llendl;
- case STATE_BUTTONS:
- mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, TRUE);
- mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, TRUE);
+ log(mChicletPanel, "after nearby was processed");
- mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, FALSE);
- mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE);
+ }
+ if (still_should_be_processed)
+ {
+ mResizeState |= compensative_view_item_mask;
- if (shrink)
+ if (mSnapshotPanel->getVisible())
{
+ mResizeState |= RS_BUTTON_SNAPSHOT;
+ delta_width += mSnapshotPanel->getRect().getWidth();
- if (mSnapshotPanel->getVisible())
+ if (delta_width > 0)
{
- showSnapshotButton(FALSE);
+ compensative_delta_width += delta_width;
}
+ lldebugs << "RS_BUTTON_SNAPSHOT"
+ << ", compensative_delta_width: " << compensative_delta_width
+ << ", delta_width: " << delta_width
+ << llendl;
+ showSnapshotButton(false);
+ }
- if (mCamPanel->getVisible() && mCamButton->getLastDrawCharsCount() < MIN_RENDERED_CHARS)
+ if (delta_width < 0 && mCamPanel->getVisible())
+ {
+ mResizeState |= RS_BUTTON_CAMERA;
+ delta_width += mCamPanel->getRect().getWidth();
+ if (delta_width > 0)
{
- showCameraButton(FALSE);
+ compensative_delta_width += delta_width;
}
+ lldebugs << "RS_BUTTON_CAMERA"
+ << ", compensative_delta_width: " << compensative_delta_width
+ << ", delta_width: " << delta_width
+ << llendl;
+ showCameraButton(false);
+ }
- if (mMovementPanel->getVisible() && mMovementButton->getLastDrawCharsCount() < MIN_RENDERED_CHARS)
+ if (delta_width < 0 && mMovementPanel->getVisible())
+ {
+ mResizeState |= RS_BUTTON_MOVEMENT;
+ delta_width += mMovementPanel->getRect().getWidth();
+ if (delta_width > 0)
{
- showMoveButton(FALSE);
+ compensative_delta_width += delta_width;
}
-
+ lldebugs << "RS_BUTTON_MOVEMENT"
+ << ", compensative_delta_width: " << compensative_delta_width
+ << ", delta_width: " << delta_width
+ << llendl;
+ showMoveButton(false);
}
- else
- {
- showMoveButton(TRUE);
- mMovementPanel->draw();
- if (mMovementButton->getLastDrawCharsCount() >= MIN_RENDERED_CHARS)
- {
- showMoveButton(TRUE);
- }
- else
+ if (delta_width < 0 && mGesturePanel->getVisible())
+ {
+ mResizeState |= RS_BUTTON_GESTURES;
+ delta_width += mGesturePanel->getRect().getWidth();
+ if (delta_width > 0)
{
- showMoveButton(FALSE);
+ compensative_delta_width += delta_width;
}
+ lldebugs << "RS_BUTTON_GESTURES"
+ << ", compensative_delta_width: " << compensative_delta_width
+ << ", delta_width: " << delta_width
+ << llendl;
+ showGestureButton(false);
+ }
+
+ if (delta_width < 0)
+ {
+ llwarns << "WARNING: there is no enough room for bottom tray, resizing still should be processed" << llendl;
}
- break;
-#endif
- default:
- break;
+ if (compensative_delta_width != 0)
+ {
+ if (compansative_view) log(compansative_view, "before applying compensative width: ");
+ compansative_view->reshape(compansative_view->getRect().getWidth() + compensative_delta_width, compansative_view->getRect().getHeight() );
+ if (compansative_view) log(compansative_view, "after applying compensative width: ");
+ lldebugs << compensative_delta_width << llendl;
+
+ }
}
}
+ // bottom tray is widen
+ else
+ {
+ processWidthIncreased(delta_width);
+ }
- LLPanel::reshape(width, height, called_from_parent);
+ lldebugs << "New resize state: " << mResizeState << llendl;
}
-void LLBottomTray::updateResizeState(S32 width, S32 height)
+void LLBottomTray::processWidthDecreased(S32 delta_width)
{
- mResizeState = STATE_BUTTONS;
- const S32 chiclet_panel_width = mChicletPanel->getRect().getWidth();
+}
+
+void LLBottomTray::processWidthIncreased(S32 delta_width)
+{
+ const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();
const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();
const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();
const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth();
- // bottom tray is narrowed
- if (width < getRect().getWidth())
+ const S32 chatbar_available_shrink_width = chatbar_panel_width - chatbar_panel_min_width;
+ const S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width;
+
+ // how many room we have to show hidden buttons
+ S32 available_width = delta_width + chatbar_available_shrink_width + available_width_chiclet;
+ S32 buttons_required_width = 0; //How many room will take shown buttons
+
+ if (available_width > 0)
{
- if (chiclet_panel_width > chiclet_panel_min_width)
- {
- mResizeState = STATE_CHICLET_PANEL;
- }
- else if (chatbar_panel_width > chatbar_panel_min_width)
- {
- mResizeState = STATE_CHATBAR_INPUT;
- }
- else
- {
- mResizeState = STATE_BUTTONS;
- }
+ lldebugs << "Trying to process: RS_BUTTON_GESTURES" << llendl;
+ processShowButton(RS_BUTTON_GESTURES, &available_width, &buttons_required_width);
}
- // bottom tray is widen
- else
+
+ if (available_width > 0)
+ {
+ lldebugs << "Trying to process: RS_BUTTON_MOVEMENT" << llendl;
+ processShowButton(RS_BUTTON_MOVEMENT, &available_width, &buttons_required_width);
+ }
+
+ if (available_width > 0)
+ {
+ lldebugs << "Trying to process: RS_BUTTON_CAMERA" << llendl;
+ processShowButton(RS_BUTTON_CAMERA, &available_width, &buttons_required_width);
+ }
+
+ if (available_width > 0)
+ {
+ lldebugs << "Trying to process: RS_BUTTON_SNAPSHOT" << llendl;
+ processShowButton(RS_BUTTON_SNAPSHOT, &available_width, &buttons_required_width);
+ }
+
+ // if we have to show some buttons but whidth increasing is not enough...
+ if (buttons_required_width > 0 && delta_width < buttons_required_width)
{
-#ifdef __FEATURE_EXT_991__
- if (!mMovementPanel->getVisible())
+ // ... let's shrink nearby chat & chiclet panels
+ S32 required_to_process_width = buttons_required_width;
+
+ // 1. use delta width of resizing
+ required_to_process_width -= delta_width;
+
+ // 2. use width available via decreasing of nearby chat panel
+ S32 chatbar_shrink_width = required_to_process_width;
+ if (chatbar_available_shrink_width < chatbar_shrink_width)
{
- mResizeState = STATE_BUTTONS;
+ chatbar_shrink_width = chatbar_available_shrink_width;
}
- else
-#endif
- if (chatbar_panel_width < chatbar_panel_max_width)
+
+ log(mNearbyChatBar, "increase width: before applying compensative width: ");
+ mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - chatbar_shrink_width, mNearbyChatBar->getRect().getHeight() );
+ if (mNearbyChatBar) log(mNearbyChatBar, "after applying compensative width: ");
+ lldebugs << chatbar_shrink_width << llendl;
+
+ // 3. use width available via decreasing of chiclet panel
+ required_to_process_width -= chatbar_shrink_width;
+
+ if (required_to_process_width > 0)
{
- mResizeState = STATE_CHATBAR_INPUT;
+ mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight());
+ log(mChicletPanel, "after applying compensative width for chiclets: ");
+ lldebugs << required_to_process_width << llendl;
}
- else
+
+ }
+
+ // shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels
+ delta_width -= buttons_required_width;
+
+ // how many space can nearby chatbar take?
+ S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth();
+ if (delta_width > 0 && chatbar_panel_width_ < chatbar_panel_max_width)
+ {
+ mResizeState |= RS_CHATBAR_INPUT;
+ S32 delta_panel_max = chatbar_panel_max_width - chatbar_panel_width_;
+ S32 delta_panel = llmin(delta_width, delta_panel_max);
+ delta_width -= delta_panel_max;
+ mNearbyChatBar->reshape(chatbar_panel_width_ + delta_panel, mNearbyChatBar->getRect().getHeight());
+ }
+}
+
+bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width)
+{
+ LLPanel* panel = mStateProcessedObjectMap[shown_object_type];
+ if (NULL == panel)
+ {
+ lldebugs << "There is no object to process for state: " << shown_object_type << llendl;
+ return false;
+ }
+ bool can_be_shown = canButtonBeShown(panel);
+ if (can_be_shown)
+ {
+ //validate if we have enough room to show this button
+ const S32 required_width = panel->getRect().getWidth();
+ can_be_shown = *available_width >= required_width;
+ if (can_be_shown)
{
- mResizeState = STATE_CHICLET_PANEL;
+ *available_width -= required_width;
+ *buttons_required_width += required_width;
+
+ switch (shown_object_type)
+ {
+ case RS_BUTTON_GESTURES: showGestureButton(true); break;
+ case RS_BUTTON_MOVEMENT: showMoveButton(true); break;
+ case RS_BUTTON_CAMERA: showCameraButton(true); break;
+ case RS_BUTTON_SNAPSHOT: showSnapshotButton(true); break;
+ default:
+ llwarns << "Unexpected type of button to be shown: " << shown_object_type << llendl;
+ }
+
+ lldebugs << "processing object type: " << shown_object_type
+ << ", buttons_required_width: " << buttons_required_width
+ << llendl;
}
}
+ return can_be_shown;
+}
+bool LLBottomTray::canButtonBeShown(LLPanel* panel) const
+{
+ bool can_be_shown = !panel->getVisible();
+ if (can_be_shown)
+ {
+ // *TODO: mantipov: synchronize with situation when button was hidden via context menu;
+ }
+ return can_be_shown;
+}
- // TODO: finish implementation
+void LLBottomTray::initStateProcessedObjectMap()
+{
+ mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_GESTURES, mGesturePanel));
+ mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, mMovementPanel));
+ mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, mCamPanel));
+ mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, mSnapshotPanel));
}
+//EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index 02588a1975..6509fea63d 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -52,6 +52,7 @@ class LLBottomTray
, public LLPanel
, public LLIMSessionObserver
{
+ LOG_CLASS(LLBottomTray);
friend class LLSingleton<LLBottomTray>;
public:
~LLBottomTray();
@@ -82,18 +83,32 @@ public:
void showSnapshotButton(BOOL visible);
private:
-
- enum EResizeState
+ typedef enum e_resize_status_type
{
- STATE_CHICLET_PANEL = 1,
- STATE_CHATBAR_INPUT,
- STATE_BUTTONS
- };
-
- void updateResizeState(S32 width, S32 height);
+ RS_NORESIZE = 0x0000
+ , RS_CHICLET_PANEL = 0x0001
+ , RS_CHATBAR_INPUT = 0x0002
+ , RS_BUTTON_SNAPSHOT = 0x0004
+ , RS_BUTTON_CAMERA = 0x0008
+ , RS_BUTTON_MOVEMENT = 0x0010
+ , RS_BUTTON_GESTURES = 0x0020
+ , RS_BUTTON_SPEAK = 0x0040
+ , RS_RESIZABLE_BUTTONS = /*RS_BUTTON_SNAPSHOT | */RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES
+ }EResizeState;
+
+ void updateResizeState(S32 new_width, S32 cur_width);
void verifyChildControlsSizes();
+ void processWidthDecreased(S32 delta_width);
+ void processWidthIncreased(S32 delta_width);
+ void log(LLView* panel, const std::string& descr);
+ bool processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width);
+ bool canButtonBeShown(LLPanel* panel) const;
+ void initStateProcessedObjectMap();
+
+ MASK mResizeState;
- EResizeState mResizeState;
+ typedef std::map<EResizeState, LLPanel*> state_object_map_t;
+ state_object_map_t mStateProcessedObjectMap;
protected:
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 2ccd6b7d35..d1922cfd6e 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -47,7 +47,6 @@
#include "llmutelist.h"
static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
-static const std::string MESSAGE_USERNAME_DATE_SEPARATOR(" ----- ");
std::string formatCurrentTime()
{
@@ -175,7 +174,7 @@ public:
const std::string& getFirstName() const { return mFirstName; }
const std::string& getLastName () const { return mLastName; }
- void setup(const LLChat& chat)
+ void setup(const LLChat& chat,const LLStyle::Params& style_params)
{
mAvatarID = chat.mFromID;
mSourceType = chat.mSourceType;
@@ -185,8 +184,11 @@ public:
mSourceType = CHAT_SOURCE_SYSTEM;
}
-
LLTextBox* userName = getChild<LLTextBox>("user_name");
+
+ LLUIColor color = style_params.color;
+ userName->setReadOnlyColor(color);
+ userName->setColor(color);
if(!chat.mFromName.empty())
{
@@ -198,6 +200,7 @@ public:
std::string SL = LLTrans::getString("SECOND_LIFE");
userName->setValue(SL);
}
+
LLTextBox* timeBox = getChild<LLTextBox>("time_box");
timeBox->setValue(formatCurrentTime());
@@ -323,17 +326,17 @@ LLView* LLChatHistory::getSeparator()
return separator;
}
-LLView* LLChatHistory::getHeader(const LLChat& chat)
+LLView* LLChatHistory::getHeader(const LLChat& chat,const LLStyle::Params& style_params)
{
LLChatHistoryHeader* header = LLChatHistoryHeader::createInstance(mMessageHeaderFilename);
- header->setup(chat);
+ header->setup(chat,style_params);
return header;
}
void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& style_params)
{
LLView* view = NULL;
- std::string view_text;
+ std::string view_text = "\n[" + formatCurrentTime() + "] " + chat.mFromName + ": ";
LLInlineViewSegment::Params p;
p.force_newline = true;
@@ -343,14 +346,12 @@ void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& sty
if (mLastFromName == chat.mFromName)
{
view = getSeparator();
- view_text = "\n";
p.top_pad = mTopSeparatorPad;
p.bottom_pad = mBottomSeparatorPad;
}
else
{
- view = getHeader(chat);
- view_text = chat.mFromName + MESSAGE_USERNAME_DATE_SEPARATOR + formatCurrentTime() + '\n';
+ view = getHeader(chat,style_params);
if (getText().size() == 0)
p.top_pad = 0;
else
@@ -370,10 +371,8 @@ void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& sty
appendWidget(p, view_text, false);
//Append the text message
- std::string message = chat.mText + '\n';
- appendText(message, FALSE, style_params);
+ appendText(chat.mText, FALSE, style_params);
mLastFromName = chat.mFromName;
blockUndo();
- setCursorAndScrollToEnd();
}
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index 3789ebff4e..f0944042af 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -94,11 +94,9 @@ class LLChatHistory : public LLTextEditor
LLView* getSeparator();
/**
* Builds a message header.
- * @param from owner of a message.
- * @param time time of a message.
* @return pointer to LLView header object.
*/
- LLView* getHeader(const LLChat& chat);
+ LLView* getHeader(const LLChat& chat,const LLStyle::Params& style_params);
public:
~LLChatHistory();
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 6e0654e157..b919195fb2 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -103,6 +103,7 @@ LLNotificationChiclet::LLNotificationChiclet(const Params& p)
// connect counter handlers to the signals
connectCounterUpdatersToSignal("notify");
connectCounterUpdatersToSignal("groupnotify");
+ connectCounterUpdatersToSignal("offer");
}
LLNotificationChiclet::~LLNotificationChiclet()
@@ -790,11 +791,13 @@ LLChicletPanel::Params::Params()
chiclet_padding = 3;
scrolling_offset = 40;
+/*
if (!min_width.isProvided())
{
// min_width = 4 chiclets + 3 paddings
- min_width = 179 + 3*chiclet_padding;
+ min_width = 180 + 3*chiclet_padding;
}
+*/
};
LLChicletPanel::LLChicletPanel(const Params&p)
@@ -808,6 +811,7 @@ LLChicletPanel::LLChicletPanel(const Params&p)
, mShowControls(true)
{
LLPanel::Params panel_params;
+ panel_params.follows.flags(FOLLOWS_LEFT | FOLLOWS_RIGHT);
mScrollArea = LLUICtrlFactory::create<LLPanel>(panel_params,this);
// important for Show/Hide Camera and Move controls menu in bottom tray to work properly
@@ -1058,7 +1062,7 @@ void LLChicletPanel::reshape(S32 width, S32 height, BOOL called_from_parent )
width, scroll_button_rect.mBottom));
mScrollArea->setRect(LLRect(scroll_button_rect.getWidth() + SCROLL_BUTTON_PAD,
height, width - scroll_button_rect.getWidth() - SCROLL_BUTTON_PAD, 0));
- mShowControls = width > mMinWidth;
+ mShowControls = width >= mMinWidth;
mScrollArea->setVisible(mShowControls);
trimChiclets();
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index e7afd7f08e..eab4a282f5 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -107,6 +107,7 @@ public:
{
draw_tooltip(FALSE);
mouse_opaque(FALSE);
+ default_icon_name("Generic_Person");
};
};
@@ -128,7 +129,7 @@ public:
Optional<std::string> default_icon;
Params()
- : default_icon("default_icon", "default_land_picture.j2c")
+ : default_icon("default_icon", "Generic_Group")
{
};
};
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 5a2331aa06..54fc6f02fb 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -479,11 +479,29 @@ void LLIMFloater::updateMessages()
LLStyle::Params style_params;
style_params.color(chat_color);
- LLChat chat(message);
+ LLChat chat;
chat.mFromID = from_id;
chat.mFromName = from;
- mChatHistory->appendWidgetMessage(chat, style_params);
+ //Handle IRC styled /me messages.
+ std::string prefix = message.substr(0, 4);
+ if (prefix == "/me " || prefix == "/me'")
+ {
+ if (from.size() > 0)
+ {
+ style_params.font.style = "ITALIC";
+ chat.mText = from + " ";
+ mChatHistory->appendWidgetMessage(chat, style_params);
+ }
+ message = message.substr(3);
+ style_params.font.style = "UNDERLINE";
+ mChatHistory->appendText(message, FALSE, style_params);
+ }
+ else
+ {
+ chat.mText = message;
+ mChatHistory->appendWidgetMessage(chat, style_params);
+ }
mLastMessageIndex = msg["index"].asInteger();
}
@@ -499,7 +517,7 @@ void LLIMFloater::onInputEditorFocusReceived( LLFocusableElement* caller, void*
LLIMModel::LLIMSession* im_session =
LLIMModel::instance().findIMSession(self->mSessionID);
//TODO: While disabled lllineeditor can receive focus we need to check if it is enabled (EK)
- if( im_session && im_session->mTextIMPossible && !self->mInputEditor->getEnabled())
+ if( im_session && im_session->mTextIMPossible && self->mInputEditor->getEnabled())
{
//in disconnected state IM input editor should be disabled
self->mInputEditor->setEnabled(!gDisconnected);
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 14f94d5a88..be5fbdbbf8 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -439,8 +439,11 @@ bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, co
addToHistory(session_id, from, from_id, utf8_text);
if (log2file) logToFile(session_id, from, from_id, utf8_text);
- //we do not count system messages
- if (from_id.notNull()) session->mNumUnread++;
+ //we do not count system messages and our messages
+ if (from_id.notNull() && from_id != gAgentID && SYSTEM_FROM != from)
+ {
+ session->mNumUnread++;
+ }
// notify listeners
LLSD arg;
@@ -651,22 +654,10 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
//local echo for the legacy communicate panel
std::string history_echo;
- std::string utf8_copy = utf8_text;
LLAgentUI::buildFullname(history_echo);
- // Look for IRC-style emotes here.
+ history_echo += ": " + utf8_text;
- std::string prefix = utf8_copy.substr(0, 4);
- if (prefix == "/me " || prefix == "/me'")
- {
- utf8_copy.replace(0,3,"");
- }
- else
- {
- history_echo += ": ";
- }
- history_echo += utf8_copy;
-
LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(im_session_id);
if (floater) floater->addHistoryLine(history_echo, LLUIColorTable::instance().getColor("IMChatColor"), true, gAgent.getID());
@@ -2347,15 +2338,6 @@ public:
BOOL is_linden = LLMuteList::getInstance()->isLinden(name);
std::string separator_string(": ");
- int message_offset=0;
-
- //Handle IRC styled /me messages.
- std::string prefix = message.substr(0, 4);
- if (prefix == "/me " || prefix == "/me'")
- {
- separator_string = "";
- message_offset = 3;
- }
chat.mMuted = is_muted && !is_linden;
chat.mFromID = from_id;
@@ -2372,7 +2354,7 @@ public:
{
saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());
}
- std::string buffer = saved + message.substr(message_offset);
+ std::string buffer = saved + message;
BOOL is_this_agent = FALSE;
if(from_id == gAgentID)
@@ -2391,7 +2373,7 @@ public:
ll_vector3_from_sd(message_params["position"]),
true);
- chat.mText = std::string("IM: ") + name + separator_string + saved + message.substr(message_offset);
+ chat.mText = std::string("IM: ") + name + separator_string + saved + message;
LLFloaterChat::addChat(chat, TRUE, is_this_agent);
//K now we want to accept the invitation
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index d54545971b..3993431311 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -260,6 +260,8 @@ bool LLNearbyChatBar::instanceExists()
void LLNearbyChatBar::draw()
{
+// TODO: mantipov: remove
+/*
LLRect rect = getRect();
S32 max_width = getMaxWidth();
@@ -269,6 +271,7 @@ void LLNearbyChatBar::draw()
reshape(rect.getWidth(), rect.getHeight(), FALSE);
setRect(rect);
}
+*/
displaySpeakingIndicator();
LLPanel::draw();
diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp
index 1bf7be1c4e..471dd28426 100644
--- a/indra/newview/llnotificationofferhandler.cpp
+++ b/indra/newview/llnotificationofferhandler.cpp
@@ -95,14 +95,9 @@ bool LLOfferHandler::processNotification(const LLSD& notify)
LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, notification->getPayload()["from_id"]);
if (!LLIMMgr::instance().hasSession(session_id))
{
- // create session with faked type to avoid creating chicklets
session_id = LLIMMgr::instance().addSession(
notification->getSubstitutions()["NAME"], IM_NOTHING_SPECIAL,
notification->getPayload()["from_id"]);
- if (session_id != LLUUID::null)
- {
- LLIMFloater::show(session_id);
- }
}
LLIMMgr::instance().addMessage(session_id, LLUUID(),
notification->getSubstitutions()["NAME"],
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index 5679233844..67a2704501 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -1167,7 +1167,9 @@ LLPanelClassifiedInfo* LLPanelClassifiedInfo::create()
BOOL LLPanelClassifiedInfo::postBuild()
{
- childSetAction("back_btn", boost::bind(&LLPanelClassifiedInfo::onExit, this), NULL);
+ childSetAction("back_btn", boost::bind(&LLPanelClassifiedInfo::onExit, this));
+ childSetAction("show_on_map_btn", boost::bind(&LLPanelClassifiedInfo::onMapClick, this));
+ childSetAction("teleport_btn", boost::bind(&LLPanelClassifiedInfo::onTeleportClick, this));
return TRUE;
}
@@ -1177,6 +1179,11 @@ void LLPanelClassifiedInfo::setExitCallback(const commit_callback_t& cb)
getChild<LLButton>("back_btn")->setClickedCallback(cb);
}
+void LLPanelClassifiedInfo::setEditClassifiedCallback(const commit_callback_t& cb)
+{
+ getChild<LLButton>("edit_btn")->setClickedCallback(cb);
+}
+
void LLPanelClassifiedInfo::onOpen(const LLSD& key)
{
LLUUID avatar_id = key["avatar_id"];
@@ -1216,6 +1223,7 @@ void LLPanelClassifiedInfo::processProperties(void* data, EAvatarProcessorType t
setDescription(c_info->description);
setSnapshotId(c_info->snapshot_id);
setParcelId(c_info->parcel_id);
+ setPosGlobal(c_info->pos_global);
setClassifiedLocation(createLocationText(c_info->parcel_name, c_info->sim_name, c_info->pos_global));
childSetValue("category", LLClassifiedInfo::sCategories[c_info->category]);
@@ -1325,6 +1333,21 @@ std::string LLPanelClassifiedInfo::createLocationText(
return location_text;
}
+void LLPanelClassifiedInfo::onMapClick()
+{
+ LLFloaterWorldMap::getInstance()->trackLocation(getPosGlobal());
+ LLFloaterReg::showInstance("world_map", "center");
+}
+
+void LLPanelClassifiedInfo::onTeleportClick()
+{
+ if (!getPosGlobal().isExactlyZero())
+ {
+ gAgent.teleportViaLocation(getPosGlobal());
+ LLFloaterWorldMap::getInstance()->trackLocation(getPosGlobal());
+ }
+}
+
void LLPanelClassifiedInfo::onExit()
{
LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(), this);
diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h
index 187bdbb37e..8b32495854 100644
--- a/indra/newview/llpanelclassified.h
+++ b/indra/newview/llpanelclassified.h
@@ -249,7 +249,9 @@ public:
void setInfoLoaded(bool loaded) { mInfoLoaded = loaded; }
- virtual void setExitCallback(const commit_callback_t& cb);
+ void setExitCallback(const commit_callback_t& cb);
+
+ void setEditClassifiedCallback(const commit_callback_t& cb);
protected:
@@ -264,9 +266,8 @@ protected:
const std::string& sim_name,
const LLVector3d& pos_global);
- void onClickMap();
- void onClickTeleport();
- void onClickBack();
+ void onMapClick();
+ void onTeleportClick();
void onExit();
private:
diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
index 88aad4923d..7b5b232ad2 100644
--- a/indra/newview/llpanelgrouproles.cpp
+++ b/indra/newview/llpanelgrouproles.cpp
@@ -2383,12 +2383,8 @@ BOOL LLPanelGroupActionsSubTab::postBuildSubTab(LLView* root)
void LLPanelGroupActionsSubTab::activate()
{
LLPanelGroupSubTab::activate();
- lldebugs << "LLPanelGroupActionsSubTab::activate()" << llendl;
- mActionList->deselectAllItems();
- mActionMembers->deleteAllItems();
- mActionRoles->deleteAllItems();
- mActionDescription->clear();
+ update(GC_ALL);
}
void LLPanelGroupActionsSubTab::deactivate()
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index 5a0c1164de..1770138b3e 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -181,7 +181,14 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)
LLIMModel::LLIMSession* im_session =
im_model.findIMSession(session_id);
if( im_session && !im_session->mOtherParticipantIsAvatar )
+ {
childSetEnabled("view_profile_btn", FALSE);
+ childSetEnabled("add_friend_btn", FALSE);
+
+ childSetEnabled("share_btn", FALSE);
+ childSetEnabled("teleport_btn", FALSE);
+ childSetEnabled("pay_btn", FALSE);
+ }
}
void LLPanelIMControlPanel::nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group)
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index c30658755a..6905c7e546 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -687,6 +687,10 @@ void LLPanelPicks::onPanelClassifiedSave(LLPanelClassifiedEdit* panel)
c_item->setRightMouseUpCallback(boost::bind(&LLPanelPicks::onRightMouseUpItem, this, _1, _2, _3, _4));
c_item->setMouseUpCallback(boost::bind(&LLPanelPicks::updateButtons, this));
c_item->childSetAction("info_chevron", boost::bind(&LLPanelPicks::onClickInfo, this));
+
+ // order does matter, showAccordion will invoke arrange for accordions.
+ mClassifiedsAccTab->changeOpenClose(false);
+ showAccordion("tab_classifieds", true);
}
else
{
@@ -740,6 +744,7 @@ void LLPanelPicks::createClassifiedInfoPanel()
{
mPanelClassifiedInfo = LLPanelClassifiedInfo::create();
mPanelClassifiedInfo->setExitCallback(boost::bind(&LLPanelPicks::onPanelClassifiedClose, this, mPanelClassifiedInfo));
+ mPanelClassifiedInfo->setEditClassifiedCallback(boost::bind(&LLPanelPicks::onPanelClassifiedEdit, this));
mPanelClassifiedInfo->setVisible(FALSE);
}
}
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index 34b3b00ff2..70dc04f575 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -354,7 +354,8 @@ bool LLSideTray::selectTabByName (const std::string& name)
return true;
}
-LLButton* LLSideTray::createButton (const std::string& name,const std::string& image,LLUICtrl::commit_callback_t callback)
+LLButton* LLSideTray::createButton (const std::string& name,const std::string& image,const std::string& tooltip,
+ LLUICtrl::commit_callback_t callback)
{
static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());
@@ -375,6 +376,9 @@ LLButton* LLSideTray::createButton (const std::string& name,const std::string& i
LLButton* button = LLUICtrlFactory::create<LLButton> (bparams);
button->setLabel(name);
button->setClickedCallback(callback);
+
+ if(tooltip!="Home")
+ button->setToolTip(tooltip);
if(image.length())
{
@@ -413,12 +417,12 @@ void LLSideTray::createButtons ()
// change if the home screen becomes its own tab.
if (name == "sidebar_home")
{
- mCollapseButton = createButton("",sidebar_tab->mImage,
+ mCollapseButton = createButton("",sidebar_tab->mImage,sidebar_tab->getTabTitle(),
boost::bind(&LLSideTray::onToggleCollapse, this));
}
else
{
- LLButton* button = createButton("",sidebar_tab->mImage,
+ LLButton* button = createButton("",sidebar_tab->mImage,sidebar_tab->getTabTitle(),
boost::bind(&LLSideTray::onTabButtonClick, this, name));
mTabButtons[name] = button;
}
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
index 5bb17eedd5..8b30199c45 100644
--- a/indra/newview/llsidetray.h
+++ b/indra/newview/llsidetray.h
@@ -141,7 +141,8 @@ protected:
LLSideTrayTab* getTab (const std::string& name);
void createButtons ();
- LLButton* createButton (const std::string& name,const std::string& image,LLUICtrl::commit_callback_t callback);
+ LLButton* createButton (const std::string& name,const std::string& image,const std::string& tooltip,
+ LLUICtrl::commit_callback_t callback);
void arrange ();
void reflectCollapseChange();
diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp
index c02fd7a5ef..9370e318cf 100644
--- a/indra/newview/lltoastimpanel.cpp
+++ b/indra/newview/lltoastimpanel.cpp
@@ -50,7 +50,19 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif
mMessage = getChild<LLTextBox>("message");
mReplyBtn = getChild<LLButton>("reply");
- mMessage->setValue(p.message);
+ LLStyle::Params style_params;
+ //Handle IRC styled /me messages.
+ std::string prefix = p.message.substr(0, 4);
+ if (prefix == "/me " || prefix == "/me'")
+ {
+ mMessage->clear();
+ style_params.font.style= "ITALIC";
+ mMessage->appendText(p.from + " ", FALSE, style_params);
+ style_params.font.style= "UNDERLINE";
+ mMessage->appendText(p.message.substr(3), FALSE, style_params);
+ }
+ else
+ mMessage->setValue(p.message);
mUserName->setValue(p.from);
mTime->setValue(p.time);
mSessionID = p.session_id;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index a90790c59a..1a4c849f25 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1498,15 +1498,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
}
std::string separator_string(": ");
- int message_offset = 0;
-
- //Handle IRC styled /me messages.
- std::string prefix = message.substr(0, 4);
- if (prefix == "/me " || prefix == "/me'")
- {
- separator_string = "";
- message_offset = 3;
- }
LLSD args;
switch(dialog)
@@ -1558,7 +1549,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// now store incoming IM in chat history
- buffer = message.substr(message_offset);
+ buffer = message;
LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL;
@@ -1576,7 +1567,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
true);
// pretend this is chat generated by self, so it does not show up on screen
- chat.mText = std::string("IM: ") + name + separator_string + message.substr(message_offset);
+ chat.mText = std::string("IM: ") + name + separator_string + message;
LLFloaterChat::addChat( chat, TRUE, TRUE );
}
else if (from_id.isNull())
@@ -1596,7 +1587,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// Treat like a system message and put in chat history.
// Claim to be from a local agent so it doesn't go into
// console.
- chat.mText = name + separator_string + message.substr(message_offset);
+ chat.mText = name + separator_string + message;
LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
if(nearby_chat)
@@ -1612,7 +1603,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
{
saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());
}
- buffer = saved + message.substr(message_offset);
+ buffer = saved + message;
LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL;
@@ -1634,7 +1625,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
region_id,
position,
true);
- chat.mText = std::string("IM: ") + name + separator_string + saved + message.substr(message_offset);
+ chat.mText = std::string("IM: ") + name + separator_string + saved + message;
BOOL local_agent = FALSE;
LLFloaterChat::addChat( chat, TRUE, local_agent );
@@ -1922,7 +1913,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
{
saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());
}
- buffer = saved + message.substr(message_offset);
+ buffer = saved + message;
BOOL is_this_agent = FALSE;
if(from_id == gAgentID)
{
@@ -1940,7 +1931,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
position,
true);
- chat.mText = std::string("IM: ") + name + separator_string + saved + message.substr(message_offset);
+ chat.mText = std::string("IM: ") + name + separator_string + saved + message;
LLFloaterChat::addChat(chat, TRUE, is_this_agent);
}
break;
@@ -1953,7 +1944,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
}
LLSD substitutions;
- substitutions["MSG"] = message.substr(message_offset);
+ substitutions["MSG"] = message;
LLNotifications::instance().add("ServerObjectMessage", substitutions);
}
break;
@@ -1978,7 +1969,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
else
{
// TODO: after LLTrans hits release, get "busy response" into translatable file
- buffer = llformat("%s (%s): %s", name.c_str(), "busy response", message.substr(message_offset).c_str());
+ buffer = llformat("%s (%s): %s", name.c_str(), "busy response", message.c_str());
gIMMgr->addMessage(session_id, from_id, name, buffer);
}
break;
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 7e19a80c10..028a5844c6 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -513,7 +513,7 @@
reference="White" />
<color
name="ObjectChatColor"
- reference="LtGray" />
+ reference="0.7 0.8 0.9 1" />
<color
name="OverdrivenColor"
value="1 0 0 1" />
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index ccd8bc569e..96c6d970c2 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5013,6 +5013,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a
name="GodMessage"
type="notify">
[NAME]
+
[MESSAGE]
</notification>
diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
index 0c42686531..2eaa3a94ee 100644
--- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
@@ -30,7 +30,7 @@
<avatar_icon
follows="top|left"
height="20"
- image_name="smile.png"
+ default_icon_name="Generic_Person"
layout="topleft"
left="5"
mouse_opaque="true"
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index ca6d8334a2..8188016455 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -45,7 +45,7 @@
min_height="23"
width="310"
top="0"
- min_width="310"
+ min_width="192"
name="chat_bar"
user_resize="false"
filename="panel_nearby_chat_bar.xml" />
@@ -92,13 +92,13 @@
height="28"
layout="topleft"
min_height="28"
- width="80"
+ width="82"
top_delta="0"
- min_width="76"
+ min_width="82"
name="gesture_panel"
user_resize="false">
- <button
- follows="right"
+ <gesture_combo_box
+ follows="left|right"
height="23"
label="Gesture"
layout="topleft"
@@ -106,7 +106,7 @@
left="0"
top="3"
use_ellipses="true"
- width="80"
+ width="82"
tool_tip="Shows/hides gestures"/>
</layout_panel>
<icon
@@ -129,8 +129,9 @@
layout="topleft"
min_height="28"
name="movement_panel"
+ user_resize="false"
width="80"
- min_width="76">
+ min_width="80">
<button
follows="left|right"
height="23"
@@ -166,10 +167,10 @@
height="28"
layout="topleft"
min_height="28"
- min_width="76"
+ min_width="80"
name="cam_panel"
- top_delta="-10"
- width="100">
+ user_resize="false"
+ width="80">
<button
follows="left|right"
height="23"
@@ -205,6 +206,7 @@
follows="left|right"
height="28"
layout="topleft"
+ min_width="40"
name="snapshot_panel"
width="40">
<button
@@ -231,15 +233,18 @@
top="0"
name="chiclet_list_panel"
width="189"
- min_width="189"
+ min_width="180"
user_resize="false"
auto_resize="true">
+<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
+as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
<chiclet_panel
mouse_opaque="false"
follows="left|right"
height="28"
layout="topleft"
left="0"
+ min_width="180"
name="chiclet_list"
top="0"
chiclet_padding="3"
@@ -313,9 +318,9 @@
/>
<unread_notifications
width="34"
- height="23"
- left="22"
- top="23" />
+ height="20"
+ left="0"
+ top="19" />
</chiclet_notification>
</layout_panel>
<icon
diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml
index 4f24c7a745..58a78a0ab8 100644
--- a/indra/newview/skins/default/xui/en/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_general.xml
@@ -8,7 +8,7 @@
left="0"
top="0"
name="general_tab"
- width="303">
+ width="310">
<panel.string
name="help_text">
The General tab contains general information about this group, a list of members, general Group Preferences and member options.
@@ -32,7 +32,7 @@ Hover your mouse over the options for more help.
max_length="511"
name="charter"
top="5"
- width="303"
+ width="305"
word_wrap="true">
Group Charter
</text_editor>
@@ -43,10 +43,10 @@ Hover your mouse over the options for more help.
heading_height="16"
height="130"
layout="topleft"
- left_delta="0"
+ left="5"
name="visible_members"
- top_pad="0"
- width="303">
+ top_pad="2"
+ width="305">
<name_list.columns
label="Member"
name="name"
@@ -64,7 +64,7 @@ Hover your mouse over the options for more help.
left_delta="0"
name="active_title_label"
top_pad="5"
- width="303">
+ width="300">
My Title
</text>
<combo_box
@@ -75,7 +75,7 @@ Hover your mouse over the options for more help.
name="active_title"
tool_tip="Sets the title that appears in your avatar&apos;s name tag when this group is active."
top_pad="2"
- width="303" />
+ width="305" />
<check_box
height="16"
font="SansSerifSmall"
@@ -85,7 +85,7 @@ Hover your mouse over the options for more help.
name="receive_notices"
tool_tip="Sets whether you want to receive Notices from this group. Uncheck this box if this group is spamming you."
top_pad="5"
- width="303" />
+ width="300" />
<check_box
height="16"
label="Show in my profile"
@@ -94,7 +94,7 @@ Hover your mouse over the options for more help.
name="list_groups_in_profile"
tool_tip="Sets whether you want to show this group in your profile"
top_pad="5"
- width="303" />
+ width="295" />
<panel
background_visible="true"
bevel_style="in"
@@ -106,7 +106,7 @@ Hover your mouse over the options for more help.
left="5"
name="preferences_container"
top_pad="5"
- width="303">
+ width="305">
<check_box
follows="right|top"
height="16"
diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
index de1323d9cb..0082128ca4 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -9,7 +9,7 @@ background_visible="true"
left="0"
top="20"
name="GroupInfo"
- width="333">
+ width="323">
<panel.string
name="default_needs_apply_text">
There are unsaved changes to the current tab
@@ -117,28 +117,17 @@ background_visible="true"
width="120" />
<accordion
follows="all"
- height="425"
+ height="405"
layout="topleft"
left="0"
name="groups_accordion"
top_pad="15"
- width="336">
+ width="323">
<accordion_tab
expanded="true"
layout="topleft"
name="group_general_tab"
title="General">
- <scroll_container
- color="DkGray2"
- opaque="true"
- height="323"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- name="general_scroll"
- reserve_scroll_corner="false"
- width="333">
<panel
border="false"
class="panel_group_general"
@@ -146,27 +135,15 @@ background_visible="true"
layout="topleft"
left="0"
help_topic="group_general_tab"
- name="group_general_tab_panel"
+ name="group_general_tab_panel"
top="0"
- width="303" />
- </scroll_container>
+ width="300" />
</accordion_tab>
<accordion_tab
expanded="false"
layout="topleft"
name="group_roles_tab"
title="Roles">
- <scroll_container
- color="DkGray2"
- opaque="true"
- height="323"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- name="roles_scroll"
- reserve_scroll_corner="false"
- width="333">
<panel
border="false"
class="panel_group_roles"
@@ -177,24 +154,12 @@ background_visible="true"
name="group_roles_tab_panel"
top="0"
width="303" />
- </scroll_container>
</accordion_tab>
<accordion_tab
expanded="false"
layout="topleft"
name="group_notices_tab"
title="Notices">
- <scroll_container
- color="DkGray2"
- opaque="true"
- height="323"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- name="notices_scroll"
- reserve_scroll_corner="false"
- width="333">
<panel
border="false"
class="panel_group_notices"
@@ -205,24 +170,12 @@ background_visible="true"
name="group_notices_tab_panel"
top="0"
width="303" />
- </scroll_container>
</accordion_tab>
<accordion_tab
expanded="false"
layout="topleft"
name="group_land_tab"
title="Land/Assets">
- <scroll_container
- color="DkGray2"
- opaque="true"
- height="323"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- name="land_scroll"
- reserve_scroll_corner="false"
- width="333">
<panel
border="false"
class="panel_group_land_money"
@@ -232,8 +185,7 @@ background_visible="true"
help_topic="group_land_money_tab"
name="group_land_tab_panel"
top="0"
- width="313" />
- </scroll_container>
+ width="300" />
</accordion_tab>
</accordion>
<button
diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml
index 0c6f81f8fd..2c649642c3 100644
--- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml
@@ -5,10 +5,10 @@
height="510"
label="Land &amp; L$"
layout="topleft"
- left="1"
+ left="0"
name="land_money_tab"
top="0"
- width="313">
+ width="310">
<panel.string
name="help_text">
Parcels owned by a group are listed along with contribution details. A warning appears until the Total Land in Use is less than or = to the Total Contribution.
@@ -47,10 +47,10 @@
heading_height="20"
height="150"
layout="topleft"
- left="0"
+ left="2"
name="group_parcel_list"
top_pad="0"
- width="313">
+ width="305">
<scroll_list.columns
label="Parcel"
name="name"
@@ -79,7 +79,7 @@
label_selected="Map"
layout="topleft"
name="map_button"
- right="-10"
+ right="-5"
top_pad="5"
width="95"
enabled="false" />
@@ -185,7 +185,9 @@
layout="topleft"
left_pad="3"
name="your_contribution_units"
- top_delta="2">
+ top_delta="2"
+ width="40"
+ >
</text>
<text
@@ -210,17 +212,17 @@
visible="false"
width="16" />
<text
- follows="left|top"
+ follows="left|top"
type="string"
word_wrap="true"
font="SansSerifSmall"
height="35"
layout="topleft"
- left_pad="0"
+ left_pad="5"
name="group_over_limit_text"
text_color="EmphasisColor"
top_delta="0"
- width="290">
+ width="260">
Group members must contribute more land credits to support land in use
</text>
<text
@@ -241,7 +243,7 @@
height="200"
halign="center"
layout="topleft"
- left="10"
+ left="5"
name="group_money_tab_container"
tab_position="top"
tab_height="20"
@@ -268,7 +270,7 @@
left="0"
max_length="4096"
name="group_money_planning_text"
- top="0"
+ top="2"
width="300"
word_wrap="true">
Loading...
@@ -293,7 +295,7 @@
left="0"
max_length="4096"
name="group_money_details_text"
- top="0"
+ top="2"
width="300"
word_wrap="true">
Loading...
@@ -305,8 +307,8 @@
layout="topleft"
name="earlier_details_button"
tool_tip="Back"
- top_pad="3"
- right="-35"
+ top_pad="5"
+ right="-45"
width="31" />
<button
follows="left|top"
@@ -327,7 +329,7 @@
left_delta="0"
help_topic="group_money_sales_tab"
name="group_money_sales_tab"
- top_delta="-1"
+ top="5"
width="300">
<text_editor
type="string"
@@ -337,7 +339,7 @@
left="0"
max_length="4096"
name="group_money_sales_text"
- top="0"
+ top="2"
width="300"
word_wrap="true">
Loading...
@@ -349,8 +351,8 @@
layout="topleft"
name="earlier_sales_button"
tool_tip="Back"
- top_pad="3"
- right="-35"
+ top_pad="5"
+ right="-45"
width="31" />
<button
follows="left|top"
@@ -358,7 +360,7 @@
image_overlay="Arrow_Right_Off"
layout="topleft"
left_pad="10"
- name="later_sales_button"
+ name="later_sales_button"
tool_tip="Next"
width="31" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml
index 24a4005a45..e56db6414f 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml
@@ -7,7 +7,7 @@
left="0"
name="notices_tab"
top="0"
- width="313">
+ width="310">
<panel.string
name="help_text">
Notices are a quick way to communicate across a
@@ -27,7 +27,7 @@ the General tab.
word_wrap="true"
height="30"
layout="topleft"
- left="10"
+ left="5"
name="lbl2"
top="5"
width="300">
@@ -41,10 +41,10 @@ Groups are limited to 200 notices/group daily
heading_height="16"
height="125"
layout="topleft"
- left="0"
+ left="2"
name="notice_list"
top_pad="0"
- width="303">
+ width="305">
<scroll_list.columns
label=""
name="icon"
@@ -81,10 +81,10 @@ Groups are limited to 200 notices/group daily
image_disabled="AddItem_Disabled"
layout="topleft"
label="Create a new notice"
- left="15"
+ left="5"
name="create_new_notice"
tool_tip="Create a new notice"
- top_delta="-5"
+ top_delta="0"
width="18" />
<button
follows="top|left"
@@ -93,7 +93,7 @@ Groups are limited to 200 notices/group daily
layout="topleft"
name="refresh_notices"
right="-5"
- top_delta="5"
+ top_delta="0"
width="23" />
<panel
follows="left|top"
@@ -219,7 +219,7 @@ Groups are limited to 200 notices/group daily
label_selected="Send Notice"
layout="topleft"
right="-10"
- top_pad="20"
+ top_pad="10"
name="send_notice"
width="100" />
<group_drop_target
diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml
index 4129d7b448..604fb81c8e 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -7,7 +7,7 @@
left="0"
top="0"
name="roles_tab"
- width="313">
+ width="310">
<panel.string
name="default_needs_apply_text">
There are unsaved changes to the current tab
@@ -28,9 +28,9 @@
name="roles_tab_container"
tab_position="top"
tab_height="20"
- tab_min_width="96"
+ tab_min_width="75"
top="3"
- width="303">
+ width="300">
<panel
border="false"
height="220"
@@ -51,23 +51,13 @@ clicking on their names.
<filter_editor
layout="topleft"
top="10"
- left="4"
+ left="5"
width="280"
height="20"
follows="left|top|right"
max_length="250"
label="Filter Members"
name="filter_input" />
- <!-- <button
- enabled="false"
- font="SansSerifSmall"
- height="20"
- label="Show All"
- layout="topleft"
- left_pad="-90"
- name="show_all_button"
- top_delta="-6"
- width="80" />-->
<name_list
column_padding="0"
draw_heading="true"
@@ -111,14 +101,6 @@ clicking on their names.
right="-5"
name="member_eject"
width="100" />
- <!--What is this?-->
- <icon
- height="16"
- image_name="Inv_FolderClosed"
- layout="topleft"
- name="power_folder_icon"
- visible="false"
- width="16" />
</panel>
<panel
border="false"
@@ -156,7 +138,7 @@ including the Everyone and Owner Roles.
<filter_editor
layout="topleft"
top="10"
- left="4"
+ left="5"
width="280"
height="20"
follows="left|top|right"
@@ -179,12 +161,12 @@ including the Everyone and Owner Roles.
draw_stripes="false"
follows="left|top"
heading_height="20"
- height="150"
+ height="160"
layout="topleft"
search_column="1"
left="0"
name="role_list"
- top_pad="4"
+ top_pad="2"
width="300">
<scroll_list.columns
label="Role"
@@ -238,24 +220,13 @@ things in this group. There&apos;s a broad variety of Abilities.
<filter_editor
layout="topleft"
top="10"
- left="4"
+ left="5"
width="280"
height="20"
follows="left|top|right"
max_length="250"
label="Filter Abilities"
name="filter_input" />
- <!--
- <button
- enabled="false"
- font="SansSerifSmall"
- height="20"
- label="Show All"
- layout="topleft"
- left_pad="0"
- name="show_all_button"
- top_delta="0"
- width="80" /> -->
<scroll_list
column_padding="0"
draw_stripes="false"
@@ -267,14 +238,14 @@ things in this group. There&apos;s a broad variety of Abilities.
name="action_list"
search_column="1"
tool_tip="Select an Ability to view more details"
- top_pad="6"
+ top_pad="2"
width="300">
<scroll_list.columns
label=""
name="icon"
width="16" />
<scroll_list.columns
- label=""
+ label="Action"
name="action"
width="247" />
</scroll_list>
@@ -293,9 +264,9 @@ things in this group. There&apos;s a broad variety of Abilities.
follows="left|top"
left="10"
name="members_footer"
- top_pad="10"
+ top="245"
top_delta="0"
- width="300">
+ width="290">
<text
type="string"
height="16"
@@ -304,7 +275,7 @@ things in this group. There&apos;s a broad variety of Abilities.
left="0"
name="static"
top_pad="5"
- width="295">
+ width="285">
Assigned Roles
</text>
<scroll_list
@@ -315,7 +286,7 @@ things in this group. There&apos;s a broad variety of Abilities.
left="0"
name="member_assigned_roles"
top_pad="0"
- width="295">
+ width="285">
<scroll_list.columns
label=""
name="checkbox"
@@ -323,7 +294,7 @@ things in this group. There&apos;s a broad variety of Abilities.
<scroll_list.columns
label=""
name="role"
- width="265" />
+ width="255" />
</scroll_list>
<text
type="string"
@@ -333,7 +304,7 @@ things in this group. There&apos;s a broad variety of Abilities.
left="0"
name="static2"
top_pad="5"
- width="295">
+ width="285">
Allowed Abilities
</text>
<scroll_list
@@ -345,7 +316,7 @@ things in this group. There&apos;s a broad variety of Abilities.
search_column="2"
tool_tip="For details of each allowed ability see the abilities tab"
top_pad="0"
- width="295">
+ width="285">
<scroll_list.columns
label=""
name="icon"
@@ -353,7 +324,7 @@ things in this group. There&apos;s a broad variety of Abilities.
<scroll_list.columns
label=""
name="action"
- width="275" />
+ width="265" />
</scroll_list>
</panel>
<panel
@@ -364,7 +335,7 @@ things in this group. There&apos;s a broad variety of Abilities.
top_delta="0"
top="245"
visible="false"
- width="300">
+ width="290">
<text
type="string"
height="16"
@@ -386,7 +357,7 @@ things in this group. There&apos;s a broad variety of Abilities.
max_length="295"
name="role_name"
top_pad="0"
- width="295">
+ width="290">
Employees
</line_editor>
<text
@@ -395,7 +366,7 @@ things in this group. There&apos;s a broad variety of Abilities.
layout="topleft"
name="static3"
top_pad="5"
- width="295">
+ width="290">
Title
</text>
<line_editor
@@ -408,7 +379,7 @@ things in this group. There&apos;s a broad variety of Abilities.
max_length="295"
name="role_title"
top_pad="0"
- width="295">
+ width="290">
(waiting)
</line_editor>
<text
@@ -442,7 +413,7 @@ things in this group. There&apos;s a broad variety of Abilities.
left="0"
name="static4"
top_pad="5"
- width="295">
+ width="290">
Assigned Roles
</text>
<name_list
@@ -452,7 +423,7 @@ things in this group. There&apos;s a broad variety of Abilities.
left="0"
name="role_assigned_members"
top_pad="0"
- width="295" />
+ width="290" />
<check_box
height="15"
label="Reveal members"
@@ -469,7 +440,7 @@ things in this group. There&apos;s a broad variety of Abilities.
left="0"
name="static5"
top_pad="5"
- width="295">
+ width="290">
Allowed Abilities
</text>
<scroll_list
@@ -504,7 +475,7 @@ things in this group. There&apos;s a broad variety of Abilities.
top_delta="0"
top="245"
visible="false"
- width="300">
+ width="290">
<text
type="string"
height="16"
@@ -550,7 +521,7 @@ things in this group. There&apos;s a broad variety of Abilities.
layout="topleft"
name="static3"
top_pad="5"
- width="295">
+ width="290">
Members with this ability
</text>
<name_list
@@ -558,6 +529,6 @@ things in this group. There&apos;s a broad variety of Abilities.
layout="topleft"
name="action_members"
top_pad="0"
- width="295" />
+ width="290" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml
index 26d8304551..be56866119 100644
--- a/indra/newview/skins/default/xui/en/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml
@@ -79,7 +79,7 @@
text_color="white"
top="33"
use_ellipses="true"
- value="MESSAGE"
+ value=""
width="285"
word_wrap="true"
max_length="350" />
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
index a12797d96b..1ef845b769 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
@@ -9,7 +9,7 @@
top="21"
width="310">
<string name="min_width">
- 310
+ 192
</string>
<string name="max_width">
320
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index dbe76e553b..9cfbed432a 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -22,6 +22,7 @@
left="0"
name="accordion"
top="0"
+ single_expansion="true"
width="313">
<accordion_tab
can_resize="false"
@@ -46,7 +47,7 @@
layout="topleft"
height="235"
name="tab_classifieds"
- title="Classified"
+ title="Classifieds"
visible="false">
<flat_list_view
color="DkGray2"
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
index a9874f4553..a419a02d75 100644
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml
@@ -94,7 +94,7 @@
<sidetray_tab
name="sidebar_me"
help_topic="sidebar_me"
- tab_title="Me"
+ tab_title="My Profile"
description="Edit your public profile and Picks."
image="TabIcon_Me_Off"
image_selected="TabIcon_Me_Selected"
@@ -112,7 +112,7 @@
<sidetray_tab
name="sidebar_appearance"
help_topic="sidebar_appearance"
- tab_title="Appearance"
+ tab_title="My Appearance"
description="Change your appearance and current look."
image="TabIcon_Appearance_Off"
image_selected="TabIcon_Appearance_Selected"
@@ -131,7 +131,7 @@
<sidetray_tab
name="sidebar_inventory"
help_topic="sidebar_inventory"
- tab_title="Inventory"
+ tab_title="My Inventory"
description="Browse your inventory."
image="TabIcon_Things_Off"
image_selected="TabIcon_Things_Selected"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index b0a406a277..ea66bfa197 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2850,7 +2850,6 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
<string name="IM_to_label">To</string>
<string name="IM_moderator_label">(Moderator)</string>
-
<string name="ringing-im">
Joining Voice Chat...
</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml
new file mode 100644
index 0000000000..a35e2c3663
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+
+<avatar_icon default_icon_name="Generic_Person_Large">
+</avatar_icon>