summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-01-19 12:57:03 -0800
committerTofu Linden <tofu.linden@lindenlab.com>2010-01-19 12:57:03 -0800
commit705e31f16ad2e9b530bc083db13d29cbc8613f82 (patch)
treebbf7a443c649f4561e7f70a787b83e6555afe0d0 /indra
parentcd5cd11ccbd1ad13afd43c045735f01dbc994a80 (diff)
parent85c97cab02b0f2ba89b7af05c14a69ff90ffa25e (diff)
PE merge.
Diffstat (limited to 'indra')
-rw-r--r--indra/llui/llaccordionctrltab.cpp3
-rw-r--r--indra/llui/llfloater.cpp15
-rw-r--r--indra/llui/llresizehandle.cpp81
-rw-r--r--indra/newview/CMakeLists.txt2
-rw-r--r--indra/newview/llbottomtray.cpp5
-rw-r--r--indra/newview/llchatbar.cpp3
-rw-r--r--indra/newview/llchathistory.cpp20
-rw-r--r--indra/newview/llchathistory.h1
-rw-r--r--indra/newview/llchiclet.cpp58
-rw-r--r--indra/newview/llchiclet.h21
-rw-r--r--indra/newview/llcompilequeue.cpp5
-rw-r--r--indra/newview/llfloaterbulkpermission.cpp1
-rw-r--r--indra/newview/llfloaterchat.cpp2
-rw-r--r--indra/newview/llfloaterchatterbox.cpp28
-rw-r--r--indra/newview/llimfloater.cpp14
-rw-r--r--indra/newview/llimpanel.cpp1
-rw-r--r--indra/newview/llimview.cpp9
-rw-r--r--indra/newview/llinventoryfunctions.cpp1
-rw-r--r--indra/newview/lllogchat.cpp1
-rw-r--r--indra/newview/llmenucommands.cpp1
-rw-r--r--indra/newview/llmutelist.cpp4
-rw-r--r--indra/newview/llnamebox.cpp13
-rw-r--r--indra/newview/llnamebox.h1
-rw-r--r--indra/newview/llnamelistctrl.cpp80
-rw-r--r--indra/newview/llnamelistctrl.h5
-rw-r--r--indra/newview/llparticipantlist.cpp2
-rw-r--r--indra/newview/llpreviewgesture.cpp6
-rw-r--r--indra/newview/llpreviewnotecard.cpp1
-rw-r--r--indra/newview/llpreviewscript.cpp1
-rw-r--r--indra/newview/llscreenchannel.cpp21
-rw-r--r--indra/newview/llscriptfloater.cpp26
-rw-r--r--indra/newview/llscriptfloater.h4
-rw-r--r--indra/newview/llstartup.cpp8
-rw-r--r--indra/newview/llstatusbar.cpp1
-rw-r--r--indra/newview/lltoolbar.cpp19
-rw-r--r--indra/newview/llviewerfloaterreg.cpp3
-rw-r--r--indra/newview/llviewermenu.cpp48
-rw-r--r--indra/newview/llviewermessage.cpp76
-rw-r--r--indra/newview/llviewertexteditor.cpp1
-rw-r--r--indra/newview/llviewerwindow.cpp1
-rw-r--r--indra/newview/llvoiceclient.cpp5
-rw-r--r--indra/newview/skins/default/xui/en/menu_participant_list.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_profile.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_my_profile.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_status_bar.xml8
-rw-r--r--indra/newview/skins/default/xui/en/panel_toast.xml3
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml13
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml16
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml15
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml14
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_script.xml14
53 files changed, 399 insertions, 293 deletions
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index 9d6ba57c29..4bfe44135a 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
@@ -157,7 +157,8 @@ void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::draw()
// because the user's mental model of focus is that it goes away after
// the accordion is closed.
if (getParent()->hasFocus()
- && !(collapsible && !expanded))
+ /*&& !(collapsible && !expanded)*/ // WHY??
+ )
{
mImageHeaderFocused->draw(0,0,width,height);
}
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 980cd2abd7..3734a22f7e 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2362,7 +2362,7 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out
LLRect::tCoordType screen_width = getSnapRect().getWidth();
LLRect::tCoordType screen_height = getSnapRect().getHeight();
-
+
// only automatically resize non-minimized, resizable floaters
if( floater->isResizable() && !floater->isMinimized() )
{
@@ -2387,16 +2387,11 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out
new_width = llmax(new_width, min_width);
new_height = llmax(new_height, min_height);
- floater->reshape( new_width, new_height, TRUE );
- if (floater->followsRight())
- {
- floater->translate(old_width - new_width, 0);
- }
+ LLRect new_rect;
+ new_rect.setLeftTopAndSize(view_rect.mTop,view_rect.mLeft,new_width, new_height);
- if (floater->followsTop())
- {
- floater->translate(0, old_height - new_height);
- }
+ floater->reshape( new_width, new_height, TRUE );
+ floater->setRect(new_rect);
}
}
diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp
index 6239a8f721..3df09d124a 100644
--- a/indra/llui/llresizehandle.cpp
+++ b/indra/llui/llresizehandle.cpp
@@ -124,7 +124,7 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
{
// Make sure the mouse in still over the application. We don't want to make the parent
// so big that we can't see the resize handle any more.
-
+
S32 screen_x;
S32 screen_y;
localPointToScreen(x, y, &screen_x, &screen_y);
@@ -146,68 +146,61 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
LLRect scaled_rect = orig_rect;
S32 delta_x = screen_x - mDragLastScreenX;
S32 delta_y = screen_y - mDragLastScreenY;
+
+ if(delta_x == 0 && delta_y == 0)
+ return FALSE;
+
LLCoordGL mouse_dir;
// use hysteresis on mouse motion to preserve user intent when mouse stops moving
mouse_dir.mX = (screen_x == mLastMouseScreenX) ? mLastMouseDir.mX : screen_x - mLastMouseScreenX;
mouse_dir.mY = (screen_y == mLastMouseScreenY) ? mLastMouseDir.mY : screen_y - mLastMouseScreenY;
+
mLastMouseScreenX = screen_x;
mLastMouseScreenY = screen_y;
mLastMouseDir = mouse_dir;
- S32 x_multiple = 1;
- S32 y_multiple = 1;
- switch( mCorner )
- {
- case LEFT_TOP:
- x_multiple = -1;
- y_multiple = 1;
- break;
- case LEFT_BOTTOM:
- x_multiple = -1;
- y_multiple = -1;
- break;
- case RIGHT_TOP:
- x_multiple = 1;
- y_multiple = 1;
- break;
- case RIGHT_BOTTOM:
- x_multiple = 1;
- y_multiple = -1;
- break;
- }
+ S32 new_width = orig_rect.getWidth();
+ S32 new_height = orig_rect.getHeight();
- S32 new_width = orig_rect.getWidth() + x_multiple * delta_x;
- if( new_width < mMinWidth )
- {
- new_width = mMinWidth;
- delta_x = x_multiple * (mMinWidth - orig_rect.getWidth());
- }
-
- S32 new_height = orig_rect.getHeight() + y_multiple * delta_y;
- if( new_height < mMinHeight )
- {
- new_height = mMinHeight;
- delta_y = y_multiple * (mMinHeight - orig_rect.getHeight());
- }
+ S32 new_pos_x = orig_rect.mLeft;
+ S32 new_pos_y = orig_rect.mTop;
switch( mCorner )
{
- case LEFT_TOP:
- scaled_rect.translate(delta_x, 0);
+ case LEFT_TOP:
+ new_width-=delta_x;
+ new_height+=delta_y;
+ new_pos_x+=delta_x;
+ new_pos_y+=delta_y;
break;
case LEFT_BOTTOM:
- scaled_rect.translate(delta_x, delta_y);
+ new_width-=delta_x;
+ new_height-=delta_y;
+ new_pos_x+=delta_x;
break;
case RIGHT_TOP:
+ new_width+=delta_x;
+ new_height+=delta_y;
+ new_pos_y+=delta_y;
break;
case RIGHT_BOTTOM:
- scaled_rect.translate(0, delta_y);
+ new_width+=delta_x;
+ new_height-=delta_y;
break;
}
+ new_width = llmax(new_width,mMinWidth);
+ new_height = llmax(new_height,mMinHeight);
+
+ LLRect::tCoordType screen_width = resizing_view->getParent()->getSnapRect().getWidth();
+ LLRect::tCoordType screen_height = resizing_view->getParent()->getSnapRect().getHeight();
+
+ new_width = llmin(new_width, screen_width);
+ new_height = llmin(new_height, screen_height);
+
// temporarily set new parent rect
- scaled_rect.mRight = scaled_rect.mLeft + new_width;
- scaled_rect.mTop = scaled_rect.mBottom + new_height;
+ scaled_rect.setLeftTopAndSize(new_pos_x,new_pos_y,new_width,new_height);
+
resizing_view->setRect(scaled_rect);
LLView* snap_view = NULL;
@@ -258,7 +251,11 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
resizing_view->setRect(orig_rect);
// translate and scale to new shape
- resizing_view->setShape(scaled_rect, true);
+ resizing_view->reshape(scaled_rect.getWidth(),scaled_rect.getHeight());
+ resizing_view->setRect(scaled_rect);
+ //set shape to handle dependent floaters...
+ resizing_view->handleReshape(scaled_rect, false);
+
// update last valid mouse cursor position based on resized view's actual size
LLRect new_rect = resizing_view->getRect();
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 958b9521fa..73c275c54c 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -156,7 +156,6 @@ set(viewer_SOURCE_FILES
llfloaterbuycurrency.cpp
llfloaterbuyland.cpp
llfloatercamera.cpp
- llfloaterchat.cpp
llfloaterchatterbox.cpp
llfloatercolorpicker.cpp
llfloatercustomize.cpp
@@ -665,7 +664,6 @@ set(viewer_HEADER_FILES
llfloaterbuycurrency.h
llfloaterbuyland.h
llfloatercamera.h
- llfloaterchat.h
llfloaterchatterbox.h
llfloatercolorpicker.h
llfloatercustomize.h
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 9b215e4096..988867ef84 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -330,6 +330,11 @@ void LLBottomTray::setVisible(BOOL visible)
}
}
}
+
+ if(visible)
+ gFloaterView->setSnapOffsetBottom(getRect().getHeight());
+ else
+ gFloaterView->setSnapOffsetBottom(0);
}
void LLBottomTray::showBottomTrayContextMenu(S32 x, S32 y, MASK mask)
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index 442dc660cd..b32a955038 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -48,7 +48,6 @@
#include "llcombobox.h"
#include "llcommandhandler.h" // secondlife:///app/chat/ support
#include "llviewercontrol.h"
-#include "llfloaterchat.h"
#include "llgesturemgr.h"
#include "llkeyboard.h"
#include "lllineeditor.h"
@@ -548,7 +547,7 @@ void LLChatBar::onInputEditorFocusLost()
// static
void LLChatBar::onInputEditorGainFocus()
{
- LLFloaterChat::setHistoryCursorAndScrollToEnd();
+ //LLFloaterChat::setHistoryCursorAndScrollToEnd();
}
void LLChatBar::onClickSay( LLUICtrl* ctrl )
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 2fc83c7e54..a46cd84b60 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -577,23 +577,17 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
view->reshape(target_rect.getWidth(), view->getRect().getHeight());
view->setOrigin(target_rect.mLeft, view->getRect().mBottom);
- std::string header_text = "[" + chat.mTimeStr + "] ";
+ std::string widget_associated_text = "\n[" + chat.mTimeStr + "] ";
if (utf8str_trim(chat.mFromName).size() != 0 && chat.mFromName != SYSTEM_FROM)
- header_text += chat.mFromName + delimiter;
+ widget_associated_text += chat.mFromName + delimiter;
- mEditor->appendWidget(p, header_text, false);
+ mEditor->appendWidget(p, widget_associated_text, false);
mLastFromName = chat.mFromName;
mLastFromID = chat.mFromID;
mLastMessageTime = new_message_time;
}
std::string message = irc_me ? chat.mText.substr(3) : chat.mText;
- if ( message.size() > 0 && !LLStringOps::isSpace(message[message.size() - 1]) )
- {
- // Ensure that message ends with NewLine, to avoid losing of new lines
- // while copy/paste from text chat. See EXT-3263.
- message += NEW_LINE;
- }
mEditor->appendText(message, FALSE, style_params);
mEditor->blockUndo();
@@ -615,3 +609,11 @@ void LLChatHistory::draw()
LLUICtrl::draw();
}
+void LLChatHistory::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ bool is_scrolled_to_end = mEditor->scrolledToEnd();
+ LLUICtrl::reshape( width, height, called_from_parent );
+ // update scroll
+ if (is_scrolled_to_end)
+ mEditor->setCursorAndScrollToEnd();
+}
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index 260015e2dc..f2d403f639 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -119,6 +119,7 @@ class LLChatHistory : public LLUICtrl
*/
void appendMessage(const LLChat& chat, const bool use_plain_text_chat_history = false, const LLStyle::Params& input_append_params = LLStyle::Params());
/*virtual*/ void clear();
+ /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
private:
std::string mLastFromName;
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 5cbe6f9670..1d739f07b1 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -453,6 +453,7 @@ LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p)
, mNewMessagesIcon(NULL)
, mSpeakerCtrl(NULL)
, mCounterCtrl(NULL)
+, mChicletButton(NULL)
{
enableCounterControl(p.enable_counter);
}
@@ -576,6 +577,11 @@ void LLIMChiclet::onMouseDown()
setCounter(0);
}
+void LLIMChiclet::setToggleState(bool toggle)
+{
+ mChicletButton->setToggleState(toggle);
+}
+
BOOL LLIMChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
{
onMouseDown();
@@ -634,6 +640,7 @@ LLIMChiclet::EType LLIMChiclet::getIMSessionType(const LLUUID& session_id)
LLIMP2PChiclet::Params::Params()
: avatar_icon("avatar_icon")
+, chiclet_button("chiclet_button")
, unread_notifications("unread_notifications")
, speaker("speaker")
, new_message_icon("new_message_icon")
@@ -646,6 +653,10 @@ LLIMP2PChiclet::LLIMP2PChiclet(const Params& p)
, mChicletIconCtrl(NULL)
, mPopupMenu(NULL)
{
+ LLButton::Params button_params = p.chiclet_button;
+ mChicletButton = LLUICtrlFactory::create<LLButton>(button_params);
+ addChild(mChicletButton);
+
LLIconCtrl::Params new_msg_params = p.new_message_icon;
mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);
addChild(mNewMessagesIcon);
@@ -760,6 +771,7 @@ void LLIMP2PChiclet::onMenuItemClicked(const LLSD& user_data)
LLAdHocChiclet::Params::Params()
: avatar_icon("avatar_icon")
+, chiclet_button("chiclet_button")
, unread_notifications("unread_notifications")
, speaker("speaker")
, new_message_icon("new_message_icon")
@@ -773,6 +785,10 @@ LLAdHocChiclet::LLAdHocChiclet(const Params& p)
, mChicletIconCtrl(NULL)
, mPopupMenu(NULL)
{
+ LLButton::Params button_params = p.chiclet_button;
+ mChicletButton = LLUICtrlFactory::create<LLButton>(button_params);
+ addChild(mChicletButton);
+
LLIconCtrl::Params new_msg_params = p.new_message_icon;
mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);
addChild(mNewMessagesIcon);
@@ -887,6 +903,7 @@ BOOL LLAdHocChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)
LLIMGroupChiclet::Params::Params()
: group_icon("group_icon")
+, chiclet_button("chiclet_button")
, unread_notifications("unread_notifications")
, speaker("speaker")
, new_message_icon("new_message_icon")
@@ -900,6 +917,10 @@ LLIMGroupChiclet::LLIMGroupChiclet(const Params& p)
, mChicletIconCtrl(NULL)
, mPopupMenu(NULL)
{
+ LLButton::Params button_params = p.chiclet_button;
+ mChicletButton = LLUICtrlFactory::create<LLButton>(button_params);
+ addChild(mChicletButton);
+
LLIconCtrl::Params new_msg_params = p.new_message_icon;
mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);
addChild(mNewMessagesIcon);
@@ -1276,6 +1297,7 @@ void LLChicletPanel::removeChiclet(chiclet_list_t::iterator it)
mChicletList.erase(it);
arrange();
+ (*it)->die();
}
void LLChicletPanel::removeChiclet(S32 index)
@@ -1414,6 +1436,32 @@ S32 LLChicletPanel::notifyParent(const LLSD& info)
return LLPanel::notifyParent(info);
}
+void LLChicletPanel::setChicletToggleState(const LLUUID& session_id, bool toggle)
+{
+ if(session_id.isNull())
+ {
+ llwarns << "Null Session ID" << llendl;
+ }
+
+ // toggle off all chiclets, except specified
+ S32 size = getChicletCount();
+ for(int n = 0; n < size; ++n)
+ {
+ LLIMChiclet* chiclet = getChiclet<LLIMChiclet>(n);
+ if(chiclet && chiclet->getSessionId() != session_id)
+ {
+ chiclet->setToggleState(false);
+ }
+ }
+
+ // toggle specified chiclet
+ LLIMChiclet* chiclet = findChiclet<LLIMChiclet>(session_id);
+ if(chiclet)
+ {
+ chiclet->setToggleState(toggle);
+ }
+}
+
void LLChicletPanel::arrange()
{
if(mChicletList.empty())
@@ -1806,6 +1854,7 @@ LLChicletSpeakerCtrl::LLChicletSpeakerCtrl(const Params&p)
LLScriptChiclet::Params::Params()
: icon("icon")
+ , chiclet_button("chiclet_button")
, new_message_icon("new_message_icon")
{
}
@@ -1814,6 +1863,10 @@ LLScriptChiclet::LLScriptChiclet(const Params&p)
: LLIMChiclet(p)
, mChicletIconCtrl(NULL)
{
+ LLButton::Params button_params = p.chiclet_button;
+ mChicletButton = LLUICtrlFactory::create<LLButton>(button_params);
+ addChild(mChicletButton);
+
LLIconCtrl::Params new_msg_params = p.new_message_icon;
mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);
addChild(mNewMessagesIcon);
@@ -1862,6 +1915,7 @@ static const std::string INVENTORY_USER_OFFER ("UserGiveItem");
LLInvOfferChiclet::Params::Params()
: icon("icon")
+ , chiclet_button("chiclet_button")
, new_message_icon("new_message_icon")
{
}
@@ -1870,6 +1924,10 @@ LLInvOfferChiclet::LLInvOfferChiclet(const Params&p)
: LLIMChiclet(p)
, mChicletIconCtrl(NULL)
{
+ LLButton::Params button_params = p.chiclet_button;
+ mChicletButton = LLUICtrlFactory::create<LLButton>(button_params);
+ addChild(mChicletButton);
+
LLIconCtrl::Params new_msg_params = p.new_message_icon;
mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);
addChild(mNewMessagesIcon);
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index 3665e4d093..bb4846aa57 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -325,7 +325,7 @@ public:
};
- /*virtual*/ ~LLIMChiclet() {};
+ virtual ~LLIMChiclet() {};
/**
* Sets IM session name. This name will be displayed in chiclet tooltip.
@@ -422,6 +422,8 @@ public:
*/
virtual void onMouseDown();
+ virtual void setToggleState(bool toggle);
+
protected:
LLIMChiclet(const LLIMChiclet::Params& p);
@@ -438,7 +440,7 @@ protected:
LLIconCtrl* mNewMessagesIcon;
LLChicletNotificationCounterCtrl* mCounterCtrl;
LLChicletSpeakerCtrl* mSpeakerCtrl;
-
+ LLButton* mChicletButton;
/** the id of another participant, either an avatar id or a group id*/
LLUUID mOtherParticipantId;
@@ -473,6 +475,8 @@ class LLIMP2PChiclet : public LLIMChiclet
public:
struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
{
+ Optional<LLButton::Params> chiclet_button;
+
Optional<LLChicletAvatarIconCtrl::Params> avatar_icon;
Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications;
@@ -538,6 +542,8 @@ class LLAdHocChiclet : public LLIMChiclet
public:
struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
{
+ Optional<LLButton::Params> chiclet_button;
+
Optional<LLChicletAvatarIconCtrl::Params> avatar_icon;
Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications;
@@ -614,6 +620,8 @@ public:
struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
{
+ Optional<LLButton::Params> chiclet_button;
+
Optional<LLIconCtrl::Params> icon;
Optional<LLIconCtrl::Params> new_message_icon;
@@ -656,6 +664,8 @@ public:
struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
{
+ Optional<LLButton::Params> chiclet_button;
+
Optional<LLChicletInvOfferIconCtrl::Params> icon;
Optional<LLIconCtrl::Params> new_message_icon;
@@ -697,6 +707,8 @@ public:
struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
{
+ Optional<LLButton::Params> chiclet_button;
+
Optional<LLChicletGroupIconCtrl::Params> group_icon;
Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications;
@@ -1040,6 +1052,11 @@ public:
S32 notifyParent(const LLSD& info);
+ /**
+ * Toggle chiclet by session id ON and toggle OFF all other chiclets.
+ */
+ void setChicletToggleState(const LLUUID& session_id, bool toggle);
+
protected:
LLChicletPanel(const Params&p);
friend class LLUICtrlFactory;
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index eb9a2fec2f..72074955d1 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -59,7 +59,6 @@
#include "llbutton.h"
#include "lldir.h"
-#include "llfloaterchat.h"
#include "llnotificationsutil.h"
#include "llviewerstats.h"
#include "llvfile.h"
@@ -447,14 +446,10 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status )
{
- LLChat chat(LLTrans::getString("CompileQueueScriptNotFound"));
- LLFloaterChat::addChat(chat);
buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName;
}
else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status)
{
- LLChat chat(LLTrans::getString("CompileQueueInsufficientPermDownload"));
- LLFloaterChat::addChat(chat);
buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName;
}
else
diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp
index 538b44c056..5c3a54e34b 100644
--- a/indra/newview/llfloaterbulkpermission.cpp
+++ b/indra/newview/llfloaterbulkpermission.cpp
@@ -48,7 +48,6 @@
#include "llresmgr.h"
#include "llbutton.h"
#include "lldir.h"
-#include "llfloaterchat.h"
#include "llviewerstats.h"
#include "lluictrlfactory.h"
#include "llselectmgr.h"
diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
index 18b9f0484f..c24c224133 100644
--- a/indra/newview/llfloaterchat.cpp
+++ b/indra/newview/llfloaterchat.cpp
@@ -37,8 +37,6 @@
#include "llviewerprecompiledheaders.h"
-#include "llfloaterchat.h"
-
// project include
#include "llagent.h"
#include "llappviewer.h"
diff --git a/indra/newview/llfloaterchatterbox.cpp b/indra/newview/llfloaterchatterbox.cpp
index 9108cfb72b..84b423399e 100644
--- a/indra/newview/llfloaterchatterbox.cpp
+++ b/indra/newview/llfloaterchatterbox.cpp
@@ -38,7 +38,6 @@
#include "llfloaterreg.h"
#include "llfloaterchatterbox.h"
#include "lluictrlfactory.h"
-#include "llfloaterchat.h"
#include "llfloaterfriends.h"
#include "llfloatergroups.h"
#include "llviewercontrol.h"
@@ -134,22 +133,6 @@ BOOL LLFloaterChatterBox::postBuild()
addFloater(LLFloaterMyFriends::getInstance(), TRUE);
}
- if (gSavedSettings.getBOOL("ChatHistoryTornOff"))
- {
- LLFloaterChat* floater_chat = LLFloaterChat::getInstance();
- if(floater_chat)
- {
- // add then remove to set up relationship for re-attach
- addFloater(floater_chat, FALSE);
- removeFloater(floater_chat);
- // reparent to floater view
- gFloaterView->addChild(floater_chat);
- }
- }
- else
- {
- addFloater(LLFloaterChat::getInstance(), FALSE);
- }
mTabContainer->lockTabs();
return TRUE;
}
@@ -230,8 +213,6 @@ void LLFloaterChatterBox::onOpen(const LLSD& key)
//*TODO:Skinning show the session id associated with key
if (key.asString() == "local")
{
- LLFloaterChat* chat = LLFloaterReg::findTypedInstance<LLFloaterChat>("chat");
- chat->openFloater();
}
else if (key.isDefined())
{
@@ -245,12 +226,6 @@ void LLFloaterChatterBox::onOpen(const LLSD& key)
void LLFloaterChatterBox::onVisibilityChange ( const LLSD& new_visibility )
{
- // HACK: potentially need to toggle console
- LLFloaterChat* instance = LLFloaterChat::getInstance();
- if(instance)
- {
- instance->updateConsoleVisibility();
- }
}
void LLFloaterChatterBox::removeFloater(LLFloater* floaterp)
@@ -349,8 +324,7 @@ LLFloater* LLFloaterChatterBox::getCurrentVoiceFloater()
}
if (LLVoiceChannelProximal::getInstance() == LLVoiceChannel::getCurrentVoiceChannel())
{
- // show near me tab if in proximal channel
- return LLFloaterChat::getInstance();
+ return NULL;
}
else
{
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index aee34eb0af..d7c60ff34e 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -42,7 +42,6 @@
#include "llbottomtray.h"
#include "llchannelmanager.h"
#include "llchiclet.h"
-#include "llfloaterchat.h"
#include "llfloaterreg.h"
#include "llimfloatercontainer.h" // to replace separate IM Floaters with multifloater container
#include "lllayoutstack.h"
@@ -115,6 +114,8 @@ LLIMFloater::LLIMFloater(const LLUUID& session_id)
void LLIMFloater::onFocusLost()
{
LLIMModel::getInstance()->resetActiveSessionID();
+
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false);
}
void LLIMFloater::onFocusReceived()
@@ -126,6 +127,8 @@ void LLIMFloater::onFocusReceived()
{
mInputEditor->setFocus(TRUE);
}
+
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true);
}
// virtual
@@ -490,6 +493,15 @@ void LLIMFloater::setVisible(BOOL visible)
updateMessages();
mInputEditor->setFocus(TRUE);
}
+
+ if(!visible)
+ {
+ LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID);
+ if(chiclet)
+ {
+ chiclet->setToggleState(false);
+ }
+ }
}
//static
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index 029ddbaf2c..9a6115dd63 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -59,7 +59,6 @@
#include "llinventory.h"
#include "llinventorymodel.h"
#include "llfloaterinventory.h"
-#include "llfloaterchat.h"
#include "lliconctrl.h"
#include "llkeyboard.h"
#include "lllineeditor.h"
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index f751fa2273..6064415a10 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -51,7 +51,6 @@
#include "llchat.h"
#include "llchiclet.h"
#include "llresmgr.h"
-#include "llfloaterchat.h"
#include "llfloaterchatterbox.h"
#include "llavataractions.h"
#include "llhttpnode.h"
@@ -2236,7 +2235,6 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
LLChat chat(message);
chat.mSourceType = CHAT_SOURCE_SYSTEM;
- LLFloaterChat::addChatHistory(chat);
LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
if(nearby_chat)
@@ -2404,7 +2402,9 @@ LLUUID LLIMMgr::addSession(
//we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions
if (!new_session) return session_id;
- noteOfflineUsers(session_id, floater, ids);
+ //Per Plan's suggestion commented "explicit offline status warning" out to make Dessie happier (see EXT-3609)
+ //*TODO After February 2010 remove this commented out line if no one will be missing that warning
+ //noteOfflineUsers(session_id, floater, ids);
// Only warn for regular IMs - not group IMs
if( dialog == IM_NOTHING_SPECIAL )
@@ -3136,9 +3136,6 @@ public:
ll_vector3_from_sd(message_params["position"]),
true);
- 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
std::string url = gAgent.getRegion()->getCapability(
"ChatSessionRequest");
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index e3caabf08f..2885ba13fa 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -51,7 +51,6 @@
#include "llappearancemgr.h"
#include "llappviewer.h"
//#include "llfirstuse.h"
-#include "llfloaterchat.h"
#include "llfloatercustomize.h"
#include "llfocusmgr.h"
#include "llfolderview.h"
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index 92f19c9232..4e5aaeb66a 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -35,7 +35,6 @@
#include "llagent.h"
#include "llagentui.h"
#include "lllogchat.h"
-#include "llfloaterchat.h"
#include "lltrans.h"
#include "llviewercontrol.h"
diff --git a/indra/newview/llmenucommands.cpp b/indra/newview/llmenucommands.cpp
index 757eb3c9bc..8d950f072d 100644
--- a/indra/newview/llmenucommands.cpp
+++ b/indra/newview/llmenucommands.cpp
@@ -46,7 +46,6 @@
#include "llcallingcard.h"
#include "llviewercontrol.h"
//#include "llfirstuse.h"
-#include "llfloaterchat.h"
#include "llfloaterworldmap.h"
#include "lllineeditor.h"
#include "llstatusbar.h"
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index af66b6e3de..cf4a08ce76 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -64,7 +64,6 @@
#include "llviewerwindow.h"
#include "llworld.h" //for particle system banning
#include "llchat.h"
-#include "llfloaterchat.h"
#include "llimview.h"
#include "llnotifications.h"
#include "lluistring.h"
@@ -532,9 +531,6 @@ void notify_automute_callback(const LLUUID& agent_id, const std::string& first_n
LLIMModel::getInstance()->addMessage(agent_id, SYSTEM_FROM, LLUUID::null, message);
}
-
- LLChat auto_chat(message);
- LLFloaterChat::addChat(auto_chat, FALSE, FALSE);
}
}
diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp
index d434017804..cd810b9793 100644
--- a/indra/newview/llnamebox.cpp
+++ b/indra/newview/llnamebox.cpp
@@ -53,6 +53,7 @@ LLNameBox::LLNameBox(const Params& p)
{
mNameID = LLUUID::null;
mLink = p.link;
+ mInitialValue = p.initial_value().asString();
LLNameBox::sInstances.insert(this);
setText(LLStringUtil::null);
}
@@ -67,17 +68,23 @@ void LLNameBox::setNameID(const LLUUID& name_id, BOOL is_group)
mNameID = name_id;
std::string name;
+ BOOL got_name = FALSE;
if (!is_group)
{
- gCacheName->getFullName(name_id, name);
+ got_name = gCacheName->getFullName(name_id, name);
}
else
{
- gCacheName->getGroupName(name_id, name);
+ got_name = gCacheName->getGroupName(name_id, name);
}
- setName(name, is_group);
+ // Got the name already? Set it.
+ // Otherwise it will be set later in refresh().
+ if (got_name)
+ setName(name, is_group);
+ else
+ setText(mInitialValue);
}
void LLNameBox::refresh(const LLUUID& id, const std::string& firstname,
diff --git a/indra/newview/llnamebox.h b/indra/newview/llnamebox.h
index 0109525e85..48b54faec8 100644
--- a/indra/newview/llnamebox.h
+++ b/indra/newview/llnamebox.h
@@ -76,6 +76,7 @@ private:
private:
LLUUID mNameID;
BOOL mLink;
+ std::string mInitialValue;
};
diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
index 7e6145f578..6375362ae2 100644
--- a/indra/newview/llnamelistctrl.cpp
+++ b/indra/newview/llnamelistctrl.cpp
@@ -74,12 +74,12 @@ void LLNameListCtrl::addNameItem(const LLUUID& agent_id, EAddPosition pos,
{
//llinfos << "LLNameListCtrl::addNameItem " << agent_id << llendl;
- std::string fullname;
- gCacheName->getFullName(agent_id, fullname);
-
- fullname.append(suffix);
+ NameItem item;
+ item.value = agent_id;
+ item.enabled = enabled;
+ item.target = INDIVIDUAL;
- addStringUUIDItem(fullname, agent_id, pos, enabled);
+ addNameItemRow(item, pos);
}
// virtual, public
@@ -130,11 +130,12 @@ BOOL LLNameListCtrl::handleDragAndDrop(
return handled;
}
-void LLNameListCtrl::showAvatarInspector(const LLUUID& avatar_id)
+void LLNameListCtrl::showInspector(const LLUUID& avatar_id, bool is_group)
{
- LLSD key;
- key["avatar_id"] = avatar_id;
- LLFloaterReg::showInstance("inspect_avatar", key);
+ if (is_group)
+ LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", avatar_id));
+ else
+ LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", avatar_id));
}
//virtual
@@ -147,7 +148,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
&& column_index == mNameColumnIndex)
{
// ...this is the column with the avatar name
- LLUUID avatar_id = hit_item->getValue().asUUID();
+ LLUUID avatar_id = getItemId(hit_item);
if (avatar_id.notNull())
{
// ...valid avatar id
@@ -164,9 +165,12 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop );
LLPointer<LLUIImage> icon = LLUI::getUIImage("Info_Small");
+ // Should we show a group or an avatar inspector?
+ bool is_group = hit_item->getValue()["is_group"].asBoolean();
+
LLToolTip::Params params;
params.background_visible( false );
- params.click_callback( boost::bind(&LLNameListCtrl::showAvatarInspector, this, avatar_id) );
+ params.click_callback( boost::bind(&LLNameListCtrl::showInspector, this, avatar_id, is_group) );
params.delay_time(0.0f); // spawn instantly on hover
params.image( icon );
params.message("");
@@ -220,9 +224,22 @@ LLScrollListItem* LLNameListCtrl::addElement(const LLSD& element, EAddPosition p
}
-LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem& name_item, EAddPosition pos)
+LLScrollListItem* LLNameListCtrl::addNameItemRow(
+ const LLNameListCtrl::NameItem& name_item,
+ EAddPosition pos,
+ std::string& suffix)
{
- LLScrollListItem* item = LLScrollListCtrl::addRow(name_item, pos);
+ LLUUID id = name_item.value().asUUID();
+ LLScrollListItem* item = NULL;
+
+ // Store item type so that we can invoke the proper inspector.
+ // *TODO Vadim: Is there a more proper way of storing additional item data?
+ {
+ LLNameListCtrl::NameItem name_item_(name_item);
+ name_item_.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP);
+ item = LLScrollListCtrl::addRow(name_item_, pos);
+ }
+
if (!item) return NULL;
// use supplied name by default
@@ -230,7 +247,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&
switch(name_item.target)
{
case GROUP:
- gCacheName->getGroupName(name_item.value().asUUID(), fullname);
+ gCacheName->getGroupName(id, fullname);
// fullname will be "nobody" if group not found
break;
case SPECIAL:
@@ -239,7 +256,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&
case INDIVIDUAL:
{
std::string name;
- if (gCacheName->getFullName(name_item.value().asUUID(), name))
+ if (gCacheName->getFullName(id, name))
{
fullname = name;
}
@@ -249,6 +266,12 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&
break;
}
+ // Append optional suffix.
+ if (!suffix.empty())
+ {
+ fullname.append(suffix);
+ }
+
LLScrollListCell* cell = item->getColumn(mNameColumnIndex);
if (cell)
{
@@ -270,15 +293,24 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&
// public
void LLNameListCtrl::removeNameItem(const LLUUID& agent_id)
{
- BOOL item_exists = selectByID( agent_id );
- if(item_exists)
+ // Find the item specified with agent_id.
+ S32 idx = -1;
+ for (item_list::iterator it = getItemList().begin(); it != getItemList().end(); it++)
{
- S32 index = getItemIndex(getFirstSelected());
- if(index >= 0)
+ LLScrollListItem* item = *it;
+ if (getItemId(item) == agent_id)
{
- deleteSingleItem(index);
+ idx = getItemIndex(item);
+ break;
}
}
+
+ // Remove it.
+ if (idx >= 0)
+ {
+ selectNthItem(idx); // not sure whether this is needed, taken from previous implementation
+ deleteSingleItem(idx);
+ }
}
// public
@@ -303,7 +335,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first,
for (iter = getItemList().begin(); iter != getItemList().end(); iter++)
{
LLScrollListItem* item = *iter;
- if (item->getUUID() == id)
+ if (getItemId(item) == id)
{
LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(0);
cell = item->getColumn(mNameColumnIndex);
@@ -343,3 +375,9 @@ void LLNameListCtrl::updateColumns()
}
}
}
+
+// static
+LLUUID LLNameListCtrl::getItemId(LLScrollListItem* item)
+{
+ return item->getValue()["uuid"].asUUID();
+}
diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h
index d0f0ec4d21..192a3a5afa 100644
--- a/indra/newview/llnamelistctrl.h
+++ b/indra/newview/llnamelistctrl.h
@@ -94,7 +94,7 @@ public:
void addNameItem(NameItem& item, EAddPosition pos = ADD_BOTTOM);
/*virtual*/ LLScrollListItem* addElement(const LLSD& element, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL);
- LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM);
+ LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM, std::string& suffix = LLStringUtil::null);
// Add a user to the list by name. It will be added, the name
// requested from the cache, and updated as necessary.
@@ -121,7 +121,8 @@ public:
/*virtual*/ void updateColumns();
private:
- void showAvatarInspector(const LLUUID& avatar_id);
+ void showInspector(const LLUUID& avatar_id, bool is_group);
+ static LLUUID getItemId(LLScrollListItem* item);
private:
S32 mNameColumnIndex;
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 0a180512ce..b049f914ad 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -582,7 +582,7 @@ void LLParticipantList::LLParticipantListMenu::moderateVoiceOtherParticipants(co
bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& userdata)
{
std::string item = userdata.asString();
- if (item == "can_mute_text" || "can_block" == item)
+ if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item)
{
return mUUIDs.front() != gAgentID;
}
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 2a40cbaba0..84bdaafacf 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -364,6 +364,12 @@ BOOL LLPreviewGesture::postBuild()
LLTextBox* text;
LLCheckBoxCtrl* check;
+ edit = getChild<LLLineEditor>("name");
+ edit->setKeystrokeCallback(onKeystrokeCommit, this);
+
+ edit = getChild<LLLineEditor>("desc");
+ edit->setKeystrokeCallback(onKeystrokeCommit, this);
+
edit = getChild<LLLineEditor>("trigger_editor");
edit->setKeystrokeCallback(onKeystrokeCommit, this);
edit->setCommitCallback(onCommitSetDirty, this);
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index 95756ac5f3..cc70360528 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -55,7 +55,6 @@
#include "llviewerobjectlist.h"
#include "llviewerregion.h"
#include "lldir.h"
-//#include "llfloaterchat.h"
#include "llviewerstats.h"
#include "llviewercontrol.h" // gSavedSettings
#include "llappviewer.h" // app_abort_quit()
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 646c9fb6a4..fccf71f3cb 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -79,7 +79,6 @@
#include "llslider.h"
#include "lldir.h"
#include "llcombobox.h"
-//#include "llfloaterchat.h"
#include "llviewerstats.h"
#include "llviewertexteditor.h"
#include "llviewerwindow.h"
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index 0adc9fc258..a00b6a9288 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -47,6 +47,7 @@
#include "llsyswellwindow.h"
#include "llimfloater.h"
#include "llscriptfloater.h"
+#include "llfontgl.h"
#include <algorithm>
@@ -568,6 +569,7 @@ void LLScreenChannel::showToastsTop()
void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
{
LLRect toast_rect;
+ LLRect tbox_rect;
LLToast::Params p;
p.lifetime_secs = timer;
p.enable_hide_btn = false;
@@ -582,9 +584,26 @@ void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
std::string text = LLTrans::getString("StartUpNotifications");
+ tbox_rect = text_box->getRect();
+ S32 tbox_width = tbox_rect.getWidth();
+ S32 tbox_vpad = text_box->getVPad();
+ S32 text_width = text_box->getDefaultFont()->getWidth(text);
+ S32 text_height = text_box->getTextPixelHeight();
+
+ // EXT - 3703 (Startup toast message doesn't fit toast width)
+ // Calculating TextBox HEIGHT needed to include the whole string according to the given WIDTH of the TextBox.
+ S32 new_tbox_height = (text_width/tbox_width + 1) * text_height;
+ // Calculating TOP position of TextBox
+ S32 new_tbox_top = new_tbox_height + tbox_vpad + gSavedSettings.getS32("ToastGap");
+ // Calculating toast HEIGHT according to the new TextBox size
+ S32 toast_height = new_tbox_height + tbox_vpad * 2;
+
+ tbox_rect.setLeftTopAndSize(tbox_rect.mLeft, new_tbox_top, tbox_rect.getWidth(), new_tbox_height);
+ text_box->setRect(tbox_rect);
+
toast_rect = mStartUpToastPanel->getRect();
mStartUpToastPanel->reshape(getRect().getWidth(), toast_rect.getHeight(), true);
- toast_rect.setLeftTopAndSize(0, toast_rect.getHeight()+gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());
+ toast_rect.setLeftTopAndSize(0, toast_height + gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_height);
mStartUpToastPanel->setRect(toast_rect);
text_box->setValue(text);
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index cf62d47362..0d9cf06bc3 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -72,6 +72,9 @@ LLScriptFloater::LLScriptFloater(const LLSD& key)
bool LLScriptFloater::toggle(const LLUUID& object_id)
{
+ // Force chiclet toggle on here because first onFocusReceived() will not toggle it on.
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(object_id, true);
+
LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);
LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);
@@ -180,6 +183,15 @@ void LLScriptFloater::setVisible(BOOL visible)
LLDockableFloater::setVisible(visible);
hideToastsIfNeeded();
+
+ if(!visible)
+ {
+ LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getObjectId());
+ if(chiclet)
+ {
+ chiclet->setToggleState(false);
+ }
+ }
}
void LLScriptFloater::onMouseDown()
@@ -199,6 +211,20 @@ void LLScriptFloater::onMouseDown()
}
}
+void LLScriptFloater::onFocusLost()
+{
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getObjectId(), false);
+}
+
+void LLScriptFloater::onFocusReceived()
+{
+ // first focus will be received before setObjectId() call - don't toggle chiclet
+ if(getObjectId().notNull())
+ {
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getObjectId(), true);
+ }
+}
+
void LLScriptFloater::hideToastsIfNeeded()
{
using namespace LLNotificationsUI;
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index ed10dc5fe9..f86605c5d1 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -174,6 +174,10 @@ protected:
*/
void onMouseDown();
+ /*virtual*/ void onFocusLost();
+
+ /*virtual*/ void onFocusReceived();
+
private:
LLToastNotifyPanel* mScriptForm;
LLUUID mObjectId;
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index ad88534a5d..88b4c34e2b 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -101,7 +101,6 @@
#include "llface.h"
#include "llfeaturemanager.h"
//#include "llfirstuse.h"
-#include "llfloaterchat.h"
#include "llfloaterhud.h"
#include "llfloaterland.h"
#include "llfloaterpreference.h"
@@ -958,13 +957,6 @@ bool idle_startup()
LLFile::mkdir(gDirUtilp->getChatLogsDir());
LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
- // chat history must be loaded AFTER chat directories are defined.
- if (!gNoRender && gSavedPerAccountSettings.getBOOL("LogShowHistory"))
- {
- LLFloaterChat::loadHistory();
- }
-
-
//good as place as any to create user windlight directories
std::string user_windlight_path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", ""));
LLFile::mkdir(user_windlight_path_name.c_str());
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 24895e7a35..8a36475510 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -40,7 +40,6 @@
#include "llcommandhandler.h"
#include "llviewercontrol.h"
#include "llfloaterbuycurrency.h"
-#include "llfloaterchat.h"
#include "llfloaterlagmeter.h"
#include "llpanelvolumepulldown.h"
#include "llfloaterregioninfo.h"
diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
index 224c5b64bc..edbaa0d45a 100644
--- a/indra/newview/lltoolbar.cpp
+++ b/indra/newview/lltoolbar.cpp
@@ -70,7 +70,6 @@
#include "llviewerwindow.h"
#include "lltoolgrab.h"
#include "llcombobox.h"
-#include "llfloaterchat.h"
#include "llimpanel.h"
#include "lllayoutstack.h"
@@ -281,21 +280,6 @@ void LLToolBar::updateCommunicateList()
}
itemp = communicate_button->addElement(contact_sd, ADD_TOP);
- LLSD communicate_sd;
- communicate_sd["value"] = "local chat";
- communicate_sd["columns"][0]["value"] = LLFloaterChat::getInstance()->getShortTitle();
-
- if (LLFloaterChat::getInstance() == frontmost_floater)
- {
- communicate_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL";
- communicate_sd["columns"][0]["font"]["style"] = "BOLD";
- if (selected.isUndefined())
- {
- selected = "local chat";
- }
- }
- itemp = communicate_button->addElement(communicate_sd, ADD_TOP);
-
communicate_button->addSeparator(ADD_TOP);
communicate_button->add(getString("Redock Windows"), LLSD("redock"), ADD_TOP);
communicate_button->addSeparator(ADD_TOP);
@@ -357,8 +341,7 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data)
if(chatterbox_instance)
{
chatterbox_instance->addFloater(LLFloaterMyFriends::getInstance(), FALSE);
- chatterbox_instance->addFloater(LLFloaterChat::getInstance(), FALSE);
-
+
LLUUID session_to_show;
std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it;
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index e81115c8ab..3a834e7532 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -54,7 +54,6 @@
#include "llfloaterbulkpermission.h"
#include "llfloaterbump.h"
#include "llfloatercamera.h"
-#include "llfloaterchat.h"
#include "llfloaterchatterbox.h"
#include "llfloaterdaycycle.h"
#include "llfloatersearch.h"
@@ -154,7 +153,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>);
LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>);
- LLFloaterReg::add("chat", "floater_chat_history.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChat>);
+ //LLFloaterReg::add("chat", "floater_chat_history.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChat>);
LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>);
LLFloaterReg::add("communicate", "floater_chatterbox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatterBox>);
LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 88a61c9d49..d96d7df24a 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -52,7 +52,6 @@
#include "llfloaterbuy.h"
#include "llfloaterbuycontents.h"
#include "llfloaterbuycurrency.h"
-#include "llfloaterchat.h"
#include "llfloatercustomize.h"
#include "llfloaterchatterbox.h"
#include "llfloatergodtools.h"
@@ -6374,51 +6373,8 @@ class LLToolsSelectedScriptAction : public view_listener_t
void handle_selected_texture_info(void*)
{
- for (LLObjectSelection::valid_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_begin();
- iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++)
- {
- LLSelectNode* node = *iter;
-
- std::string msg;
- msg.assign("Texture info for: ");
- msg.append(node->mName);
- LLChat chat(msg);
- LLFloaterChat::addChat(chat);
-
- U8 te_count = node->getObject()->getNumTEs();
- // map from texture ID to list of faces using it
- typedef std::map< LLUUID, std::vector<U8> > map_t;
- map_t faces_per_texture;
- for (U8 i = 0; i < te_count; i++)
- {
- if (!node->isTESelected(i)) continue;
-
- LLViewerTexture* img = node->getObject()->getTEImage(i);
- LLUUID image_id = img->getID();
- faces_per_texture[image_id].push_back(i);
- }
- // Per-texture, dump which faces are using it.
- map_t::iterator it;
- for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it)
- {
- LLUUID image_id = it->first;
- U8 te = it->second[0];
- LLViewerTexture* img = node->getObject()->getTEImage(te);
- S32 height = img->getHeight();
- S32 width = img->getWidth();
- S32 components = img->getComponents();
- msg = llformat("%dx%d %s on face ",
- width,
- height,
- (components == 4 ? "alpha" : "opaque"));
- for (U8 i = 0; i < it->second.size(); ++i)
- {
- msg.append( llformat("%d ", (S32)(it->second[i])));
- }
- LLChat chat(msg);
- LLFloaterChat::addChat(chat);
- }
- }
+ //useless without LLFloaterChat
+ //as since we don't use LLFloaterChat...
}
void handle_test_male(void*)
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index c929e81ea4..5279c4174a 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -54,7 +54,6 @@
//#include "llfirstuse.h"
#include "llfloaterbuycurrency.h"
#include "llfloaterbuyland.h"
-#include "llfloaterchat.h"
#include "llfloaterland.h"
#include "llfloaterregioninfo.h"
#include "llfloaterlandholdings.h"
@@ -835,9 +834,13 @@ bool check_offer_throttle(const std::string& from_name, bool check_only)
}
message << ", automatic preview disabled for "
<< OFFER_THROTTLE_TIME << " seconds.";
- chat.mText = message.str();
+
//this is kinda important, so actually put it on screen
- LLFloaterChat::addChat(chat, FALSE, FALSE);
+ std::string log_msg = message.str();
+ LLSD args;
+ args["MESSAGE"] = log_msg;
+ LLNotificationsUtil::add("SystemMessage", args);
+
throttle_logged=true;
}
return false;
@@ -1178,8 +1181,9 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
if (check_offer_throttle(mFromName, true))
{
log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");
- chat.mText = log_message;
- LLFloaterChat::addChatHistory(chat);
+ LLSD args;
+ args["MESSAGE"] = log_message;
+ LLNotificationsUtil::add("SystemMessage", args);
}
break;
@@ -1352,8 +1356,10 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
if (check_offer_throttle(mFromName, true))
{
log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");
- chat.mText = log_message;
- LLFloaterChat::addChatHistory(chat);
+ //TODO* should go to history only - how?
+ //LLSD args;
+ //args["MESSAGE"] = log_message;
+ //LLNotificationsUtil::add("SystemMessage", args);
}
// we will want to open this item when it comes back.
@@ -1395,13 +1401,11 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
// send the message
msg->sendReliable(mHost);
- log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";
- chat.mText = log_message;
- if( LLMuteList::getInstance()->isMuted(mFromID ) && ! LLMuteList::getInstance()->isLinden(mFromName) ) // muting for SL-42269
- {
- chat.mMuted = TRUE;
- }
- LLFloaterChat::addChatHistory(chat);
+ //TODO* should go to message history only...
+ //log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";
+ //LLSD args;
+ //args["MESSAGE"] = log_message;
+ //LLNotificationsUtil::add("SystemMessage", args);
if (busy && (!mFromGroup && !mFromObject))
{
@@ -1763,10 +1767,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
region_id,
position,
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;
- LLFloaterChat::addChat( chat, TRUE, TRUE );
}
else if (from_id.isNull())
{
@@ -1822,19 +1822,24 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
region_id,
position,
true);
- chat.mText = std::string("IM: ") + name + separator_string + saved + message;
-
- BOOL local_agent = FALSE;
- LLFloaterChat::addChat( chat, TRUE, local_agent );
}
else
{
// muted user, so don't start an IM session, just record line in chat
// history. Pretend the chat is from a local agent,
// so it will go into the history but not be shown on screen.
+
+ //TODO* should go to message hisyory only
+ //and this is not system message...
+ //LLSD args;
+ //args["MESSAGE"] = buffer;
+ //LLNotificationsUtil::add("SystemMessage", args);
+
+ /*
chat.mText = buffer;
BOOL local_agent = TRUE;
LLFloaterChat::addChat( chat, TRUE, local_agent );
+ */
}
}
break;
@@ -2138,9 +2143,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
region_id,
position,
true);
-
- chat.mText = std::string("IM: ") + name + separator_string + saved + message;
- LLFloaterChat::addChat(chat, TRUE, is_this_agent);
}
break;
@@ -2687,22 +2689,8 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
chat.mMuted = is_muted && !is_linden;
- if (!visible_in_chat_bubble
- && (is_linden || !is_busy || is_owned_by_me))
- {
- // show on screen and add to history
- LLNotificationsUI::LLNotificationManager::instance().onChat(
+ LLNotificationsUI::LLNotificationManager::instance().onChat(
chat, LLNotificationsUI::NT_NEARBYCHAT);
-
- LLFloaterChat::addChat(chat, FALSE, FALSE);
- }
- else
- {
- LLNotificationsUI::LLNotificationManager::instance().onChat(
- chat, LLNotificationsUI::NT_NEARBYCHAT);
- // adding temporarily
- LLFloaterChat::addChatHistory(chat);
- }
}
}
@@ -3087,9 +3075,11 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
if (avatarp)
{
// Chat the "back" SLURL. (DEV-4907)
- LLChat chat("Teleport completed from " + gAgent.getTeleportSourceSLURL());
- chat.mSourceType = CHAT_SOURCE_SYSTEM;
- LLFloaterChat::addChatHistory(chat);
+
+ //should go to history only so leave commented
+ //LLSD args;
+ //args["MESSAGE"] = message;
+ //LLNotificationsUtil::add("SystemMessage", args);
// Set the new position
avatarp->setPositionAgent(agent_pos);
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 300aea1620..2e92512b31 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -37,7 +37,6 @@
#include "llagent.h"
#include "llaudioengine.h"
#include "llavataractions.h"
-#include "llfloaterchat.h"
#include "llfloaterreg.h"
#include "llfloaterworldmap.h"
#include "llfocusmgr.h"
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 769344d183..c1817496b1 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -101,7 +101,6 @@
#include "llfloaterbuildoptions.h"
#include "llfloaterbuyland.h"
#include "llfloatercamera.h"
-#include "llfloaterchat.h"
#include "llfloaterchatterbox.h"
#include "llfloatercustomize.h"
#include "llfloaterland.h"
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 30f00f04af..51a75b5825 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -70,7 +70,6 @@
#include "llvoicechannel.h"
#include "llfloaterfriends.h" //VIVOX, inorder to refresh communicate panel
-#include "llfloaterchat.h" // for LLFloaterChat::addChat()
// for base64 decoding
#include "apr_base64.h"
@@ -4709,10 +4708,6 @@ void LLVoiceClient::messageEvent(
LLUUID::null, // default arg
LLVector3::zero, // default arg
true); // prepend name and make it a link to the user's profile
-
- chat.mText = std::string("IM: ") + session->mName + std::string(": ") + message;
- // If the chat should come in quietly (i.e. we're in busy mode), pretend it's from a local agent.
- LLFloaterChat::addChat( chat, TRUE, quiet_chat );
}
}
}
diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml
index 31263fbea8..805ffbae66 100644
--- a/indra/newview/skins/default/xui/en/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml
@@ -47,6 +47,9 @@
name="IM">
<menu_item_call.on_click
function="Avatar.IM" />
+ <menu_item_call.on_enable
+ function="ParticipantList.EnableItem"
+ parameter="can_im" />
</menu_item_call>
<menu_item_call
label="Call"
@@ -65,6 +68,9 @@
name="Share">
<menu_item_call.on_click
function="Avatar.Share" />
+ <menu_item_call.on_enable
+ function="ParticipantList.EnableItem"
+ parameter="can_share" />
</menu_item_call>
<menu_item_call
label="Pay"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
index 172cf18fc4..8268937e7f 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -304,8 +304,10 @@
<name_box
follows="left|top|right"
height="30"
+ initial_value="(retrieving)"
layout="topleft"
left="0"
+ link="true"
name="partner_text"
top="0"
width="285"
diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
index 8188048821..5b0a7107e4 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -88,6 +88,7 @@ background_visible="true"
initial_value="(retrieving)"
layout="topleft"
left_delta="0"
+ link="true"
name="founder_name"
top_pad="2"
use_ellipses="true"
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
index 27c1af1860..2659156ba8 100644
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -267,6 +267,7 @@
<name_box
follows="left|top"
height="10"
+ initial_value="(retrieving)"
layout="topleft"
left="0"
link="true"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 597b6410cd..2b907ed251 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -247,6 +247,7 @@
<name_box
follows="left|top"
height="10"
+ initial_value="(retrieving)"
layout="topleft"
left="0"
link="true"
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index bfca2f2e46..7a6089c74e 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -53,7 +53,7 @@
label_shadow="false"
name="buycurrency"
tool_tip="My Balance"
- top="5"
+ top="3"
width="100" />
<button
auto_resize="true"
@@ -71,7 +71,7 @@
name="buyL"
pad_right="20px"
tool_tip="Click to buy more L$"
- top="5"
+ top="2"
width="100" />
<text
type="string"
@@ -80,7 +80,7 @@
follows="right|bottom"
halign="right"
height="16"
- top="7"
+ top="5"
layout="topleft"
left_pad="0"
name="TimeText"
@@ -96,7 +96,7 @@
image_unselected="Audio_Off"
is_toggle="true"
left_pad="18"
- top="4"
+ top="2"
name="volume_btn"
tool_tip="Global Volume Control"
width="16" />
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index ba2d61afb7..d198237e5d 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -39,7 +39,8 @@
name="toast_text"
word_wrap="true"
text_color="white"
- top="5"
+ top="5"
+ v_pad="5"
use_ellipses="true"
width="260">
Toast text;
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
index 693c43f141..2bec5b8a29 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
@@ -4,6 +4,13 @@
name="im_adhoc_chiclet"
show_speaker="false"
width="25">
+ <chiclet_im_adhoc.chiclet_button
+ height="25"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ name="chiclet_button"
+ tab_stop="false"
+ width="25"/>
<chiclet_im_adhoc.speaker
auto_update="true"
draw_border="false"
@@ -13,11 +20,13 @@
visible="false"
width="20" />
<chiclet_im_adhoc.avatar_icon
+ bottom="3"
follows="left|top|bottom"
- height="22"
+ height="19"
+ left="3"
mouse_opaque="true"
name="adhoc_icon"
- width="22" />
+ width="19" />
<chiclet_im_adhoc.unread_notifications
font_halign="center"
height="25"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
index f4fc58701c..1d7f3208af 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
@@ -4,6 +4,13 @@
name="im_group_chiclet"
show_speaker="false"
width="25">
+ <chiclet_im_group.chiclet_button
+ height="25"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ name="chiclet_button"
+ tab_stop="false"
+ width="25"/>
<chiclet_im_group.speaker
auto_update="true"
draw_border="false"
@@ -13,13 +20,14 @@
visible="false"
width="20" />
<chiclet_im_group.group_icon
+ bottom="3"
default_icon="Generic_Group"
follows="left|top|bottom"
- height="18"
- bottom_pad="4"
- mouse_opaque="true"
+ height="19"
+ left="3"
+ mouse_opaque="false"
name="group_icon"
- width="18" />
+ width="19" />
<chiclet_im_group.unread_notifications
height="25"
font_halign="center"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
index 535113f717..e6289f7cef 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
@@ -4,6 +4,13 @@
name="im_p2p_chiclet"
show_speaker="false"
width="25">
+ <chiclet_im_p2p.chiclet_button
+ height="25"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ name="chiclet_button"
+ tab_stop="false"
+ width="25"/>
<chiclet_im_p2p.speaker
auto_update="true"
draw_border="false"
@@ -13,11 +20,13 @@
visible="false"
width="20"/>
<chiclet_im_p2p.avatar_icon
+ bottom="3"
follows="left|top|bottom"
- height="22"
- mouse_opaque="true"
+ height="19"
+ left="3"
+ mouse_opaque="false"
name="avatar_icon"
- width="22" />
+ width="19" />
<chiclet_im_p2p.unread_notifications
height="25"
font_halign="center"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
index 86bea9be50..138b50c968 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
@@ -3,14 +3,22 @@
height="25"
name="offer_chiclet"
width="25">
+ <chiclet_offer.chiclet_button
+ height="25"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ name="chiclet_button"
+ tab_stop="false"
+ width="25"/>
<chiclet_offer.icon
+ bottom="3"
default_icon="Generic_Object_Small"
follows="all"
- height="20"
+ height="19"
+ left="3"
mouse_opaque="false"
name="chiclet_icon"
- bottom_pad="2"
- width="20" />
+ width="19" />
<chiclet_offer.new_message_icon
bottom="11"
height="14"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
index b1f9f5b0e8..ecf149dc76 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
@@ -3,14 +3,22 @@
height="25"
name="script_chiclet"
width="25">
+ <chiclet_script.chiclet_button
+ height="25"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ name="chiclet_button"
+ tab_stop="false"
+ width="25"/>
<chiclet_script.icon
+ bottom="3"
follows="all"
- height="20"
+ height="19"
image_name="Generic_Object_Small"
+ left="3"
mouse_opaque="false"
name="chiclet_icon"
- width="20"
- bottom_pad="2" />
+ width="19"/>
<chiclet_script.new_message_icon
bottom="11"
height="14"