summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llbottomtray.cpp131
-rw-r--r--indra/newview/llbottomtray.h22
-rw-r--r--indra/newview/llchathistory.cpp4
-rw-r--r--indra/newview/llchatitemscontainerctrl.cpp2
-rw-r--r--indra/newview/llfloatergesture.cpp30
-rw-r--r--indra/newview/llfloatergesture.h6
-rw-r--r--indra/newview/llimfloater.cpp2
-rw-r--r--indra/newview/llinspectavatar.cpp9
-rw-r--r--indra/newview/lljoystickbutton.cpp6
-rw-r--r--indra/newview/llmoveview.cpp115
-rw-r--r--indra/newview/llmoveview.h35
-rw-r--r--indra/newview/llnearbychat.cpp11
-rw-r--r--indra/newview/llnearbychat.h2
-rw-r--r--indra/newview/llsyswellwindow.cpp4
-rw-r--r--indra/newview/llviewerchat.cpp2
-rw-r--r--indra/newview/llviewerwindow.cpp2
-rw-r--r--indra/newview/skins/default/xui/en/floater_gesture.xml15
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_session.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_sys_well.xml2
-rw-r--r--indra/newview/skins/default/xui/en/main_view.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray.xml14
-rw-r--r--indra/newview/skins/default/xui/en/panel_chat_item.xml10
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_notify.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_teleport_history_item.xml4
27 files changed, 323 insertions, 116 deletions
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 958dbf226a..3c34aa4fa4 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -317,6 +317,10 @@ BOOL LLBottomTray::postBuild()
// Registering Chat Bar to receive Voice client status change notifications.
gVoiceClient->addObserver(this);
+ mObjectDefaultWidthMap[RS_BUTTON_GESTURES] = mGesturePanel->getRect().getWidth();
+ mObjectDefaultWidthMap[RS_BUTTON_MOVEMENT] = mMovementPanel->getRect().getWidth();
+ mObjectDefaultWidthMap[RS_BUTTON_CAMERA] = mCamPanel->getRect().getWidth();
+
return TRUE;
}
@@ -402,7 +406,6 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
}
}
- lldebugs << "There is no enough width to reshape all children: " << extra_shrink_width << llendl;
if (should_be_reshaped)
{
lldebugs << "Reshape all children with width: " << width << llendl;
@@ -473,7 +476,12 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width)
S32 buttons_freed_width = 0;
if (still_should_be_processed)
{
- processHideButton(RS_BUTTON_SNAPSHOT, &delta_width, &buttons_freed_width);
+ processShrinkButtons(&delta_width);
+
+ if (delta_width < 0)
+ {
+ processHideButton(RS_BUTTON_SNAPSHOT, &delta_width, &buttons_freed_width);
+ }
if (delta_width < 0)
{
@@ -493,7 +501,7 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width)
if (delta_width < 0)
{
extra_shrink_width = -delta_width;
- lldebugs << "There is no enough room for bottom tray, resizing still should be processed: "
+ llwarns << "There is no enough width to reshape all children: "
<< extra_shrink_width << llendl;
}
@@ -551,7 +559,7 @@ void LLBottomTray::processWidthIncreased(S32 delta_width)
processShowButton(RS_BUTTON_SNAPSHOT, &available_width, &buttons_required_width);
}
- // if we have to show some buttons but whidth increasing is not enough...
+ // if we have to show some buttons but width increasing is not enough...
if (buttons_required_width > 0 && delta_width < buttons_required_width)
{
// ... let's shrink nearby chat & chiclet panels
@@ -587,6 +595,8 @@ void LLBottomTray::processWidthIncreased(S32 delta_width)
// shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels
delta_width -= buttons_required_width;
+ processExtendButtons(&delta_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)
@@ -656,6 +666,119 @@ void LLBottomTray::processHideButton(EResizeState processed_object_type, S32* re
}
}
+void LLBottomTray::processShrinkButtons(S32* required_width)
+{
+ processShrinkButton(RS_BUTTON_CAMERA, required_width);
+
+ if (*required_width < 0)
+ {
+ processShrinkButton(RS_BUTTON_MOVEMENT, required_width);
+ }
+ if (*required_width < 0)
+ {
+ processShrinkButton(RS_BUTTON_GESTURES, required_width);
+ }
+}
+
+void LLBottomTray::processShrinkButton(EResizeState processed_object_type, /*const std::string& panel_name, */S32* required_width)
+{
+ LLPanel* panel = mStateProcessedObjectMap[processed_object_type];
+ if (NULL == panel)
+ {
+ lldebugs << "There is no object to process for type: " << processed_object_type << llendl;
+ return;
+ }
+
+ if (panel->getVisible())
+ {
+ S32 panel_width = panel->getRect().getWidth();
+ S32 panel_min_width = 0;
+ std::string panel_name = panel->getName();
+ bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width, NULL);
+ S32 possible_shrink_width = panel_width - panel_min_width;
+
+ if (!success)
+ {
+ lldebugs << "Panel was not found to get its min width: " << panel_name << llendl;
+ }
+ // we have some space to free by shrinking the button
+ else if (possible_shrink_width > 0)
+ {
+ // let calculate real width to shrink
+
+ // 1. apply all possible width
+ *required_width += possible_shrink_width;
+
+ // 2. it it is too much...
+ if (*required_width > 0)
+ {
+ // reduce applied shrunk width to the excessive value.
+ possible_shrink_width -= *required_width;
+ *required_width = 0;
+ }
+ panel->reshape(panel_width - possible_shrink_width, panel->getRect().getHeight());
+
+ lldebugs << "Shrunk panel: " << panel_name
+ << ", shrunk width: " << possible_shrink_width
+ << ", rest width to process: " << *required_width
+ << llendl;
+ }
+ }
+}
+
+
+void LLBottomTray::processExtendButtons(S32* available_width)
+{
+ processExtendButton(RS_BUTTON_GESTURES, available_width);
+
+ if (*available_width > 0)
+ {
+ processExtendButton(RS_BUTTON_CAMERA, available_width);
+ }
+ if (*available_width > 0)
+ {
+ processExtendButton(RS_BUTTON_MOVEMENT, available_width);
+ }
+}
+
+void LLBottomTray::processExtendButton(EResizeState processed_object_type, S32* available_width)
+{
+ LLPanel* panel = mStateProcessedObjectMap[processed_object_type];
+ if (NULL == panel)
+ {
+ lldebugs << "There is no object to process for type: " << processed_object_type << llendl;
+ return;
+ }
+
+ if (!panel->getVisible()) return;
+
+ S32 panel_max_width = mObjectDefaultWidthMap[processed_object_type];
+ S32 panel_width = panel->getRect().getWidth();
+ S32 possible_extend_width = panel_max_width - panel_width;
+
+ if (possible_extend_width > 0)
+ {
+ // let calculate real width to extend
+
+ // 1. apply all possible width
+ *available_width -= possible_extend_width;
+
+ // 2. it it is too much...
+ if (*available_width < 0)
+ {
+ // reduce applied extended width to the excessive value.
+ possible_extend_width += *available_width;
+ *available_width = 0;
+ }
+ panel->reshape(panel_width + possible_extend_width, panel->getRect().getHeight());
+
+ lldebugs << "Extending panel: " << panel->getName()
+ << ", extended width: " << possible_extend_width
+ << ", rest width to process: " << *available_width
+ << llendl;
+ }
+}
+
bool LLBottomTray::canButtonBeShown(EResizeState processed_object_type) const
{
bool can_be_shown = mResizeState & processed_object_type;
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index 8989816bfe..97bcc23403 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -98,7 +98,6 @@ private:
, 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;
S32 processWidthDecreased(S32 delta_width);
@@ -108,6 +107,24 @@ private:
void processHideButton(EResizeState processed_object_type, S32* required_width, S32* buttons_freed_width);
/**
+ * Shrinks shown buttons to reduce total taken space.
+ *
+ * @param - required_width - width which buttons can use to be shrunk. It is a negative value.
+ * It is increased on the value processed by buttons.
+ */
+ void processShrinkButtons(S32* required_width);
+ void processShrinkButton(EResizeState processed_object_type, S32* required_width);
+
+ /**
+ * Extends shown buttons to increase total taken space.
+ *
+ * @param - available_width - width which buttons can use to be extended. It is a positive value.
+ * It is decreased on the value processed by buttons.
+ */
+ void processExtendButtons(S32* available_width);
+ void processExtendButton(EResizeState processed_object_type, S32* available_width);
+
+ /**
* Determines if specified by type object can be shown. It should be hidden by shrink before.
*
* Processes buttons a such way to show buttons in constant order:
@@ -140,6 +157,9 @@ private:
typedef std::map<EResizeState, LLPanel*> state_object_map_t;
state_object_map_t mStateProcessedObjectMap;
+ typedef std::map<EResizeState, S32> state_object_width_map_t;
+ state_object_width_map_t mObjectDefaultWidthMap;
+
protected:
LLBottomTray(const LLSD& key = LLSD());
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index f9c4a23f12..cd5c5edac0 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -46,6 +46,8 @@
#include "llfloaterreg.h"
#include "llmutelist.h"
+#include "llsidetray.h"//for blocked objects panel
+
static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
std::string formatCurrentTime()
@@ -92,6 +94,8 @@ public:
else if (level == "block")
{
LLMuteList::getInstance()->add(LLMute(getAvatarId(), mFrom, LLMute::OBJECT));
+
+ LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().insert("blocked_to_select", getAvatarId()));
}
}
diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
index b1dee46d2e..997aed4277 100644
--- a/indra/newview/llchatitemscontainerctrl.cpp
+++ b/indra/newview/llchatitemscontainerctrl.cpp
@@ -175,8 +175,6 @@ void LLNearbyChatToastPanel::init(LLSD& notification)
caption->getChild<LLTextBox>("sender_name", false)->setText(str_sender , style_params);
- caption->getChild<LLTextBox>("msg_time", false)->setText(appendTime() , style_params );
-
LLChatMsgBox* msg_text = getChild<LLChatMsgBox>("msg_text", false);
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index 854d02873a..af86274472 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -161,6 +161,7 @@ BOOL LLFloaterGesture::postBuild()
getChild<LLUICtrl>("play_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickPlay, this));
getChild<LLUICtrl>("stop_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickPlay, this));
+ getChild<LLButton>("activate_btn")->setClickedCallback(boost::bind(&LLFloaterGesture::onActivateBtnClick, this));
getChild<LLUICtrl>("new_gesture_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickNew, this));
@@ -179,7 +180,7 @@ BOOL LLFloaterGesture::postBuild()
childSetFocus("gesture_list");
- LLCtrlListInterface *list = childGetListInterface("gesture_list");
+ LLCtrlListInterface *list = getGestureList();
if (list)
{
const BOOL ascending = TRUE;
@@ -198,7 +199,7 @@ void LLFloaterGesture::refreshAll()
{
buildGestureList();
- LLCtrlListInterface *list = childGetListInterface("gesture_list");
+ LLCtrlListInterface *list = getGestureList();
if (!list) return;
if (mSelectedID.isNull())
@@ -219,7 +220,7 @@ void LLFloaterGesture::refreshAll()
void LLFloaterGesture::buildGestureList()
{
- LLCtrlListInterface *list = childGetListInterface("gesture_list");
+ LLCtrlListInterface *list = getGestureList();
LLCtrlScrollInterface *scroll = childGetScrollInterface("gesture_list");
if (! (list && scroll)) return;
@@ -347,7 +348,7 @@ void LLFloaterGesture::addGesture(const LLUUID& item_id , LLMultiGesture* gestur
void LLFloaterGesture::onClickInventory()
{
- LLCtrlListInterface *list = childGetListInterface("gesture_list");
+ LLCtrlListInterface *list = getGestureList();
if (!list) return;
const LLUUID& item_id = list->getCurrentID();
@@ -358,7 +359,7 @@ void LLFloaterGesture::onClickInventory()
void LLFloaterGesture::onClickPlay()
{
- LLCtrlListInterface *list = childGetListInterface("gesture_list");
+ LLCtrlListInterface *list = getGestureList();
if (!list) return;
const LLUUID& item_id = list->getCurrentID();
if(item_id.isNull()) return;
@@ -396,10 +397,27 @@ void LLFloaterGesture::onClickNew()
LLInventoryType::IT_GESTURE, NOT_WEARABLE, PERM_MOVE | PERM_TRANSFER, cb);
}
+void LLFloaterGesture::onActivateBtnClick()
+{
+ LLCtrlListInterface* list = getGestureList();
+
+ LLUUID gesture_inv_id = list->getSelectedValue();
+ LLGestureManager* gm = LLGestureManager::getInstance();
+
+ if(gm->isGestureActive(gesture_inv_id))
+ {
+ gm->deactivateGesture(gesture_inv_id);
+ }
+ else
+ {
+ gm->activateGesture(gesture_inv_id);
+ }
+}
+
void LLFloaterGesture::onClickEdit()
{
- LLCtrlListInterface *list = childGetListInterface("gesture_list");
+ LLCtrlListInterface *list = getGestureList();
if (!list) return;
const LLUUID& item_id = list->getCurrentID();
diff --git a/indra/newview/llfloatergesture.h b/indra/newview/llfloatergesture.h
index e7819d2a03..50bef818da 100644
--- a/indra/newview/llfloatergesture.h
+++ b/indra/newview/llfloatergesture.h
@@ -77,7 +77,11 @@ protected:
void onClickNew();
void onCommitList();
void playGesture(LLUUID item_id);
-
+ LLCtrlListInterface* getGestureList() const
+ {
+ return childGetListInterface("gesture_list");
+ }
+ void onActivateBtnClick();
protected:
LLUUID mSelectedID;
LLUUID mGestureFolderID;
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 2c6543d6ca..c2c83191e0 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -367,8 +367,6 @@ void LLIMFloater::setDocked(bool docked, bool pop_on_undock)
LLNotificationsUI::LLScreenChannel* channel = dynamic_cast<LLNotificationsUI::LLScreenChannel*>
(LLNotificationsUI::LLChannelManager::getInstance()->
findChannelByID(LLUUID(gSavedSettings.getString("NotificationChannelUUID"))));
-
- setCanResize(!docked);
LLTransientDockableFloater::setDocked(docked, pop_on_undock);
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 8dc7833f6a..baddd90d46 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -117,6 +117,9 @@ private:
bool onVisibleZoomIn();
void onClickMuteVolume();
void onVolumeChange(const LLSD& data);
+
+ // Is used to determine if "Add friend" option should be enabled in gear menu
+ bool isNotFriend();
// Callback for gCacheName to look up avatar name
void nameUpdatedCallback(
@@ -208,6 +211,7 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)
boost::bind(&LLInspectAvatar::onVisibleFreezeEject, this));
mVisibleCallbackRegistrar.add("InspectAvatar.VisibleZoomIn",
boost::bind(&LLInspectAvatar::onVisibleZoomIn, this));
+ mEnableCallbackRegistrar.add("InspectAvatar.Gear.Enable", boost::bind(&LLInspectAvatar::isNotFriend, this));
// can't make the properties request until the widgets are constructed
// as it might return immediately, so do it in postBuild.
@@ -473,6 +477,11 @@ void LLInspectAvatar::onClickViewProfile()
closeFloater();
}
+bool LLInspectAvatar::isNotFriend()
+{
+ return !LLAvatarActions::isFriend(mAvatarID);
+}
+
bool LLInspectAvatar::onVisibleFindOnMap()
{
return gAgent.isGodlike() || is_agent_mappable(mAvatarID);
diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp
index 0acc67ff5a..2cc5c8335d 100644
--- a/indra/newview/lljoystickbutton.cpp
+++ b/indra/newview/lljoystickbutton.cpp
@@ -136,13 +136,13 @@ void LLJoystick::updateSlop()
bool LLJoystick::pointInCircle(S32 x, S32 y) const
{
- if(this->getLocalRect().mTop!=this->getLocalRect().mRight)
+ if(this->getLocalRect().getHeight() != this->getLocalRect().getWidth())
{
llwarns << "Joystick shape is not square"<<llendl;
- return TRUE;
+ return true;
}
//center is x and y coordinates of center of joystick circle, and also its radius
- int center = this->getLocalRect().mTop/2;
+ int center = this->getLocalRect().getHeight()/2;
bool in_circle = (x - center) * (x - center) + (y - center) * (y - center) <= center * center;
return in_circle;
}
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index e3ba1b8e4a..0ee883e221 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -83,6 +83,11 @@ LLFloaterMove::LLFloaterMove(const LLSD& key)
{
}
+LLFloaterMove::~LLFloaterMove()
+{
+ LLPanelStandStopFlying::getInstance()->reparent(NULL);
+}
+
// virtual
BOOL LLFloaterMove::postBuild()
{
@@ -425,42 +430,15 @@ void LLFloaterMove::showModeButtons(BOOL bShow)
return;
mModeActionsPanel->setVisible(bShow);
- if (isDocked())
- {
- return;
- }
-
- updateHeight(bShow);
-}
-
-void LLFloaterMove::updateHeight(bool show_mode_buttons)
-{
- static bool size_changed = false;
- static S32 origin_height = getRect().getHeight();
- LLRect rect = getRect();
-
- static S32 mode_panel_height = mModeActionsPanel->getRect().getHeight();
-
- S32 newHeight = getRect().getHeight();
-
- if (!show_mode_buttons && origin_height == newHeight)
- {
- newHeight -= mode_panel_height;
- size_changed = true;
- }
- else if (show_mode_buttons && origin_height > newHeight)
+ if (bShow)
+ LLPanelStandStopFlying::getInstance()->reparent(NULL);
+ else
{
- newHeight += mode_panel_height;
- size_changed = true;
+ LLPanelStandStopFlying* ssf_panel = LLPanelStandStopFlying::getInstance();
+ ssf_panel->reparent(this);
+ const LLRect& mode_actions_rect = mModeActionsPanel->getRect();
+ ssf_panel->setOrigin(mode_actions_rect.mLeft, mode_actions_rect.mBottom);
}
-
- if (!size_changed)
- return;
-
- rect.setLeftTopAndSize(rect.mLeft, rect.mTop, rect.getWidth(), newHeight);
- reshape(rect.getWidth(), rect.getHeight());
- setRect(rect);
- size_changed = false;
}
//static
@@ -504,14 +482,6 @@ void LLFloaterMove::onOpen(const LLSD& key)
//virtual
void LLFloaterMove::setDocked(bool docked, bool pop_on_undock/* = true*/)
{
- LLDockableFloater::setDocked(docked, pop_on_undock);
- bool show_mode_buttons = isDocked() || !gAgent.getFlying();
-
- if (!isMinimized())
- {
- updateHeight(show_mode_buttons);
- }
-
LLTransientDockableFloater::setDocked(docked, pop_on_undock);
}
@@ -535,7 +505,8 @@ void LLFloaterMove::setModeButtonToggleState(const EMovementMode mode)
/************************************************************************/
LLPanelStandStopFlying::LLPanelStandStopFlying() :
mStandButton(NULL),
- mStopFlyingButton(NULL)
+ mStopFlyingButton(NULL),
+ mAttached(false)
{
// make sure we have the only instance of this class
static bool b = true;
@@ -624,6 +595,45 @@ BOOL LLPanelStandStopFlying::handleToolTip(S32 x, S32 y, MASK mask)
return TRUE;
}
+void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view)
+{
+ LLPanel* parent = dynamic_cast<LLPanel*>(getParent());
+ if (!parent)
+ {
+ llwarns << "Stand/stop flying panel parent is unset" << llendl;
+ return;
+ }
+
+ if (move_view != NULL)
+ {
+ llassert(move_view != parent); // sanity check
+
+ // Save our original container.
+ if (!mOriginalParent.get())
+ mOriginalParent = parent->getHandle();
+
+ // Attach to movement controls.
+ parent->removeChild(this);
+ move_view->addChild(this);
+ // Origin must be set by movement controls.
+ mAttached = true;
+ }
+ else
+ {
+ if (!mOriginalParent.get())
+ {
+ llwarns << "Original parent of the stand / stop flying panel not found" << llendl;
+ return;
+ }
+
+ // Detach from movement controls.
+ parent->removeChild(this);
+ mOriginalParent.get()->addChild(this);
+ mAttached = false;
+ updatePosition(); // don't defer until next draw() to avoid flicker
+ }
+}
+
//////////////////////////////////////////////////////////////////////////
// Private Section
//////////////////////////////////////////////////////////////////////////
@@ -668,27 +678,14 @@ void LLPanelStandStopFlying::onStopFlyingButtonClick()
*/
void LLPanelStandStopFlying::updatePosition()
{
-
LLBottomTray* tray = LLBottomTray::getInstance();
- if (!tray) return;
+ if (!tray || mAttached) return;
LLButton* movement_btn = tray->getChild<LLButton>(BOTTOM_TRAY_BUTTON_NAME);
- //align centers of a button and a floater
+ // Align centers of the button and the panel.
S32 x = movement_btn->calcScreenRect().getCenterX() - getRect().getWidth()/2;
-
- S32 y = 0;
-
- LLFloater *move_floater = LLFloaterReg::findInstance("moveview");
- if (move_floater)
- {
- if (move_floater->isDocked())
- {
- y = move_floater->getRect().mBottom + getRect().getHeight();
- }
- }
-
- setOrigin(x, y);
+ setOrigin(x, 0);
}
diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h
index cee6078ee9..2664fe6e40 100644
--- a/indra/newview/llmoveview.h
+++ b/indra/newview/llmoveview.h
@@ -46,11 +46,12 @@ class LLJoystickAgentSlide;
class LLFloaterMove
: public LLTransientDockableFloater
{
+ LOG_CLASS(LLFloaterMove);
friend class LLFloaterReg;
private:
LLFloaterMove(const LLSD& key);
- ~LLFloaterMove() {}
+ ~LLFloaterMove();
public:
/*virtual*/ BOOL postBuild();
@@ -96,7 +97,6 @@ private:
void updateButtonsWithMovementMode(const EMovementMode newMode);
void updatePosition();
void showModeButtons(BOOL bShow);
- void updateHeight(bool show_mode_buttons);
public:
@@ -126,6 +126,7 @@ private:
*/
class LLPanelStandStopFlying : public LLPanel
{
+ LOG_CLASS(LLPanelStandStopFlying);
public:
typedef enum stand_stop_flying_mode_t
{
@@ -133,6 +134,19 @@ public:
SSFM_STOP_FLYING
} EStandStopFlyingMode;
+ /**
+ * Attach or detach the panel to/from the movement controls floater.
+ *
+ * Called when the floater gets opened/closed, user sits, stands up or starts/stops flying.
+ *
+ * @param move_view The floater to attach to (not always accessible via floater registry).
+ * If NULL is passed, the panel gets reparented to its original container.
+ *
+ * @see mAttached
+ * @see mOriginalParent
+ */
+ void reparent(LLFloaterMove* move_view);
+
static LLPanelStandStopFlying* getInstance();
static void setStandStopFlyingMode(EStandStopFlyingMode mode);
static void clearStandStopFlyingMode(EStandStopFlyingMode mode);
@@ -157,6 +171,23 @@ private:
LLButton* mStandButton;
LLButton* mStopFlyingButton;
+
+ /**
+ * The original parent of the panel.
+ *
+ * Makes it possible to move (reparent) the panel to the movement controls floater and back.
+ *
+ * @see reparent()
+ */
+ LLHandle<LLPanel> mOriginalParent;
+
+ /**
+ * True if the panel is currently attached to the movement controls floater.
+ *
+ * @see reparent()
+ * @see updatePosition()
+ */
+ bool mAttached;
};
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index cae5c52378..f1cd8e558f 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -89,8 +89,6 @@ BOOL LLNearbyChat::postBuild()
mChatHistory = getChild<LLChatHistory>("chat_history");
- setCanResize(true);
-
if(!LLDockableFloater::postBuild())
return false;
@@ -98,7 +96,7 @@ BOOL LLNearbyChat::postBuild()
{
setDockControl(new LLDockControl(
LLBottomTray::getInstance()->getNearbyChatBar(), this,
- getDockTongue(), LLDockControl::LEFT, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
+ getDockTongue(), LLDockControl::TOP, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
}
return true;
@@ -217,13 +215,6 @@ void LLNearbyChat::onOpen(const LLSD& key )
}
}
-void LLNearbyChat::setDocked (bool docked, bool pop_on_undock)
-{
- LLDockableFloater::setDocked(docked, pop_on_undock);
-
- setCanResize(!docked);
-}
-
void LLNearbyChat::setRect (const LLRect &rect)
{
LLDockableFloater::setRect(rect);
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 1f4e57cf89..2f72d65720 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -51,8 +51,6 @@ public:
void onNearbyChatContextMenuItemClicked(const LLSD& userdata);
bool onNearbyChatCheckContextMenuItem(const LLSD& userdata);
- void setDocked (bool docked, bool pop_on_undock = true);
-
/*virtual*/ void onOpen (const LLSD& key);
virtual void setRect (const LLRect &rect);
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index eada387945..04ecf769d5 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -332,7 +332,9 @@ void LLSysWellWindow::reshapeWindow()
new_window_height = MAX_WINDOW_HEIGHT;
}
S32 newY = curRect.mTop + new_window_height - curRect.getHeight();
- curRect.setLeftTopAndSize(curRect.mLeft, newY, MIN_WINDOW_WIDTH, new_window_height);
+ S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH
+ : curRect.getWidth();
+ curRect.setLeftTopAndSize(curRect.mLeft, newY, newWidth, new_window_height);
reshape(curRect.getWidth(), curRect.getHeight(), TRUE);
setRect(curRect);
diff --git a/indra/newview/llviewerchat.cpp b/indra/newview/llviewerchat.cpp
index ccf9ce9056..96ecf0d8a7 100644
--- a/indra/newview/llviewerchat.cpp
+++ b/indra/newview/llviewerchat.cpp
@@ -217,4 +217,4 @@ void LLViewerChat::formatChatMsg(const LLChat& chat, std::string& formated_msg)
formated_msg = tmpmsg;
}
-} \ No newline at end of file
+}
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 90a79698f6..48f0f7516f 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1566,8 +1566,6 @@ void LLViewerWindow::initWorldUI()
LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("stand_stop_flying_container");
LLPanelStandStopFlying* panel_stand_stop_flying = LLPanelStandStopFlying::getInstance();
- panel_stand_stop_flying->setShape(panel_ssf_container->getLocalRect());
- panel_stand_stop_flying->setFollowsAll();
panel_ssf_container->addChild(panel_stand_stop_flying);
panel_ssf_container->setVisible(TRUE);
diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml
index a3ac878202..21d292847a 100644
--- a/indra/newview/skins/default/xui/en/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_gesture.xml
@@ -83,7 +83,20 @@
tool_tip="Make new gesture"
top_delta="0"
width="18" />
- <button
+ <button
+ follows="bottom|left"
+ font="SansSerifBigBold"
+ height="10"
+ image_hover_selected="Activate_Checkmark"
+ image_selected="Activate_Checkmark"
+ image_unselected="Activate_Checkmark"
+ layout="topleft"
+ left_pad="5"
+ name="activate_btn"
+ tool_tip="Activate/Deactivate selected gesture"
+ top="10"
+ width="10" />
+ <button
follows="bottom|right"
font="SansSerifBigBold"
height="18"
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index 452d28d4ea..70d708f0e7 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -9,6 +9,7 @@
name="panel_im"
help_topic="panel_im"
top="0"
+ can_close="false"
can_dock="true"
can_minimize="true"
visible="true"
diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
index 7f58ea132e..84e549f773 100644
--- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
@@ -3,7 +3,7 @@
legacy_header_height="18"
can_minimize="true"
can_tear_off="false"
- can_resize="false"
+ can_resize="true"
can_drag_on_left="false"
can_close="false"
can_dock="true"
diff --git a/indra/newview/skins/default/xui/en/floater_sys_well.xml b/indra/newview/skins/default/xui/en/floater_sys_well.xml
index e1f07a49e7..be6d63716c 100644
--- a/indra/newview/skins/default/xui/en/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/en/floater_sys_well.xml
@@ -15,7 +15,7 @@
height="23"
can_minimize="true"
can_tear_off="false"
- can_resize="false"
+ can_resize="true"
can_drag_on_left="false"
can_close="false"
can_dock="true"
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index 9e35c95d45..14a4949df7 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -10,7 +10,7 @@
<layout_stack border_size="0"
follows="all"
mouse_opaque="false"
- height="772"
+ height="768"
name="menu_stack"
orientation="vertical"
top="0">
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
index 590621062c..a731996a1a 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
@@ -17,6 +17,8 @@
name="add_friend">
<menu_item_call.on_click
function="InspectAvatar.AddFriend"/>
+ <menu_item_call.on_enable
+ function="InspectAvatar.Gear.Enable"/>
</menu_item_call>
<menu_item_call
label="IM"
diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
index 5c8a8ee208..3842c2a8db 100644
--- a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
@@ -61,6 +61,7 @@
layout="topleft"
left_delta="0"
name="Block object by name..."
+ tool_tip="Pick an object to block by name"
top_pad="4"
width="210" >
<button.commit_callback
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index a902f50582..d2933c0c0e 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -94,7 +94,7 @@
min_height="28"
width="82"
top_delta="0"
- min_width="82"
+ min_width="52"
name="gesture_panel"
user_resize="false">
<gesture_combo_box
@@ -105,9 +105,13 @@
name="Gesture"
left="0"
top="3"
- use_ellipses="true"
width="82"
- tool_tip="Shows/hides gestures"/>
+ tool_tip="Shows/hides gestures">
+ <gesture_combo_box.drop_down_button
+ font="SansSerifSmall"
+ pad_right="10"
+ use_ellipses="true" />
+ </gesture_combo_box>
</layout_panel>
<icon
auto_resize="false"
@@ -131,7 +135,7 @@
name="movement_panel"
user_resize="false"
width="80"
- min_width="80">
+ min_width="49">
<button
follows="left|right"
height="23"
@@ -167,7 +171,7 @@
height="28"
layout="topleft"
min_height="28"
- min_width="80"
+ min_width="49"
name="cam_panel"
user_resize="false"
width="80">
diff --git a/indra/newview/skins/default/xui/en/panel_chat_item.xml b/indra/newview/skins/default/xui/en/panel_chat_item.xml
index 05b04bbf8e..d8a0c877fd 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_item.xml
@@ -15,19 +15,13 @@
color="1 1 1 1" enabled="true" name="avatar_icon"
/>
<text
- width="130" top="25" left="40" height="20" follows="left|right|top"
+ width="150" top="25" left="40" height="20" follows="left|right|top"
font="SansSerifBigBold" text_color="white" word_wrap="false" use_ellipses="true"
mouse_opaque="true" name="sender_name" >
Jerry Knight
</text>
- <icon top="22" left="170" width="15" height="15" follows="top|right"
+ <icon top="22" left="215" width="15" height="15" follows="top|right"
image_name="icn_voice-pvtfocus.tga" visible="false" name="msg_inspector"/>
- <icon top="22" left="190" width="10" height="10" follows="top|right"
- image_name="speaking_indicator.tga" name="msg_icon"/>
- <text width="35" top="22" left="205" height="20" follows="right|top"
- text_color="white" word_wrap="true" mouse_opaque="true" name="msg_time" >
- 10:32
- </text>
</panel>
<text_chat
top="-35" left="10" right="-10" height="120" follows="left|right|bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_group_notify.xml b/indra/newview/skins/default/xui/en/panel_group_notify.xml
index 984a799b41..e699a77581 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notify.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml
@@ -104,7 +104,8 @@
name="attachment"
text_color="GroupNotifyTextColor"
value="Attachment"
- width="280" />
+ use_ellipses="true"
+ width="250" />
<button
bottom="130"
follows="bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
index 1f67a0a732..4ab6175805 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
@@ -26,7 +26,7 @@
name="selected_icon"
top="0"
visible="false"
- width="320" />
+ width="380" />
<icon
height="16"
follows="top|left"
@@ -46,7 +46,7 @@
text_color="white"
top="4"
value="..."
- width="242" />
+ width="330" />
<button
follows="right"
height="20"