diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 37a28ac721306b6148c4761bc5e12653c53fa6af..1de1d6ded4a0df1a244bb949f3ddae5cfe649e1b 100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp @@ -472,7 +472,7 @@ F32 LLFontGL::getWidthF32(const llwchar* wchars, S32 begin_offset, S32 max_chars } // Returns the max number of complete characters from text (up to max_chars) that can be drawn in max_pixels -S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars, BOOL end_on_word_boundary) const +S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars, EWordWrapStyle end_on_word_boundary) const { if (!wchars || !wchars[0] || max_chars == 0) { @@ -562,9 +562,24 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch drawn_x = cur_x; } - if( clip && end_on_word_boundary && (start_of_last_word != 0) ) + if( clip ) { - i = start_of_last_word; + switch (end_on_word_boundary) + { + case ONLY_WORD_BOUNDARIES: + i = start_of_last_word; + break; + case WORD_BOUNDARY_IF_POSSIBLE: + if (start_of_last_word != 0) + { + i = start_of_last_word; + } + break; + default: + case ANYWHERE: + // do nothing + break; + } } return i; } diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h index ea8eee769030267229d23506cbc5c8736c1a420b..dfa4cf8ce550f6853b3c3a94bfbf123ba2747a7e 100644 --- a/indra/llrender/llfontgl.h +++ b/indra/llrender/llfontgl.h @@ -122,7 +122,13 @@ public: // The following are called often, frequently with large buffers, so do not use a string interface // Returns the max number of complete characters from text (up to max_chars) that can be drawn in max_pixels - S32 maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars = S32_MAX, BOOL end_on_word_boundary = FALSE) const; + typedef enum e_word_wrap_style + { + ONLY_WORD_BOUNDARIES, + WORD_BOUNDARY_IF_POSSIBLE, + ANYWHERE + } EWordWrapStyle ; + S32 maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars = S32_MAX, EWordWrapStyle end_on_word_boundary = ANYWHERE) const; // Returns the index of the first complete characters from text that can be drawn in max_pixels // given that the character at start_pos should be the last character (or as close to last as possible). diff --git a/indra/llui/llcheckboxctrl.cpp b/indra/llui/llcheckboxctrl.cpp index cd10dfdb1c4d363a04c3380e5943565019b8576a..3d32157406f481fa3921fd1ca00a30235af3d8f3 100644 --- a/indra/llui/llcheckboxctrl.cpp +++ b/indra/llui/llcheckboxctrl.cpp @@ -107,8 +107,8 @@ LLCheckBoxCtrl::LLCheckBoxCtrl(const LLCheckBoxCtrl::Params& p) { tbparams.font(p.font); } + tbparams.text_color( p.enabled() ? p.text_enabled_color() : p.text_disabled_color() ); mLabel = LLUICtrlFactory::create<LLTextBox> (tbparams); - addChild(mLabel); // Button diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp index c9090d388da5d218732a330c48171c9228b5013e..e08d93b23277e68d2ca4cced4f6e50fee41d1dad 100644 --- a/indra/llui/llconsole.cpp +++ b/indra/llui/llconsole.cpp @@ -330,7 +330,7 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, b skip_chars = 0; } - U32 drawable = font->maxDrawableChars(mParagraphText.c_str()+paragraph_offset, screen_width, line_end - paragraph_offset, TRUE); + U32 drawable = font->maxDrawableChars(mParagraphText.c_str()+paragraph_offset, screen_width, line_end - paragraph_offset, LLFontGL::WORD_BOUNDARY_IF_POSSIBLE); if (drawable != 0) { diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h index 02eb9d380675fffae506fb148b8e0f8b7d2393de..d0e99d9f40a8b5493c29c318b31f79de0caebc43 100644 --- a/indra/llui/llmenubutton.h +++ b/indra/llui/llmenubutton.h @@ -55,6 +55,7 @@ public: /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask ); void hideMenu(); + LLMenuGL* getMenu() { return mMenu; } protected: friend class LLUICtrlFactory; diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 2648cbf08dbcd455955c63612de8523fc7781298..527c0a1b87509fa6c9055ea864b6a7f21c541634 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1143,37 +1143,41 @@ BOOL LLMenuItemBranchGL::handleKeyHere( KEY key, MASK mask ) if (!branch) return LLMenuItemGL::handleKeyHere(key, mask); - if (getMenu()->getVisible() && branch->getVisible() && key == KEY_LEFT) + // an item is highlighted, my menu is open, and I have an active sub menu or we are in + // keyboard navigation mode + if (getHighlight() + && getMenu()->isOpen() + && (isActive() || LLMenuGL::getKeyboardMode())) { - // switch to keyboard navigation mode - LLMenuGL::setKeyboardMode(TRUE); - - BOOL handled = branch->clearHoverItem(); - if (branch->getTornOff()) + if (branch->getVisible() && key == KEY_LEFT) { - ((LLFloater*)branch->getParent())->setFocus(FALSE); - } - if (handled && getMenu()->getTornOff()) - { - ((LLFloater*)getMenu()->getParent())->setFocus(TRUE); - } - return handled; - } + // switch to keyboard navigation mode + LLMenuGL::setKeyboardMode(TRUE); - if (getHighlight() && - getMenu()->isOpen() && - key == KEY_RIGHT && !branch->getHighlightedItem()) - { - // switch to keyboard navigation mode - LLMenuGL::setKeyboardMode(TRUE); + BOOL handled = branch->clearHoverItem(); + if (branch->getTornOff()) + { + ((LLFloater*)branch->getParent())->setFocus(FALSE); + } + if (handled && getMenu()->getTornOff()) + { + ((LLFloater*)getMenu()->getParent())->setFocus(TRUE); + } + return handled; + } - LLMenuItemGL* itemp = branch->highlightNextItem(NULL); - if (itemp) + if (key == KEY_RIGHT && !branch->getHighlightedItem()) { - return TRUE; + // switch to keyboard navigation mode + LLMenuGL::setKeyboardMode(TRUE); + + LLMenuItemGL* itemp = branch->highlightNextItem(NULL); + if (itemp) + { + return TRUE; + } } } - return LLMenuItemGL::handleKeyHere(key, mask); } @@ -1431,7 +1435,7 @@ BOOL LLMenuItemBranchDownGL::handleKeyHere(KEY key, MASK mask) { BOOL menu_open = getBranch()->getVisible(); // don't do keyboard navigation of top-level menus unless in keyboard mode, or menu expanded - if (getHighlight() && getMenu()->getVisible() && (isActive() || LLMenuGL::getKeyboardMode())) + if (getHighlight() && getMenu()->isOpen() && (isActive() || LLMenuGL::getKeyboardMode())) { if (key == KEY_LEFT) { @@ -2836,6 +2840,7 @@ BOOL LLMenuGL::handleScrollWheel( S32 x, S32 y, S32 clicks ) return TRUE; } + void LLMenuGL::draw( void ) { if (mNeedsArrange) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 7447a984aca167c6b9f819b47f5375d68cb76a00..5ebf49c48818df9b3cc2deee0f83816377607ad3 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -2509,10 +2509,15 @@ S32 LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin // set max characters to length of segment, or to first newline max_chars = llmin(max_chars, last_char - (mStart + segment_offset)); + // if no character yet displayed on this line, don't require word wrapping since + // we can just move to the next line, otherwise insist on it so we make forward progress + LLFontGL::EWordWrapStyle word_wrap_style = (line_offset == 0) + ? LLFontGL::WORD_BOUNDARY_IF_POSSIBLE + : LLFontGL::ONLY_WORD_BOUNDARIES; S32 num_chars = mStyle->getFont()->maxDrawableChars(text.c_str() + segment_offset + mStart, (F32)num_pixels, max_chars, - TRUE); + word_wrap_style); if (num_chars == 0 && line_offset == 0 diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 21cadda6e3e657cd21f39bc31f08921d5edc798f..dac328057527d6c041a3f1ffd96c6f8b12f22689 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -593,6 +593,12 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ mEditor->appendText(message, FALSE, style_params); } mEditor->blockUndo(); + + // automatically scroll to end when receiving chat from myself + if (chat.mFromID == gAgentID) + { + mEditor->setCursorAndScrollToEnd(); + } } void LLChatHistory::draw() diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp index 10b7935caf00ab6937ff54bfe8098bd26cfa73c5..abb2fdeb9a0a2f9e94c22f71a32cfb0ddda32e7b 100644 --- a/indra/newview/lldateutil.cpp +++ b/indra/newview/lldateutil.cpp @@ -44,15 +44,18 @@ static S32 DAYS_PER_MONTH_LEAP[] = static S32 days_from_month(S32 year, S32 month) { + llassert_always(1 <= month); + llassert_always(month <= 12); + if (year % 4 == 0 && year % 100 != 0) { // leap year - return DAYS_PER_MONTH_LEAP[month]; + return DAYS_PER_MONTH_LEAP[month - 1]; } else { - return DAYS_PER_MONTH_NOLEAP[month]; + return DAYS_PER_MONTH_NOLEAP[month - 1]; } } diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index e80499688eb6c49a4c5f2cf55cee8d7bac933032..aa343b2f6972260b26cf926c452e619083648b4f 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -167,20 +167,21 @@ BOOL LLFloaterAbout::postBuild() // Now build the various pieces support << getString("AboutHeader", args); - if (info.has("COMPILER")) - { - support << "\n\n" << getString("AboutCompiler", args); - } if (info.has("REGION")) { support << "\n\n" << getString("AboutPosition", args); } support << "\n\n" << getString("AboutSystem", args); + support << "\n"; if (info.has("GRAPHICS_DRIVER_VERSION")) { - support << "\n\n" << getString("AboutDriver", args); + support << "\n" << getString("AboutDriver", args); + } + support << "\n" << getString("AboutLibs", args); + if (info.has("COMPILER")) + { + support << "\n" << getString("AboutCompiler", args); } - support << "\n\n" << getString("AboutLibs", args); if (info.has("PACKETS_IN")) { support << '\n' << getString("AboutTraffic", args); @@ -193,11 +194,11 @@ BOOL LLFloaterAbout::postBuild() support_widget->blockUndo(); // Fix views - support_widget->setCursorPos(0); support_widget->setEnabled(FALSE); + support_widget->startOfDoc(); - credits_widget->setCursorPos(0); credits_widget->setEnabled(FALSE); + credits_widget->startOfDoc(); return TRUE; } diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 98f9171237a7c639150bc19262ee0559ebfc1c95..0781d8ed0695138ea5a0991813c2dc0905fc6e1b 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -100,8 +100,6 @@ enum EPanDirection // Values in pixels per region static const F32 ZOOM_MAX = 128.f; -static const F32 SIM_COORD_DEFAULT = 128.f; - //--------------------------------------------------------------------------- // Globals //--------------------------------------------------------------------------- @@ -189,7 +187,8 @@ LLFloaterWorldMap::LLFloaterWorldMap(const LLSD& key) mInventory(NULL), mInventoryObserver(NULL), mFriendObserver(NULL), - mCompletingRegionName(""), + mCompletingRegionName(), + mCompletingRegionPos(), mWaitingForTracker(FALSE), mIsClosing(FALSE), mSetToUserPosition(TRUE), @@ -205,7 +204,6 @@ LLFloaterWorldMap::LLFloaterWorldMap(const LLSD& key) mCommitCallbackRegistrar.add("WMap.AvatarCombo", boost::bind(&LLFloaterWorldMap::onAvatarComboCommit, this)); mCommitCallbackRegistrar.add("WMap.Landmark", boost::bind(&LLFloaterWorldMap::onLandmarkComboCommit, this)); mCommitCallbackRegistrar.add("WMap.SearchResult", boost::bind(&LLFloaterWorldMap::onCommitSearchResult, this)); - mCommitCallbackRegistrar.add("WMap.CommitLocation", boost::bind(&LLFloaterWorldMap::onCommitLocation, this)); mCommitCallbackRegistrar.add("WMap.GoHome", boost::bind(&LLFloaterWorldMap::onGoHome, this)); mCommitCallbackRegistrar.add("WMap.Teleport", boost::bind(&LLFloaterWorldMap::onClickTeleportBtn, this)); mCommitCallbackRegistrar.add("WMap.ShowTarget", boost::bind(&LLFloaterWorldMap::onShowTargetBtn, this)); @@ -664,10 +662,6 @@ void LLFloaterWorldMap::updateLocation() S32 agent_y = llround( (F32)fmod( agentPos.mdV[VY], (F64)REGION_WIDTH_METERS ) ); S32 agent_z = llround( (F32)agentPos.mdV[VZ] ); - childSetValue("spin x", LLSD(agent_x) ); - childSetValue("spin y", LLSD(agent_y) ); - childSetValue("spin z", LLSD(agent_z) ); - // Set the current SLURL mSLURL = LLSLURL::buildSLURL(agent_sim_name, agent_x, agent_y, agent_z); } @@ -699,9 +693,6 @@ void LLFloaterWorldMap::updateLocation() F32 region_x = (F32)fmod( pos_global.mdV[VX], (F64)REGION_WIDTH_METERS ); F32 region_y = (F32)fmod( pos_global.mdV[VY], (F64)REGION_WIDTH_METERS ); - childSetValue("spin x", LLSD(region_x) ); - childSetValue("spin y", LLSD(region_y) ); - childSetValue("spin z", LLSD((F32)pos_global.mdV[VZ]) ); // simNameFromPosGlobal can fail, so don't give the user an invalid SLURL if ( gotSimName ) @@ -733,9 +724,11 @@ void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S3 { // fill in UI based on URL gFloaterWorldMap->childSetValue("location", region_name); - childSetValue("spin x", LLSD((F32)x_coord)); - childSetValue("spin y", LLSD((F32)y_coord)); - childSetValue("spin z", LLSD((F32)z_coord)); + + // Save local coords to highlight position after region global + // position is returned. + gFloaterWorldMap->mCompletingRegionPos.set( + (F32)x_coord, (F32)y_coord, (F32)z_coord); // pass sim name to combo box gFloaterWorldMap->mCompletingRegionName = region_name; @@ -899,18 +892,6 @@ void LLFloaterWorldMap::clearLocationSelection(BOOL clear_ui) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); } - if (!childHasKeyboardFocus("spin x")) - { - childSetValue("spin x", SIM_COORD_DEFAULT); - } - if (!childHasKeyboardFocus("spin y")) - { - childSetValue("spin y", SIM_COORD_DEFAULT); - } - if (!childHasKeyboardFocus("spin z")) - { - childSetValue("spin z", 0); - } LLWorldMap::getInstance()->cancelTracking(); mCompletingRegionName = ""; } @@ -1466,21 +1447,6 @@ void LLFloaterWorldMap::updateSims(bool found_null_sim) } } -void LLFloaterWorldMap::onCommitLocation() -{ - LLTracker::ETrackingStatus tracking_status = LLTracker::getTrackingStatus(); - if ( LLTracker::TRACKING_LOCATION == tracking_status) - { - LLVector3d pos_global = LLTracker::getTrackedPositionGlobal(); - F64 local_x = childGetValue("spin x"); - F64 local_y = childGetValue("spin y"); - F64 local_z = childGetValue("spin z"); - pos_global.mdV[VX] += -fmod(pos_global.mdV[VX], 256.0) + local_x; - pos_global.mdV[VY] += -fmod(pos_global.mdV[VY], 256.0) + local_y; - pos_global.mdV[VZ] = local_z; - trackLocation(pos_global); - } -} void LLFloaterWorldMap::onCommitSearchResult() { @@ -1503,12 +1469,19 @@ void LLFloaterWorldMap::onCommitSearchResult() if (info->isName(sim_name)) { LLVector3d pos_global = info->getGlobalOrigin(); - F64 local_x = childGetValue("spin x"); - F64 local_y = childGetValue("spin y"); - F64 local_z = childGetValue("spin z"); - pos_global.mdV[VX] += local_x; - pos_global.mdV[VY] += local_y; - pos_global.mdV[VZ] = local_z; + + const F64 SIM_COORD_DEFAULT = 128.0; + LLVector3 pos_local(SIM_COORD_DEFAULT, SIM_COORD_DEFAULT, 0.0f); + + // Did this value come from a trackURL() request? + if (!mCompletingRegionPos.isExactlyZero()) + { + pos_local = mCompletingRegionPos; + mCompletingRegionPos.clear(); + } + pos_global.mdV[VX] += (F64)pos_local.mV[VX]; + pos_global.mdV[VY] += (F64)pos_local.mV[VY]; + pos_global.mdV[VZ] = (F64)pos_local.mV[VZ]; childSetValue("location", sim_name); trackLocation(pos_global); diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h index 7feebb583d8ec81e01dd73aa229b44821a9589af..00f5e788fb871910ee7ca95beab36c455be15b5c 100644 --- a/indra/newview/llfloaterworldmap.h +++ b/indra/newview/llfloaterworldmap.h @@ -148,7 +148,6 @@ protected: void updateSearchEnabled(); void onLocationFocusChanged( LLFocusableElement* ctrl ); void onLocationCommit(); - void onCommitLocation(); void onCommitSearchResult(); void cacheLandmarkPosition(); @@ -170,6 +169,10 @@ private: LLFriendObserver* mFriendObserver; std::string mCompletingRegionName; + // Local position from trackURL() request, used to select final + // position once region lookup complete. + LLVector3 mCompletingRegionPos; + std::string mLastRegionName; BOOL mWaitingForTracker; diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp index 0b5da40be4d5fb74594b2b58457613ccf49a8b54..08cf86df4aade332a569692556901a16623d0746 100644 --- a/indra/newview/llhudtext.cpp +++ b/indra/newview/llhudtext.cpp @@ -606,7 +606,7 @@ void LLHUDText::addLine(const LLWString &wstr, const LLColor4& color, const LLFo U32 line_length = 0; do { - S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wline.length(), TRUE); + S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wline.length(), LLFontGL::WORD_BOUNDARY_IF_POSSIBLE); mTextSegments.push_back(LLHUDTextSegment(iter->substr(line_length, segment_length), style, color)); line_length += segment_length; } @@ -642,7 +642,7 @@ void LLHUDText::setLabel(const LLWString &wlabel) U32 line_length = 0; do { - S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wstr.length(), TRUE); + S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wstr.length(), LLFontGL::WORD_BOUNDARY_IF_POSSIBLE); mLabelSegments.push_back(LLHUDTextSegment(iter->substr(line_length, segment_length), LLFontGL::NORMAL, mColor)); line_length += segment_length; } diff --git a/indra/newview/llinspect.h b/indra/newview/llinspect.h index 731e99534b8ee8417b88980e204f61b9014134b6..a1cb9cd71cd5353946e3adf4cb45f8a0403b814d 100644 --- a/indra/newview/llinspect.h +++ b/indra/newview/llinspect.h @@ -55,7 +55,7 @@ public: /// Inspectors close themselves when they lose focus /*virtual*/ void onFocusLost(); -private: +protected: LLFrameTimer mCloseTimer; LLFrameTimer mOpenTimer; }; diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 7f206cb87310a0d5e211e9f67aeed4742ae61ea3..72994a4371e95aea4f66bd5d5cf003361a2ed723 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -93,6 +93,10 @@ public: // Update view based on information from avatar properties processor void processAvatarData(LLAvatarData* data); + // override the inspector mouse leave so timer is only paused if + // gear menu is not open + /* virtual */ void onMouseLeave(S32 x, S32 y, MASK mask); + private: // Make network requests for all the data to display in this view. // Used on construction and if avatar id changes. @@ -259,8 +263,6 @@ BOOL LLInspectAvatar::postBuild(void) } - - // Multiple calls to showInstance("inspect_avatar", foo) will provide different // LLSD for foo, which we will catch here. //virtual @@ -384,6 +386,19 @@ void LLInspectAvatar::processAvatarData(LLAvatarData* data) mPropertiesRequest = NULL; } +// For the avatar inspector, we only want to unpause the fade timer +// if neither the gear menu or self gear menu are open +void LLInspectAvatar::onMouseLeave(S32 x, S32 y, MASK mask) +{ + LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu(); + LLMenuGL* gear_menu_self = getChild<LLMenuButton>("gear_self_btn")->getMenu(); + if ( !(gear_menu && gear_menu->getVisible()) && + !(gear_menu_self && gear_menu_self->getVisible())) + { + mOpenTimer.unpause(); + } +} + void LLInspectAvatar::updateModeratorPanel() { bool enable_moderator_panel = false; diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp index b3bac0453aee4cf77b2aa7b7a71c6c4bd2cc4fd9..dd313c528d8e18dbfb53f8bbf10f033d73d26066 100644 --- a/indra/newview/llinspectobject.cpp +++ b/indra/newview/llinspectobject.cpp @@ -83,6 +83,10 @@ public: // Release the selection and do other cleanup /*virtual*/ void onClose(bool app_quitting); + // override the inspector mouse leave so timer is only paused if + // gear menu is not open + /* virtual */ void onMouseLeave(S32 x, S32 y, MASK mask); + private: // Refresh displayed data with information from selection manager void update(); @@ -182,7 +186,6 @@ BOOL LLInspectObject::postBuild(void) return TRUE; } - // Multiple calls to showInstance("inspect_avatar", foo) will provide different // LLSD for foo, which we will catch here. //virtual @@ -567,6 +570,16 @@ void LLInspectObject::updateSecureBrowsing() getChild<LLUICtrl>("secure_browsing")->setVisible(is_secure_browsing); } +// For the object inspector, only unpause the fade timer +// if the gear menu is not open +void LLInspectObject::onMouseLeave(S32 x, S32 y, MASK mask) +{ + LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu(); + if ( !(gear_menu && gear_menu->getVisible())) + { + mOpenTimer.unpause(); + } +} void LLInspectObject::onClickBuy() { diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 5445a79137cab9e765aeb08a54f5ebbc01577bb2..5a9d219fac3dfc372c4d7234b50e8ae8e308be7b 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -62,6 +62,7 @@ #include "llfloaterreporter.h" #include "llfloatersearch.h" #include "llfloaterscriptdebug.h" +#include "llfloatersnapshot.h" #include "llfloatertools.h" #include "llfloaterworldmap.h" #include "llavataractions.h" @@ -446,6 +447,8 @@ void init_menus() // Otherwise tool tips for menu items would be overlapped by menu, since // main view is behind of menu holder now. gViewerWindow->getRootView()->addChild(gToolTipView); + + gViewerWindow->getRootView()->addChild(gSnapshotFloaterView); gViewerWindow->setMenuBackgroundColor(false, LLViewerLogin::getInstance()->isInProductionGrid()); @@ -5857,8 +5860,12 @@ void confirm_replace_attachment(S32 option, void* user_data) } } -bool callback_attachment_drop(const LLSD& notification, const LLSD& response) +void callback_attachment_drop(const LLSD& notification, const LLSD& response) { + // Ensure user confirmed the drop + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option != 0) return; + // Called when the user clicked on an object attached to them // and selected "Drop". LLUUID object_id = notification["payload"]["object_id"].asUUID(); @@ -5867,7 +5874,7 @@ bool callback_attachment_drop(const LLSD& notification, const LLSD& response) if (!object) { llwarns << "handle_drop_attachment() - no object to drop" << llendl; - return true; + return; } LLViewerObject *parent = (LLViewerObject*)object->getParent(); @@ -5884,13 +5891,13 @@ bool callback_attachment_drop(const LLSD& notification, const LLSD& response) if (!object) { llwarns << "handle_detach() - no object to detach" << llendl; - return true; + return; } if (object->isAvatar()) { llwarns << "Trying to detach avatar from avatar." << llendl; - return true; + return; } // reselect the object @@ -5898,7 +5905,7 @@ bool callback_attachment_drop(const LLSD& notification, const LLSD& response) LLSelectMgr::getInstance()->sendDropAttachment(); - return true; + return; } class LLAttachmentDrop : public view_listener_t @@ -7954,8 +7961,8 @@ void initialize_menus() enable.add("Avatar.EnableMute", boost::bind(&enable_object_mute)); enable.add("Object.EnableMute", boost::bind(&enable_object_mute)); - enable.add("Object.EnableBuy", boost::bind(&enable_buy_object)); + commit.add("Object.ZoomIn", boost::bind(&handle_look_at_selection, "zoom")); // Attachment pie menu enable.add("Attachment.Label", boost::bind(&onEnableAttachmentLabel, _1, _2)); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 14002531769e90ae3732be744ea5fe7e5c5528c2..83cbc8a1f919ab11ba4b73f8128e0126edbe4985 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1897,7 +1897,7 @@ void LLViewerWindow::draw() if (!gSavedSettings.getBOOL("RenderUIBuffer")) { - LLUI::sDirtyRect = this->getWindowRectRaw(); + LLUI::sDirtyRect = getWindowRectScaled(); } // HACK for timecode debugging diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index cb511c2f0bf7679a02af3cdd9aa2cf599cdfb07f..67816a6a875683b1ef32b98a02711180dc3f61a4 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -64,7 +64,7 @@ value="0 0 1 1" /> <color name="Yellow" - value="0.114 0.65 0.1" /> + value="1 1 0 1" /> <color name="Green" value="0 .39 .10 1" /> @@ -167,6 +167,9 @@ <color name="ChatHistoryTextColor" reference="LtGray" /> + <color + name="ChicletFlashColor" + reference="0.114 0.65 0.1" /> <color name="ColorDropShadow" reference="Black_50" /> diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png new file mode 100644 index 0000000000000000000000000000000000000000..447e0af0be61761287ef55d611d7e96428174a53 Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png differ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index cc87d5c10585117a68154cdb099ae544ce78ab9d..ad598f25f353d93af4472baeba0495ad9ad1dc42 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -604,8 +604,9 @@ with the same filename but different name <texture name="TrashItem_Off" file_name="icons/TrashItem_Off.png" preload="false" /> <texture name="TrashItem_Press" file_name="icons/TrashItem_Press.png" preload="false" /> - <texture name="Unread_IM" file_name="bottomtray/Unread_IM.png" preload="false" /> + <texture name="Unread_Chiclet" file_name="bottomtray/Unread_Chiclet.png" preload="false" /> <texture name="Unread_Msg" file_name="bottomtray/Unread_Msg.png" preload="false" /> + <texture name="Unread_IM" file_name="bottomtray/Unread_IM.png" preload="false" /> <texture name="WellButton_Lit" file_name="bottomtray/WellButton_Lit.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> <texture name="WellButton_Lit_Selected" file_name="bottomtray/WellButton_Lit_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> diff --git a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png index a1d602f6f0c303ccb79c7a0e84cc5e3fe925cc28..61f9b076ced2e6c183ea9ca58d02bb218b79c3a4 100644 Binary files a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png and b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png differ diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index cc955369e29e904808f19acf66a4936c171c7ecb..33fdd923ad2f97ac73d359a1b067f882c218bfa7 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -110,7 +110,7 @@ </text> <line_editor follows="left|top" - height="16" + height="23" layout="topleft" left_pad="2" max_length="63" @@ -145,7 +145,7 @@ layout="topleft" left="10" name="LandType" - top="84" + top_pad="5" width="100"> Type: </text> @@ -192,7 +192,7 @@ layout="topleft" left="10" name="Owner:" - top="124" + top_pad="5" width="100"> Owner: </text> @@ -202,7 +202,7 @@ follows="left|top" height="16" layout="topleft" - left_pad="5" + left_pad="2" name="OwnerText" width="240"> Leyla Linden @@ -232,6 +232,7 @@ layout="topleft" left="10" name="Group:" + top_pad="7" width="100"> Group: </text> @@ -240,10 +241,11 @@ enabled="false" follows="left|top" height="16" - left_pad="5" + left_pad="2" layout="topleft" name="GroupText" - width="240" /> + width="240"> +Leyla Linden </text> <button follows="right" height="16" @@ -267,10 +269,10 @@ height="23" label="Allow Deed to Group" layout="topleft" - left="96" + left="108" name="check deed" tool_tip="A group officer can deed this land to the group, so it will be supported by the group's land allocation." - top="164" + top_pad="3" width="146" /> <button enabled="false" @@ -289,7 +291,7 @@ height="16" label="Owner Makes Contribution With Deed" layout="topleft" - left="96" + left="108" name="check contrib" tool_tip="When the land is deeded to the group, the former owner contributes enough land allocation to support it." width="199" /> @@ -352,7 +354,7 @@ layout="topleft" left_delta="-199" name="For sale to" - top_delta="6" + top_delta="2" width="186"> For sale to: [BUYER] </text> @@ -364,7 +366,7 @@ layout="topleft" left_delta="0" name="Sell with landowners objects in parcel." - top_pad="8" + top_pad="0" width="186"> Objects included in sale </text> @@ -389,6 +391,7 @@ right="-10" name="Cancel Land Sale" left_pad="5" + top_pad="-10" width="145" /> <text type="string" @@ -422,7 +425,7 @@ layout="topleft" left="10" name="PriceLabel" - top="288" + top_pad="5" width="100"> Area: </text> @@ -470,7 +473,7 @@ layout="topleft" left_delta="82" name="Buy Land..." - top="328" + top_pad="7" width="100" /> <button enabled="true" @@ -480,7 +483,7 @@ layout="topleft" left="10" name="Scripts..." - top="352" + top_pad="1" width="100" /> <button enabled="false" @@ -490,7 +493,7 @@ layout="topleft" right="-10" name="Buy For Group..." - top="352" + top_delta="0" width="180" /> <button enabled="false" @@ -510,7 +513,7 @@ layout="topleft" right="-10" name="Abandon Land..." - top="328" + top_pad="-47" width="180" /> <button follows="left|top" @@ -519,7 +522,7 @@ layout="topleft" left_delta="0" name="Reclaim Land..." - top_delta="-50" + top_delta="-48" width="180" /> <button enabled="false" @@ -530,7 +533,7 @@ left_delta="0" name="Linden Sale..." tool_tip="Land must be owned, set content, and not already for auction." - top_pad="4" + top_pad="2" width="180" /> </panel> <panel @@ -2022,7 +2025,7 @@ Only large parcels can be listed in search. multi_select="true" name="AccessList" tool_tip="([LISTED] listed, [MAX] max)" - width="240" /> + width="230" /> <button follows="bottom" height="23" @@ -2047,7 +2050,7 @@ Only large parcels can be listed in search. follows="top|right" height="170" width="240" - left_pad="8"> + left_pad="2"> <text type="string" length="1" @@ -2071,7 +2074,7 @@ Only large parcels can be listed in search. multi_select="true" name="BannedList" tool_tip="([LISTED] listed, [MAX] max)" - width="240" /> + width="230" /> <button follows="bottom" height="23" diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml index 1946920a9ceae623fbc2edd8e585beda9b54276e..455018f467dc135407a3cf0e777a59e117cc647d 100644 --- a/indra/newview/skins/default/xui/en/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml @@ -30,25 +30,25 @@ type="string" length="1" follows="left|top" - font="SansSerif" height="16" layout="topleft" left_pad="7" + top_delta="3" name="payee_name" - width="210"> - [FIRST] [LAST] + width="184"> + Ericacita Moostopolison </text> <text type="string" length="1" follows="left|top" halign="left" - height="16" + height="14" layout="topleft" - left="30" + left="34" name="object_name_label" top_pad="0" - width="150"> + width="180"> Via object: </text> <icon @@ -59,20 +59,21 @@ name="icon_object" tool_tip="Objects" top_pad="0" - left="30" + left="10" /> <text type="string" length="1" follows="left|top" - font="SansSerif" - height="18" + height="16" layout="topleft" - left_pad="5" + left_pad="7" name="object_name_text" - top_delta="0" - width="210"> - ... + top_delta="3" + use_ellipses="true" + word_wrap="false" + width="188"> + My awesome object with a really damn long name </text> <button height="23" @@ -112,7 +113,7 @@ type="string" length="1" follows="left|top" - height="18" + height="14" layout="topleft" left="25" name="amount text" @@ -123,7 +124,7 @@ <line_editor border_style="line" follows="left|top|right" - height="19" + height="21" top_pad="0" layout="topleft" left="120" diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml index 06dbdc95393c4cb33703e288860c880c641244bf..ead5b8c8f2e30dee6b448a03a77f98f0b4f5791f 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml @@ -11,15 +11,15 @@ min_width="234" name="preview notecard" help_topic="preview_notecard" - title="NOTE:" + title="NOTECARD:" width="400"> <floater.string name="no_object"> - Unable to find object containing this note. + Unable to find object containing this notecard. </floater.string> <floater.string name="not_allowed"> - You do not have permission to view this note. + You do not have permission to view this notecard. </floater.string> <floater.string name="Title"> diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml index 84adabe4fa664f5be62fd4dce645f5b3733b548b..2f88c234cce5273e3a8d07963a845c5f29760223 100644 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -123,6 +123,12 @@ layout="topleft" tool_tip="checkbox" name="test_checkbox" /> + <check_box + top_pad="5" + enabled="false" + label="Checkbox Disabled" + tool_tip="checkbox disabled" + name="test_checkbox_disabled" /> <!-- "combo_box" is a pop-menu of items. Optionally the box itself can contain a general purpose line input editor, allowing the user to provide input that is not a list item. --> diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index e55453f7723fd7f61deb34a5a4e640131b66628e..a1e190fc5eef40c2903692e197bfb70ffbec509b 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -2675,7 +2675,7 @@ even though the user gets a free copy. height="18" layout="topleft" left="10" - use_ellipsis="true" + use_ellipses="true" read_only="true" name="media_info" width="180" /> diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index d29dfa70348c0a03308def9c9a4e043645b4841c..1e104671485564737d6ba857c625dfd37f0fdf34 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -85,7 +85,7 @@ parameter="lsl" /> </menu_item_call> <menu_item_call - label="New Note" + label="New Notecard" layout="topleft" name="New Note"> <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml index b07a8bb51234f50b0a21d0b0ed7d73d65aae61f6..5ad099e2d9e7f93deb0f7075c25160aad138af2b 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml @@ -71,7 +71,7 @@ parameter="lsl" /> </menu_item_call> <menu_item_call - label="New Note" + label="New Notecard" layout="topleft" name="New Note"> <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index 62500c5116c22473631907763b0c62564f0e6b9d..35518cd13b9a6a44d5cca8fb9582906e13b24efb 100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -57,6 +57,12 @@ <menu_item_call.on_enable function="Object.EnableInspect" /> </menu_item_call> + <menu_item_call + label="Zoom In" + name="Zoom In"> + <menu_item_call.on_click + function="Object.ZoomIn" /> + </menu_item_call> <menu_item_separator layout="topleft" /> <context_menu label="Put On >" diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml index 5f2e6e0f6c6b76c263a58bf727097967949f11d9..c4da1df01767a53fe167d094ce08dee1fcc2a977 100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml @@ -63,4 +63,10 @@ function="Avatar.EnableItem" parameter="can_block" /> </menu_item_check> + <menu_item_call + label="Offer Teleport" + name="teleport"> + <menu_item_call.on_click + function="Avatar.OfferTeleport"/> + </menu_item_call> </context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 4e495bab3f0115caf70cfdd9fae47f127fb8e27d..58e9d39807fc67309289fe11f02ef7d77f1d8721 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -307,7 +307,7 @@ <menu_item_separator layout="topleft" /> <menu_item_call - label="Buy Land" + label="Buy This Land" layout="topleft" name="Buy Land"> <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index b92aa10ffc491dbf1dbf50dc27ee74386616cf22..aeaa049f1ff68bf6a3852decdf8a9be1ae86c80a 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -350,7 +350,7 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well --> <button auto_resize="true" - flash_color="Yellow" + flash_color="ChicletFlashColor" follows="right" halign="center" height="23" @@ -403,7 +403,7 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well halign="center" height="23" follows="right" - flash_color="Yellow" + flash_color="ChicletFlashColor" label_color="Black" left="5" name="Unread" diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index 9548119d58753abbae2d81af9abfe054af8345eb..a5bab3232cfd2b5158ee531adf5da39ab103b17e 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -258,7 +258,7 @@ things in this group. There's a broad variety of Abilities. name="static" top_pad="5" width="300"> - Assigned Members + Assigned Roles </text> <scroll_list draw_stripes="true" diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 58437cd4d24f40396c9d9272f2d9b1cb61315bdf..9d00abd2c9563e91e723480db6d0c2b456211099 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -262,7 +262,7 @@ halign="center" parameter="lsl" /> </menu_item_call> <menu_item_call - label="New Note" + label="New Notecard" layout="topleft" name="New Note"> <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml index a99777848b88b125d5b625da9159fc0eb12188f0..e779e37419207fc892485ac4c8d02bba9f7f000c 100644 --- a/indra/newview/skins/default/xui/en/panel_me.xml +++ b/indra/newview/skins/default/xui/en/panel_me.xml @@ -26,7 +26,7 @@ </text> --> <tab_container follows="all" - height="575" + height="570" halign="center" layout="topleft" left="10" 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 10381d3987e1a6253982ebfa484f2613f6b8cd75..12a0a9155d66d9c98b763fde8a39ac85436d4e58 100644 --- a/indra/newview/skins/default/xui/en/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml @@ -31,32 +31,49 @@ name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container - color="DkGray2" + <layout_stack + name="layout" + orientation="vertical" follows="all" - height="485" layout="topleft" - name="profile_scroll" - reserve_scroll_corner="false" - opaque="true" + left="0" top="0" - width="313"> + height="535" + width="313" + border_size="0"> <panel - name="scroll_content_panel" - follows="left|top|right" - height="485" + name="profile_stack" + follows="all" layout="topleft" top="0" left="0" - width="297"> - <panel - follows="left|top" + height="505" + width="313"> + <scroll_container + color="DkGray2" + follows="all" + layout="topleft" + left="0" + name="profile_scroll" + opaque="true" + height="505" + width="313" + top="0"> + <panel + layout="topleft" + follows="left|top|right" + name="scroll_content_panel" + top="0" + left="0" + width="303"> + <panel + follows="left|top|right" height="117" layout="topleft" left="10" name="second_life_image_panel" top="0" - width="280"> + width="300"> <texture_picker allow_no_texture="true" default_image_name="None" @@ -80,7 +97,7 @@ width="102" /> <text follows="left|top|right" - font.style="BOLD" + font.style="BOLD" height="15" layout="topleft" left_pad="10" @@ -88,7 +105,7 @@ text_color="white" top_delta="0" value="[SECOND_LIFE]:" - width="165" /> + width="180" /> <expandable_text follows="left|top|right" height="95" @@ -97,20 +114,20 @@ textbox.max_length="512" name="sl_description_edit" top_pad="-3" - width="173" + width="188" expanded_bg_visible="true" expanded_bg_color="DkGray"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. </expandable_text> </panel> <panel - follows="left|top" + follows="left|top|right" height="117" layout="topleft" - top_pad="10" + top_pad="10" left="10" name="first_life_image_panel" - width="280"> + width="300"> <texture_picker allow_no_texture="true" default_image_name="None" @@ -133,7 +150,7 @@ width="102" /> <text follows="left|top|right" - font.style="BOLD" + font.style="BOLD" height="15" layout="topleft" left_pad="10" @@ -141,7 +158,7 @@ text_color="white" top_delta="0" value="Real World:" - width="165" /> + width="180" /> <expandable_text follows="left|top|right" height="95" @@ -150,90 +167,23 @@ textbox.max_length="512" name="fl_description_edit" top_pad="-3" - width="173" + width="188" expanded_bg_visible="true" expanded_bg_color="DkGray"> Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. </expandable_text> </panel> - - - <!-- <panel - name="lifes_images_panel" - follows="left|top|right" - height="244" - layout="topleft" - top="0" - left="0" - width="285"> - <panel - follows="left|top" - height="117" - layout="topleft" - left="10" - name="second_life_image_panel" - top="0" - width="285"> - <text - follows="left|top|right" - font.style="BOLD" - height="15" - layout="topleft" - left="0" - name="second_life_photo_title_text" - text_color="white" - value="[SECOND_LIFE]:" - width="170" /> - <texture_picker - allow_no_texture="true" - default_image_name="None" - enabled="false" - follows="top|left" - height="117" - layout="topleft" - left="0" - name="2nd_life_pic" - top_pad="0" - width="102" /> - </panel> - <icon - height="18" - image_name="AddItem_Off" - layout="topleft" - name="2nd_life_edit_icon" - label="" - left="87" - tool_tip="Click to select an image" - top="25" - width="18" /> - </panel> --> - - - - - <text - type="string" - follows="left|top" - font="SansSerifSmall" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - name="me_homepage_text" - text_color="white" - top_pad="0" - width="280"> - Homepage: - </text> <text follows="left|top" height="15" + font.style="BOLD" + font="SansSerifMedium" layout="topleft" left="10" name="homepage_edit" top_pad="0" value="http://librarianavengers.org" - width="280" + width="300" word_wrap="false" use_ellipses="true" /> @@ -246,8 +196,8 @@ name="title_member_text" text_color="white" top_pad="10" - value="Member Since:" - width="280" /> + value="Resident Since:" + width="300" /> <text follows="left|top" height="15" @@ -255,7 +205,7 @@ left="10" name="register_date" value="05/31/2376" - width="280" + width="300" word_wrap="true" /> <text follows="left|top" @@ -265,9 +215,9 @@ left="10" name="title_acc_status_text" text_color="white" - top_pad="10" + top_pad="5" value="Account Status:" - width="280" /> + width="300" /> <!-- <text type="string" follows="left|top" @@ -279,16 +229,18 @@ top_delta="0" value="Go to Dashboard" width="100"/> --> - <text + <text follows="left|top" - height="20" + height="28" layout="topleft" left="10" name="acc_status_text" top_pad="0" - value="Resident. No payment info on file." - width="280" - word_wrap="true" /> + width="300" + word_wrap="true"> + Resident. No payment info on file. +Linden. + </text> <text follows="left|top" font.style="BOLD" @@ -297,9 +249,9 @@ left="10" name="title_partner_text" text_color="white" - top_pad="5" + top_pad="3" value="Partner:" - width="280" /> + width="300" /> <panel follows="left|top" height="15" @@ -307,7 +259,7 @@ left="10" name="partner_data_panel" top_pad="0" - width="280"> + width="300"> <text follows="left|top" height="10" @@ -316,44 +268,43 @@ name="partner_text" top="0" value="[FIRST] [LAST]" - width="280" + width="300" word_wrap="true" /> </panel> <text follows="left|top" font.style="BOLD" - height="15" + height="13" layout="topleft" left="10" name="title_groups_text" text_color="white" - top_pad="8" + top_pad="3" value="Groups:" - width="280" /> - <expandable_text - follows="left|top|bottom" - height="60" + width="300" /> + <expandable_text + follows="all" + height="113" layout="topleft" - left="10" - name="sl_groups" + left="7" + name="sl_groups" top_pad="0" - width="280" - expanded_bg_visible="true" - expanded_bg_color="DkGray"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. + width="298" + expanded_bg_visible="true" + expanded_bg_color="DkGray"> + Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. Aenean viverra tulip moosetop. Slan de heelish marfnik tooplod. Sum sum to whop de wompam booster copm. </expandable_text> - </panel> + </panel> </scroll_container> - <panel + </panel> +<!-- <panel follows="bottom|left" layout="topleft" left="0" name="profile_buttons_panel" - top_pad="2" - bottom="10" - height="23" - width="303"> - <button + height="28" + width="313"> + <button follows="bottom|left" height="23" label="Add Friend" @@ -361,8 +312,9 @@ left="0" mouse_opaque="false" name="add_friend" + tool_tip="Offer friendship to the resident" top="5" - width="75" /> + width="80" /> <button follows="bottom|left" height="23" @@ -370,7 +322,7 @@ layout="topleft" name="im" top="5" - left_pad="5" + left_pad="3" width="45" /> <button follows="bottom|left" @@ -378,7 +330,7 @@ label="Call" layout="topleft" name="call" - left_pad="5" + left_pad="3" top="5" width="45" /> <button @@ -389,7 +341,7 @@ layout="topleft" name="show_on_map_btn" top="5" - left_pad="5" + left_pad="3" width="45" /> <button follows="bottom|left" @@ -397,23 +349,24 @@ label="Teleport" layout="topleft" name="teleport" - left_pad="5" + left_pad="3" top="5" - width="80" /> - </panel> + width="85" /> + </panel>--> <panel follows="bottom|left" layout="topleft" left="0" - top_pad="-17" + top_pad="0" name="profile_me_buttons_panel" visible="false" - height="23" - width="303"> + height="28" + width="313"> <button follows="bottom|right" height="23" - left="10" + left="20" + top="0" label="Edit Profile" name="edit_profile_btn" tool_tip="Edit your personal information" @@ -425,7 +378,7 @@ left_pad="10" name="edit_appearance_btn" tool_tip="Create/edit your appearance: physical data, clothes and etc." - right="-10" width="130" /> </panel> +</layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_notes.xml b/indra/newview/skins/default/xui/en/panel_notes.xml index f15e75dee9537d84a842d31a211a12d7e0ffa30f..9335db06232d4bb46ba4e1501e2585a0817d06e0 100644 --- a/indra/newview/skins/default/xui/en/panel_notes.xml +++ b/indra/newview/skins/default/xui/en/panel_notes.xml @@ -115,14 +115,14 @@ <button follows="bottom|left" height="23" - label="Add" + label="Add Friend" layout="topleft" left="0" mouse_opaque="false" name="add_friend" tool_tip="Offer friendship to the resident" top="5" - width="55" /> + width="80" /> <button follows="bottom|left" height="23" @@ -131,8 +131,8 @@ name="im" tool_tip="Open instant message session" top="5" - left_pad="5" - width="40" /> + left_pad="3" + width="45" /> <button follows="bottom|left" height="23" @@ -140,9 +140,9 @@ layout="topleft" name="call" tool_tip="Call this resident" - left_pad="5" + left_pad="3" top="5" - width="55" /> + width="45" /> <button enabled="false" follows="bottom|left" @@ -152,8 +152,8 @@ name="show_on_map_btn" tool_tip="Show the resident on the map" top="5" - left_pad="5" - width="50" /> + left_pad="3" + width="45" /> <button follows="bottom|left" height="23" @@ -161,9 +161,9 @@ layout="topleft" name="teleport" tool_tip="Offer teleport" - left_pad="5" + left_pad="3" top="5" - width="90" /> + width="80" /> </panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 08a10553a86a0b50c85948c1433ca1717ea18953..adf22f825ff6fde9214ffe31cffc2bea94fc4c7b 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -400,7 +400,7 @@ background_visible="true" layout="topleft" name="group_info_btn" tool_tip="Show group information" - width="110" /> + width="102" /> <button follows="bottom|left" top="4" @@ -410,7 +410,7 @@ background_visible="true" layout="topleft" name="chat_btn" tool_tip="Open chat session" - width="110" /> + width="102" /> <button follows="bottom|left" top="4" @@ -420,6 +420,6 @@ background_visible="true" layout="topleft" name="group_call_btn" tool_tip="Call this group" - width="110" /> + width="102" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 342cf4144f9c65a2bf35b3417ca40a3e1c7cb10f..5ccc964c9ac82cc3df55d016965fea53671aab16 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -27,42 +27,59 @@ <string name="no_partner_text" value="None" /> - <string + <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container - color="DkGray2" + <layout_stack + name="layout" + orientation="vertical" follows="all" - height="485" layout="topleft" - name="profile_scroll" - reserve_scroll_corner="true" - opaque="true" + left="0" top="0" - width="313"> + height="535" + width="313" + border_size="0"> <panel - name="scroll_content_panel" - follows="left|top|right" - height="485" + name="profile_stack" + follows="all" layout="topleft" top="0" left="0" + height="505" width="313"> + <scroll_container + color="DkGray2" + follows="all" + layout="topleft" + left="0" + name="profile_scroll" + opaque="true" + height="505" + width="313" + top="0"> + <panel + layout="topleft" + follows="left|top|right" + name="profile_scroll_panel" + top="0" + left="0" + width="303"> <panel - follows="left|top" + follows="left|top|right" height="117" layout="topleft" left="10" name="second_life_image_panel" top="0" - width="280"> + width="303"> <texture_picker allow_no_texture="true" default_image_name="None" enabled="false" follows="top|left" - height="102" + height="117" layout="topleft" left="0" name="2nd_life_pic" @@ -78,7 +95,7 @@ text_color="white" top_delta="0" value="[SECOND_LIFE]:" - width="165" /> + width="180" /> <expandable_text follows="left|top|right" height="95" @@ -87,26 +104,26 @@ textbox.max_length="512" name="sl_description_edit" top_pad="-3" - width="173" + width="185" expanded_bg_visible="true" expanded_bg_color="DkGray"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. </expandable_text> </panel> <panel - follows="left|top" + follows="left|top|right" height="117" layout="topleft" top_pad="10" left="10" name="first_life_image_panel" - width="280"> + width="303"> <texture_picker allow_no_texture="true" default_image_name="None" enabled="false" follows="top|left" - height="102" + height="117" layout="topleft" left="0" name="real_world_pic" @@ -121,7 +138,7 @@ text_color="white" top_delta="0" value="Real World:" - width="165" /> + width="180" /> <expandable_text follows="left|top|right" height="95" @@ -130,57 +147,45 @@ textbox.max_length="512" name="fl_description_edit" top_pad="-3" - width="173" + width="185" expanded_bg_visible="true" expanded_bg_color="DkGray"> Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. </expandable_text> </panel> - <text - type="string" - follows="left|top" - font="SansSerifSmall" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - name="me_homepage_text" - text_color="white" - top_pad="0" - width="280"> - Homepage: - </text> - <text + <text follows="left|top" height="15" + font.style="BOLD" + font="SansSerifMedium" layout="topleft" left="10" name="homepage_edit" top_pad="0" value="http://librarianavengers.org" - width="280" + width="300" word_wrap="false" use_ellipses="true" /> <text follows="left|top" - font.style="BOLD" + font.style="BOLD" height="10" layout="topleft" left="10" name="title_member_text" text_color="white" top_pad="10" - value="Member Since:" - width="280" /> + value="Resident Since:" + width="300" /> <text follows="left|top" height="15" layout="topleft" left="10" name="register_date" - value="05/31/1976" - width="280" + value="05/31/2376" + width="300" word_wrap="true" /> <text follows="left|top" @@ -190,9 +195,9 @@ left="10" name="title_acc_status_text" text_color="white" - top_pad="10" + top_pad="5" value="Account Status:" - width="280" /> + width="300" /> <!-- <text type="string" follows="left|top" @@ -206,14 +211,16 @@ width="100"/> --> <text follows="left|top" - height="20" + height="28" layout="topleft" left="10" name="acc_status_text" top_pad="0" - value="Resident. No payment info on file." - width="280" - word_wrap="true" /> + width="300" + word_wrap="true"> + Resident. No payment info on file. +Linden. + </text> <text follows="left|top" font.style="BOLD" @@ -222,9 +229,9 @@ left="10" name="title_partner_text" text_color="white" - top_pad="5" + top_pad="3" value="Partner:" - width="280" /> + width="300" /> <panel follows="left|top" height="15" @@ -232,7 +239,7 @@ left="10" name="partner_data_panel" top_pad="0" - width="280"> + width="300"> <text follows="left|top" height="10" @@ -241,43 +248,41 @@ name="partner_text" top="0" value="[FIRST] [LAST]" - width="280" + width="300" word_wrap="true" /> </panel> <text follows="left|top" font.style="BOLD" - height="15" + height="13" layout="topleft" left="10" name="title_groups_text" text_color="white" - top_pad="8" + top_pad="3" value="Groups:" - width="280" /> - <expandable_text - follows="left|top|bottom" - height="60" + width="300" /> + <expandable_text + follows="all" + height="113" layout="topleft" - left="10" - name="sl_groups" - top_pad="0" - width="280" - expanded_bg_visible="true" - expanded_bg_color="DkGray"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. + left="7" + name="sl_groups" + top_pad="0" + width="298" + expanded_bg_visible="true" + expanded_bg_color="DkGray"> + Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. Aenean viverra tulip moosetop. Slan de heelish marfnik tooplod. Sum sum to whop de wompam booster copm. </expandable_text> - </panel> + </panel> </scroll_container> +</panel> <panel - follows="bottom|left" - layout="topleft" - left="0" - name="profile_buttons_panel" - top_pad="2" - bottom="0" - height="19" - width="303"> + follows="bottom|left" + height="28" + layout="topleft" + name="profile_buttons_panel" + width="313"> <button follows="bottom|left" height="23" @@ -288,7 +293,7 @@ name="add_friend" tool_tip="Offer friendship to the resident" top="5" - width="77" /> + width="80" /> <button follows="bottom|left" height="23" @@ -297,8 +302,8 @@ name="im" tool_tip="Open instant message session" top="5" - left_pad="5" - width="33" /> + left_pad="3" + width="45" /> <button follows="bottom|left" height="23" @@ -306,9 +311,9 @@ layout="topleft" name="call" tool_tip="Call this resident" - left_pad="5" + left_pad="3" top="5" - width="40" /> + width="45" /> <button enabled="false" follows="bottom|left" @@ -318,8 +323,8 @@ name="show_on_map_btn" tool_tip="Show the resident on the map" top="5" - left_pad="5" - width="44" /> + left_pad="3" + width="45" /> <button follows="bottom|left" height="23" @@ -327,10 +332,10 @@ layout="topleft" name="teleport" tool_tip="Offer teleport" - left_pad="5" + left_pad="3" top="5" - width="67" /> - <button + width="85" /> + <!-- <button follows="bottom|right" height="23" label="â–¼" @@ -339,23 +344,25 @@ tool_tip="Pay money to or share inventory with the resident" right="-1" top="5" - width="21" /> - </panel> + left_pad="3" + width="23" />--> + </panel> <panel - follows="bottom|left" - layout="topleft" - left="0" - top_pad="-17" - name="profile_me_buttons_panel" - visible="false" - height="19" - width="303"> + follows="bottom|left" + height="28" + layout="topleft" + top_pad="-26" + name="profile_me_buttons_panel" + visible="false" + width="313"> <button follows="bottom|right" height="23" - left="10" + left="20" + top="0" label="Edit Profile" name="edit_profile_btn" + tool_tip="Edit your personal information" width="130" /> <button follows="bottom|right" @@ -363,7 +370,8 @@ label="Edit Appearance" left_pad="10" name="edit_appearance_btn" - right="-10" + tool_tip="Create/edit your appearance: physical data, clothes and etc." width="130" /> - </panel> -</panel> + </panel> + </layout_stack> +</panel> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml index 6324ec2bd8958190405f93ba96e49ad0532284fe..c51447eaf002b38b422c6c5da9e610ec5ef844ad 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml @@ -26,8 +26,8 @@ top="2" width="23" /> <text_editor - allow_scroll="false" - bg_visible="false" + allow_scroll="false" + bg_visible="false" read_only = "true" follows="top|left|right" font="SansSerifHugeBold" @@ -55,7 +55,7 @@ halign="center" layout="topleft" left="10" - min_width="333" + min_width="333" name="tabs" tab_min_width="80" tab_height="30" 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 7cb973f4c8dbccf2eb66c61959889fd5cfe1a91e..af0d3382565dd6239d98099607c3496f46daad94 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 @@ -33,7 +33,7 @@ <chiclet_im_adhoc.new_message_icon bottom="12" height="13" - image_name="Unread_IM" + image_name="Unread_Chiclet" left="12" name="new_message_icon" visible="false" 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 a9b567225eb85ad9f1293a6109f54e6126a46180..b1988a2d2001c6281be7166c4d6d5990dcb93386 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 @@ -34,7 +34,7 @@ <chiclet_im_group.new_message_icon bottom="12" height="13" - image_name="Unread_IM" + image_name="Unread_Chiclet" left="12" name="new_message_icon" visible="false" 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 9283594a4ca393e9091e2d514c3864db476b8e3c..52fbce0de76ab815ea2c386a3c137d3a7f451a15 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 @@ -33,7 +33,7 @@ <chiclet_im_p2p.new_message_icon bottom="12" height="13" - image_name="Unread_IM" + image_name="Unread_Chiclet" left="12" name="new_message_icon" visible="false" 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 5a22563758299ea7e20db8ad5f2ecf0ece6aecc3..33f85a964cf063c4a8b30205827af8a61a1684cf 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml @@ -14,7 +14,7 @@ <chiclet_offer.new_message_icon bottom="12" height="13" - image_name="Unread_IM" + image_name="Unread_Chiclet" left="12" name="new_message_icon" visible="false" 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 05a23b95f9e578633bef23060902c5cb294e8ca7..560c8e6ea5cbdffbf55b6c97abb54648e1bbfcc0 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml @@ -14,7 +14,7 @@ <chiclet_script.new_message_icon bottom="12" height="13" - image_name="Unread_IM" + image_name="Unread_Chiclet" left="12" name="new_message_icon" visible="false" diff --git a/indra/newview/tests/lldateutil_test.cpp b/indra/newview/tests/lldateutil_test.cpp index 142a5eb5e6aa02e5c83fbbef22e19e51e58ec9a7..7ba82fbd2c595f59c4b29adfdd389722aa0c71ab 100644 --- a/indra/newview/tests/lldateutil_test.cpp +++ b/indra/newview/tests/lldateutil_test.cpp @@ -179,4 +179,14 @@ namespace tut LLDateUtil::ageFromDate("12/31/2009", mNow), "Joined today" ); } + + template<> template<> + void dateutil_object_t::test<5>() + { + set_test_name("2010 rollover"); + LLDate now(std::string("2010-01-04T12:00:00Z")); + ensure_equals("days", + LLDateUtil::ageFromDate("12/13/2009", now), + "3 weeks old" ); + } }