diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index c3dd4ae647d9436b85fbde6d9d8b2927ea24373f..9a2f2ab4d319c5a24fb45e59bc342634ce2c8c04 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -136,21 +136,10 @@ void LLDockableFloater::setVisible(BOOL visible) void LLDockableFloater::setMinimized(BOOL minimize) { - if(minimize && isDocked()) + if(minimize) { setVisible(FALSE); } - - if (minimize) - { - setCanDock(false); - } - else if (!minimize && mDockControl.get() != NULL && mDockControl.get()->isDockVisible()) - { - setCanDock(true); - } - - LLFloater::setMinimized(minimize); } LLView * LLDockableFloater::getDockWidget() @@ -217,6 +206,16 @@ void LLDockableFloater::draw() LLFloater::draw(); } +void LLDockableFloater::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + if (isDocked()) + { + setDocked(false); + } + + LLFloater::reshape(width, height, called_from_parent); +} + void LLDockableFloater::setDockControl(LLDockControl* dockControl) { mDockControl.reset(dockControl); diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h index 46491d8a29e9743bca40046254a26f217e7c070d..e5f94dca91e9219edaf2e5185aaac3e15a1b9bd0 100644 --- a/indra/llui/lldockablefloater.h +++ b/indra/llui/lldockablefloater.h @@ -65,6 +65,7 @@ class LLDockableFloater : public LLFloater /* virtula */BOOL postBuild(); /* virtual */void setDocked(bool docked, bool pop_on_undock = true); /* virtual */void draw(); + /* virtual */void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); /** * If descendant class overrides setVisible() then it must still invoke its diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index 045505af5b66e8f044f0756cbe21c404336f5970..456a2925a3e70314b747ce30be19beedc3a054b5 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -266,6 +266,11 @@ void LLDockControl::off() mEnabled = false; } +void LLDockControl::forceRecalculatePosition() +{ + mRecalculateDocablePosition = true; +} + void LLDockControl::drawToungue() { if (mEnabled) diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h index eaedb4c30766c05e2246e582cb30ae596961360f..30a45bedc74e43f3225fe9dfb404e6440fadc8a0 100644 --- a/indra/llui/lldockcontrol.h +++ b/indra/llui/lldockcontrol.h @@ -63,6 +63,7 @@ class LLDockControl public: void on(); void off(); + void forceRecalculatePosition(); void setDock(LLView* dockWidget); LLView* getDock() { diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 14a6ddb7e0e8babee240e65250221f3fed77e771..1fb618adeeefcad30bca0b04db1723e6b646003d 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -413,6 +413,19 @@ void LLLayoutStack::updatePanelAutoResize(const std::string& panel_name, BOOL au } } +bool LLLayoutStack::getPanelMinSize(const std::string& panel_name, S32* min_widthp, S32* min_heightp) +{ + LayoutPanel* panel = findEmbeddedPanelByName(panel_name); + + if (panel) + { + if (min_widthp) *min_widthp = panel->mMinWidth; + if (min_heightp) *min_heightp = panel->mMinHeight; + } + + return NULL != panel; +} + static LLFastTimer::DeclareTimer FTM_UPDATE_LAYOUT("Update LayoutStacks"); void LLLayoutStack::updateLayout(BOOL force_resize) { diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index 9cbcb285dcaa813cd9ae5808357f1b809c9d401a..abd5436018dbd51a6045b29f710cdec3d18740c5 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -82,6 +82,14 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack> void updatePanelAutoResize(const std::string& panel_name, BOOL auto_resize); + /** + * Gets minimal width and/or height of the specified by name panel. + * + * If it is necessary to get only the one dimension pass NULL for another one. + * @returns true if specified by panel_name internal panel exists, false otherwise. + */ + bool getPanelMinSize(const std::string& panel_name, S32* min_widthp, S32* min_heightp); + void updateLayout(BOOL force_resize = FALSE); static void updateClass(); diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 958dbf226a8d104d745e985dd61841e7cb680be9..7985ccc2a1d0a549e3e552dee366e39fc36081e4 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -237,7 +237,7 @@ void LLBottomTray::setVisible(BOOL visible) LLView* viewp = *child_it; std::string name = viewp->getName(); - if ("chat_bar" == name || "movement_panel" == name || "cam_panel" == name || "snapshot_panel" == name) + if ("chat_bar" == name || "movement_panel" == name || "cam_panel" == name || "snapshot_panel" == name || "gesture_panel" == name) continue; else { @@ -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 8989816bfec846c5e06ecd44aeaace53bea50a12..97bcc23403a2493793df2b3a543e326f1dee20c5 100644 --- a/indra/newview/llbottomtray.h +++ b/indra/newview/llbottomtray.h @@ -98,7 +98,6 @@ class LLBottomTray , 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); @@ -107,6 +106,24 @@ class LLBottomTray bool processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width); 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. * @@ -140,6 +157,9 @@ class LLBottomTray 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 f9c4a23f12745ba0b53a32b1028da4aa50b770a4..cd5c5edac0c351e5c35ea64eb036b92c2f4a9d54 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 @@ class LLChatHistoryHeader: public LLPanel 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 b1dee46d2ef46ee137415d337d255ee6e0411462..997aed4277ce2977832223729e64e3da45a43940 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 854d02873a7aeaf537a2ea94b545b51121c19eaa..af86274472a7a3afd511f27016f3452d1c4e8cc9 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 e7819d2a032323f429079b1a61b3d85f3bb795f7..50bef818daa587fbeda99edf2a9d42c7071239eb 100644 --- a/indra/newview/llfloatergesture.h +++ b/indra/newview/llfloatergesture.h @@ -77,7 +77,11 @@ class LLFloaterGesture 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 2c6543d6ca98828842400863168fba1ee1489d41..c2c83191e003d7ace33baacdae891102a3d2111b 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/llimfloater.h b/indra/newview/llimfloater.h index 065441b18895a1a5018b6b8f0952ca90340de0ee..e2d500d821e1d7d68e322543368a05c444b9eb19 100644 --- a/indra/newview/llimfloater.h +++ b/indra/newview/llimfloater.h @@ -63,7 +63,6 @@ class LLIMFloater : public LLTransientDockableFloater // LLFloater overrides /*virtual*/ void onClose(bool app_quitting); /*virtual*/ void setDocked(bool docked, bool pop_on_undock = true); - // override LLFloater's minimization according to EXT-1216 // Make IM conversion visible and update the message history static LLIMFloater* show(const LLUUID& session_id); diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 8dc7833f6aceb4db012aacec8e4aa91bc4e96781..baddd90d460e00b7d3fce14b7cb9b7ca39a0410e 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -117,6 +117,9 @@ class LLInspectAvatar : public LLInspect 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 0acc67ff5a8a78ac28617ecbb4fa5978505e54b5..2cc5c8335d3e7b9ac23b153e31b759466d520268 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 e3ba1b8e4adb3b17a3297a9dc64f17ca691e029a..0ee883e221a5fdbd0acda0e25f85dfa63db44909 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 cee6078ee990530f5fb01ca44325adb68224d40a..2664fe6e401a3b116b678d7c01696c32af74aaca 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 @@ class LLFloaterMove void updateButtonsWithMovementMode(const EMovementMode newMode); void updatePosition(); void showModeButtons(BOOL bShow); - void updateHeight(bool show_mode_buttons); public: @@ -126,6 +126,7 @@ class LLFloaterMove */ class LLPanelStandStopFlying : public LLPanel { + LOG_CLASS(LLPanelStandStopFlying); public: typedef enum stand_stop_flying_mode_t { @@ -133,6 +134,19 @@ class LLPanelStandStopFlying : public LLPanel 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 @@ class LLPanelStandStopFlying : public LLPanel 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 cae5c52378b09ce53e6112ade861eb12e7a0ce39..16a47890c3ba878facfbba1b3d1e368735f3dab2 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); @@ -233,12 +224,3 @@ void LLNearbyChat::getAllowedRect(LLRect& rect) { rect = gViewerWindow->getWorldViewRectRaw(); } -void LLNearbyChat::setMinimized (BOOL minimize) -{ - if(minimize && !isDocked()) - { - setVisible(FALSE); - } - LLDockableFloater::setMinimized(minimize); -} - diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index 1f4e57cf89e8111b8c9a8519a8098fe6fb4aead0..561c2d3677699f16b2c272d933cc0c1d2cc51b92 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -51,12 +51,9 @@ class LLNearbyChat: public LLDockableFloater 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); - virtual void setMinimized (BOOL minimize); private: virtual void applySavedVariables(); diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index 04b4226f82f8dd7bde746d338ae79fd06ff022ec..10b90b08d76b7b4eec62e2d207423ea14e8e7802 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -230,6 +230,8 @@ void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type) updateButtons(); } } + if(!mPicksList->size() && !mClassifiedsList->size()) + childSetVisible("empty_picks_panel_text", true); } LLPickItem* LLPanelPicks::getSelectedPickItem() diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index eb10d97b371ef11eaf2d6e56d0cf12e15fccd576..84232f20d1a53c8b744e9ff781a29511f0be74e4 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -80,7 +80,6 @@ static const std::string TELEPORT_HISTORY_INFO_TYPE = "teleport_history"; // Helper functions static bool is_agent_in_selected_parcel(LLParcel* parcel); static void onSLURLBuilt(std::string& slurl); -static void setAllChildrenVisible(LLView* view, BOOL visible); //Observer classes class LLPlacesParcelObserver : public LLParcelObserver @@ -700,8 +699,6 @@ void LLPanelPlaces::onBackButtonClicked() void LLPanelPlaces::togglePickPanel(BOOL visible) { - setAllChildrenVisible(this, !visible); - if (mPickPanel) mPickPanel->setVisible(visible); } @@ -911,16 +908,3 @@ static void onSLURLBuilt(std::string& slurl) LLNotifications::instance().add("CopySLURL", args); } - -static void setAllChildrenVisible(LLView* view, BOOL visible) -{ - const LLView::child_list_t* children = view->getChildList(); - for (LLView::child_list_const_iter_t child_it = children->begin(); child_it != children->end(); ++child_it) - { - LLView* child = *child_it; - if (child->getParent() == view) - { - child->setVisible(visible); - } - } -} diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index eada3879456eddb085ae715e8e80867ef8b6fa72..04ecf769d5514405252d6cd347b096a51317eaa7 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/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp index f82573f46cd4400af4af66b1acfab7b5a98e0a05..d1bdcb13543da05606a3bd8867331aa842411312 100644 --- a/indra/newview/lltoastgroupnotifypanel.cpp +++ b/indra/newview/lltoastgroupnotifypanel.cpp @@ -40,7 +40,7 @@ #include "lliconctrl.h" #include "llinventoryfunctions.h" #include "llnotify.h" -#include "lltextbox.h" +#include "llviewertexteditor.h" #include "lluiconstants.h" #include "llui.h" @@ -54,7 +54,7 @@ #include "llfloaterinventory.h" #include "llinventorytype.h" -const S32 LLToastGroupNotifyPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT = 4; +const S32 LLToastGroupNotifyPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT = 7; LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification) : LLToastPanel(notification), @@ -84,11 +84,6 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification //message body const std::string& message = payload["message"].asString(); - - LLTextBox* pSubjectText = getChild<LLTextBox>("subject"); - pSubjectText->setValue(subject); - - LLTextBox* pDateTimeText = getChild<LLTextBox>("datetime"); std::string timeStr = "["+LLTrans::getString("UTCTimeWeek")+"],[" +LLTrans::getString("UTCTimeDay")+"] [" +LLTrans::getString("UTCTimeMth")+"] [" @@ -102,20 +97,23 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification LLSD substitution; substitution["datetime"] = (S32) notice_date.secondsSinceEpoch(); LLStringUtil::format(timeStr, substitution); - pDateTimeText->setValue(timeStr); - LLTextBox* pMessageText = getChild<LLTextBox>("message"); - - //If message is empty let it be invisible and not take place at the panel - if(message.size() != 0) - { - pMessageText->setVisible(TRUE); - pMessageText->setValue(message); - } - else - { - pMessageText->setVisible(FALSE); - } + LLViewerTextEditor* pMessageText = getChild<LLViewerTextEditor>("message"); + pMessageText->clear(); + + LLStyle::Params style; + LLFontGL* subject_font = LLFontGL::getFontByName(getString("subject_font")); + if (subject_font) + style.font = subject_font; + pMessageText->appendText(subject, FALSE, style); + + LLFontGL* date_font = LLFontGL::getFontByName(getString("date_font")); + if (date_font) + style.font = date_font; + pMessageText->appendText(timeStr + "\n", TRUE, style); + + style.font = pMessageText->getDefaultFont(); + pMessageText->appendText(message, TRUE, style); //attachment BOOL hasInventory = payload["inventory_offer"].isDefined(); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 7b35125b5b8f4d5855aa63d281a6347c8c69ea82..615eb1db9a7ef6b0141830591dd9c2ff012c2e00 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/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index ae32ec7d117e41768f2035706b7ea7f72a0f1705..21054dacd0b7a76a0828b55a9a2360e30f40ab9e 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -33,6 +33,7 @@ #include "llviewerprecompiledheaders.h" #include "llagent.h" +#include "llfloatercall.h" #include "llfloaterreg.h" #include "llimview.h" #include "llnotifications.h" @@ -408,9 +409,14 @@ void LLVoiceChannel::doSetState(const EState& new_state) void LLVoiceChannel::toggleCallWindowIfNeeded(EState state) { + LLFloaterCall* floater = dynamic_cast<LLFloaterCall*>(LLFloaterReg::getInstance("voice_call", mSessionID)); + if (!floater) + return; + if (state == STATE_CONNECTED) { - LLFloaterReg::showInstance("voice_call", mSessionID); + floater->init(mSessionID); + floater->openFloater(mSessionID); } // By checking that current state is CONNECTED we make sure that the call window // has been shown, hence there's something to hide. This helps when user presses @@ -418,7 +424,8 @@ void LLVoiceChannel::toggleCallWindowIfNeeded(EState state) // *TODO: move this check to LLFloaterCall? else if (state == STATE_HUNG_UP && mState == STATE_CONNECTED) { - LLFloaterReg::hideInstance("voice_call", mSessionID); + floater->reset(); + floater->closeFloater(); } } diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml index a3ac87820280ff57f6d81090b227d5bfd62f7291..21d292847ab7dfe75b08da53838484ee27efd5ff 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 9e2dbc881ff5c0aeda44fe1c30106c3005a10bc8..4792a1a476026a246f46bc9cbbe804df18098adf 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -8,6 +8,7 @@ left="0" name="panel_im" top="0" + can_close="false" can_dock="true" can_minimize="false" 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 4f2d74b41775047c174e4b1bb953dae31011429c..69b015a727ed0b5fc80099a482f38eebcf9923a2 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="false" 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 e1f07a49e78604691e765280b13e720a995145be..be6d63716c521f9dad6025576fc996b15bb5c197 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 9e35c95d45a8e76daa75d028d91f126e7def1e7f..14a4949df7ff08d4cd3912250e0ebfe90dcec437 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 590621062c2bb79654994092e3b2e7fc5e9c7e7f..a731996a1a26713544d06d6d9de6c5c23a3ab156 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 5c8a8ee2081ad20d78d6066edc58d5e8d3492240..3842c2a8db833e48184703e5ae7ba5965e67ddcf 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 a902f50582431ce571deb58fa79fdc83fb3bcd3b..d2933c0c0eac0925b9fd1cc43ca1faa498963ec8 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 01917052d18c61f6aa614da805c5f8ba1df1de62..2b29796f0a1b4571260af2067c1149bf9db9b29e 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_item.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_item.xml @@ -34,12 +34,12 @@ use_ellipses="true" mouse_opaque="true" name="sender_name" - width="175"> + width="150"> 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" + <!--<icon top="22" left="215" width="10" height="10" follows="top|right" image_name="speaking_indicator.tga" name="msg_icon"/>--> <text font="SansSerifSmall" 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 984a799b41a8ac8991fc18ef477dd355c820040d..d22d58329c476e22bb4d7c4a716e3e5036920639 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml @@ -3,7 +3,7 @@ background_visible="true" bevel_style="in" bg_alpha_color="0 0 0 0" - height="135" + height="90" label="instant_message" layout="topleft" left="0" @@ -12,7 +12,13 @@ width="305"> <string name="message_max_lines_count" - value="4" /> + value="7" /> + <string + name="subject_font" + value="SANSSERIF_BIG" /> + <string + name="date_font" + value="SANSSERIF" /> <panel background_visible="true" bevel_style="in" @@ -47,46 +53,27 @@ value="Sender Name / Group Name" width="230" /> </panel> - <text - follows="top" - font="SansSerifBig" - height="20" - layout="topleft" - left="25" - name="subject" - text_color="GroupNotifyTextColor" - top="40" - use_ellipses="true" - value="subject" - width="270" - wrap="true" /> - <text - follows="top" - font="SansSerif" - height="20" - layout="topleft" - left="25" - name="datetime" - text_color="GroupNotifyTextColor" - top="80" - use_ellipses="true" - value="datetime" - width="270" - wrap="true" /> - <text + <text_editor + allow_html="true" + enabled="true" follows="left|top|bottom|right" height="0" layout="topleft" left="25" + max_length="2147483647" name="message" + parse_highlights="true" + read_only="true" text_color="GroupNotifyTextColor" - top="100" + top="40" + type="string" use_ellipses="true" value="message" - width="270" - wrap="true" /> + width="270" + word_wrap="true" > + </text_editor> <icon - bottom="122" + bottom="60" follows="left|bottom|right" height="15" layout="topleft" @@ -95,7 +82,7 @@ name="attachment_icon" width="15" /> <text - bottom="122" + bottom="60" follows="left|bottom|right" font="SansSerif" height="15" @@ -104,9 +91,10 @@ name="attachment" text_color="GroupNotifyTextColor" value="Attachment" - width="280" /> + use_ellipses="true" + width="250" /> <button - bottom="130" + bottom="85" follows="bottom" height="20" label="OK" diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml index 9cfbed432ae38d52ea7fad7797dbabf9053ace91..962dad33633750ae2b42756385b78a3df4177a58 100644 --- a/indra/newview/skins/default/xui/en/panel_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_picks.xml @@ -14,7 +14,18 @@ <string name="no_classifieds" value="No Classifieds" /> - + <text + type="string" + follows="all" + height="535" + layout="topleft" + left="6" + name="empty_picks_panel_text" + top="10" + visible="false" + width="313"> + There are no any picks/classifieds here + </text> <accordion follows="all" height="465" diff --git a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml index 566fc95230b3a7cbd52aa00df9b1e64f00f793e8..98390758629ebed7bd10c2265463b0640bae72bf 100644 --- a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml +++ b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml @@ -7,6 +7,24 @@ layout="topleft" name="home_tab" width="333"> + <scroll_container + color="DkGray" + follows="all" + layout="topleft" + left="0" + name="profile_scroll" + opaque="true" + height="560" + width="333" + top="0"> + <panel + background_visible="true" + height="560" + layout="topleft" + name="profile_scroll_panel" + top="0" + left="0" + width="311"> <panel background_visible="true" bg_alpha_color="DkGray2" @@ -242,4 +260,6 @@ Browse your inventory. </text> </panel> + </panel> + </scroll_container> </panel> 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 1f67a0a7328bbf6eeda16fd0bc0dffad078f9377..4ab6175805adcf3194eba88d1a8a43197848051f 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"