From 52baeb34b38d20f4bde5ee931621377ef9e4cb31 Mon Sep 17 00:00:00 2001 From: angela Date: Tue, 19 Jan 2010 11:06:17 +0800 Subject: EXT-4269 PDD: Add teleport destination to teleport warning dialog --- indra/newview/llinventorybridge.cpp | 8 ++++++-- indra/newview/skins/default/xui/en/notifications.xml | 2 +- indra/newview/skins/default/xui/en/panel_navigation_bar.xml | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index e9176da715..eacda5ad28 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -5093,8 +5093,12 @@ void LLLandmarkBridgeAction::doIt() // Opening (double-clicking) a landmark immediately teleports, // but warns you the first time. LLSD payload; - payload["asset_id"] = item->getAssetUUID(); - LLNotificationsUtil::add("TeleportFromLandmark", LLSD(), payload); + payload["asset_id"] = item->getAssetUUID(); + + LLSD args; + args["LOCATION"] = item->getDisplayName(); + + LLNotificationsUtil::add("TeleportFromLandmark", args, payload); } LLInvFVBridgeAction::doIt(); diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 957b4d74db..0768706223 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -3058,7 +3058,7 @@ Join me in [REGION] icon="alertmodal.tga" name="TeleportFromLandmark" type="alertmodal"> -Are you sure you want to teleport? +Are you sure you want to teleport to [LOCATION]? + bottom="55" + width="590"> Date: Tue, 19 Jan 2010 13:38:51 +0800 Subject: EXT-3833 [BSI] Build Tools -> Objects -> Slice Begin & End text unreadable --- indra/newview/skins/default/xui/en/floater_tools.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index a1e190fc5e..f1aa5c27c1 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -1687,6 +1687,7 @@ even though the user gets a free copy. Taper Date: Tue, 19 Jan 2010 18:18:59 +0800 Subject: EXT-1341 Inspectors - Break LLToolPie::handleTooltip into smaller functions, handleTooltipLand vs. handleTooltipObject --- indra/newview/lltoolpie.cpp | 569 ++++++++++++++++++++++---------------------- indra/newview/lltoolpie.h | 4 +- 2 files changed, 293 insertions(+), 280 deletions(-) diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index da7e8cd767..cd44b04abd 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -661,341 +661,352 @@ static bool needs_tooltip(LLSelectNode* nodep) return false; } -BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) -{ - if (!LLUI::sSettingGroups["config"]->getBOOL("ShowHoverTips")) return TRUE; - if (!mHoverPick.isValid()) return TRUE; - - LLViewerObject* hover_object = mHoverPick.getObject(); - - // update hover object and hover parcel - LLSelectMgr::getInstance()->setHoverObject(hover_object, mHoverPick.mObjectFace); - if (mHoverPick.mPickType == LLPickInfo::PICK_LAND) +BOOL LLToolPie::handleTooltipLand(std::string line, std::string tooltip_msg) +{ + LLViewerParcelMgr::getInstance()->setHoverParcel( mHoverPick.mPosGlobal ); + // + // Do not show hover for land unless prefs are set to allow it. + // + + if (!gSavedSettings.getBOOL("ShowLandHoverTip")) return TRUE; + + // Didn't hit an object, but since we have a land point we + // must be hovering over land. + + LLParcel* hover_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); + LLUUID owner; + S32 width = 0; + S32 height = 0; + + if ( hover_parcel ) { - LLViewerParcelMgr::getInstance()->setHoverParcel( mHoverPick.mPosGlobal ); + owner = hover_parcel->getOwnerID(); + width = S32(LLViewerParcelMgr::getInstance()->getHoverParcelWidth()); + height = S32(LLViewerParcelMgr::getInstance()->getHoverParcelHeight()); } - - std::string tooltip_msg; - std::string line; - - if ( hover_object ) + + // Line: "Land" + line.clear(); + line.append(LLTrans::getString("TooltipLand")); + if (hover_parcel) + { + line.append(hover_parcel->getName()); + } + tooltip_msg.append(line); + tooltip_msg.push_back('\n'); + + // Line: "Owner: James Linden" + line.clear(); + line.append(LLTrans::getString("TooltipOwner") + " "); + + if ( hover_parcel ) { - if ( hover_object->isHUDAttachment() ) + std::string name; + if (LLUUID::null == owner) { - // no hover tips for HUD elements, since they can obscure - // what the HUD is displaying - return TRUE; + line.append(LLTrans::getString("TooltipPublic")); } - - if ( hover_object->isAttachment() ) + else if (hover_parcel->getIsGroupOwned()) { - // get root of attachment then parent, which is avatar - LLViewerObject* root_edit = hover_object->getRootEdit(); - if (!root_edit) + if (gCacheName->getGroupName(owner, name)) { - // Strange parenting issue, don't show any text - return TRUE; + line.append(name); + line.append(LLTrans::getString("TooltipIsGroup")); } - hover_object = (LLViewerObject*)root_edit->getParent(); - if (!hover_object) + else { - // another strange parenting issue, bail out - return TRUE; + line.append(LLTrans::getString("RetrievingData")); } } - - line.clear(); - if (hover_object->isAvatar()) + else if(gCacheName->getFullName(owner, name)) { - // only show tooltip if same inspector not already open - LLFloater* existing_inspector = LLFloaterReg::findInstance("inspect_avatar"); - if (!existing_inspector - || !existing_inspector->getVisible() - || existing_inspector->getKey()["avatar_id"].asUUID() != hover_object->getID()) - { - std::string avatar_name; - LLNameValue* firstname = hover_object->getNVPair("FirstName"); - LLNameValue* lastname = hover_object->getNVPair("LastName"); - if (firstname && lastname) - { - avatar_name = llformat("%s %s", firstname->getString(), lastname->getString()); - } - else - { - avatar_name = LLTrans::getString("TooltipPerson"); - } - - // *HACK: We may select this object, so pretend it was clicked - mPick = mHoverPick; - LLInspector::Params p; - p.fillFrom(LLUICtrlFactory::instance().getDefaultParams()); - p.message(avatar_name); - p.image.name("Inspector_I"); - p.click_callback(boost::bind(showAvatarInspector, hover_object->getID())); - p.visible_time_near(6.f); - p.visible_time_far(3.f); - p.delay_time(0.35f); - p.wrap(false); - - LLToolTipMgr::instance().show(p); - } + line.append(name); } else { - // - // We have hit a regular object (not an avatar or attachment) - // - - // - // Default prefs will suppress display unless the object is interactive - // - bool show_all_object_tips = - (bool)gSavedSettings.getBOOL("ShowAllObjectHoverTip"); - LLSelectNode *nodep = LLSelectMgr::getInstance()->getHoverNode(); - - // only show tooltip if same inspector not already open - LLFloater* existing_inspector = LLFloaterReg::findInstance("inspect_object"); - if (nodep && - (!existing_inspector - || !existing_inspector->getVisible() - || existing_inspector->getKey()["object_id"].asUUID() != hover_object->getID())) - { - if (nodep->mName.empty()) - { - tooltip_msg.append(LLTrans::getString("TooltipNoName")); - } - else - { - tooltip_msg.append( nodep->mName ); - } - - bool is_time_based_media = false; - bool is_web_based_media = false; - bool is_media_playing = false; - - // Does this face have media? - const LLTextureEntry* tep = hover_object->getTE(mHoverPick.mObjectFace); - - if(tep) - { - const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; - if (mep) - { - viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; - LLPluginClassMedia* media_plugin = NULL; - - if (media_impl.notNull() && (media_impl->hasMedia())) - { - LLStringUtil::format_map_t args; - - media_plugin = media_impl->getMediaPlugin(); - if(media_plugin) - { if(media_plugin->pluginSupportsMediaTime()) - { - is_time_based_media = true; - is_web_based_media = false; - //args["[CurrentURL]"] = media_impl->getMediaURL(); - is_media_playing = media_impl->isMediaPlaying(); - } - else - { - is_time_based_media = false; - is_web_based_media = true; - //args["[CurrentURL]"] = media_plugin->getLocation(); - } - //tooltip_msg.append(LLTrans::getString("CurrentURL", args)); - } - } - } - } - - // also check the primary node since sometimes it can have an action even though - // the root node doesn't - bool needs_tip = needs_tooltip(nodep) || - needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode()); - - if (show_all_object_tips || needs_tip) - { - // We may select this object, so pretend it was clicked - mPick = mHoverPick; - LLInspector::Params p; - p.fillFrom(LLUICtrlFactory::instance().getDefaultParams()); - p.message(tooltip_msg); - p.image.name("Inspector_I"); - p.click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace)); - p.time_based_media(is_time_based_media); - p.web_based_media(is_web_based_media); - p.media_playing(is_media_playing); - p.click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick)); - p.click_homepage_callback(boost::bind(VisitHomePage, mHoverPick)); - p.visible_time_near(6.f); - p.visible_time_far(3.f); - p.delay_time(0.35f); - p.wrap(false); - - LLToolTipMgr::instance().show(p); - } - } + line.append(LLTrans::getString("RetrievingData")); } } - else if ( mHoverPick.mPickType == LLPickInfo::PICK_LAND ) + else { - // - // Do not show hover for land unless prefs are set to allow it. - // + line.append(LLTrans::getString("RetrievingData")); + } + tooltip_msg.append(line); + tooltip_msg.push_back('\n'); + + // Line: "no fly, not safe, no build" + + // Don't display properties for your land. This is just + // confusing, because you can do anything on your own land. + if ( hover_parcel && owner != gAgent.getID() ) + { + S32 words = 0; - if (!gSavedSettings.getBOOL("ShowLandHoverTip")) return TRUE; - - // Didn't hit an object, but since we have a land point we - // must be hovering over land. - - LLParcel* hover_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); - LLUUID owner; - S32 width = 0; - S32 height = 0; - - if ( hover_parcel ) - { - owner = hover_parcel->getOwnerID(); - width = S32(LLViewerParcelMgr::getInstance()->getHoverParcelWidth()); - height = S32(LLViewerParcelMgr::getInstance()->getHoverParcelHeight()); - } - - // Line: "Land" - line.clear(); - line.append(LLTrans::getString("TooltipLand")); - if (hover_parcel) - { - line.append(hover_parcel->getName()); - } - tooltip_msg.append(line); - tooltip_msg.push_back('\n'); - - // Line: "Owner: James Linden" line.clear(); - line.append(LLTrans::getString("TooltipOwner") + " "); - - if ( hover_parcel ) + // JC - Keep this in the same order as the checkboxes + // on the land info panel + if ( !hover_parcel->getAllowModify() ) { - std::string name; - if (LLUUID::null == owner) + if ( hover_parcel->getAllowGroupModify() ) { - line.append(LLTrans::getString("TooltipPublic")); + line.append(LLTrans::getString("TooltipFlagGroupBuild")); } - else if (hover_parcel->getIsGroupOwned()) + else { - if (gCacheName->getGroupName(owner, name)) - { - line.append(name); - line.append(LLTrans::getString("TooltipIsGroup")); - } - else - { - line.append(LLTrans::getString("RetrievingData")); - } + line.append(LLTrans::getString("TooltipFlagNoBuild")); } - else if(gCacheName->getFullName(owner, name)) + words++; + } + + if ( !hover_parcel->getAllowTerraform() ) + { + if (words) line.append(", "); + line.append(LLTrans::getString("TooltipFlagNoEdit")); + words++; + } + + if ( hover_parcel->getAllowDamage() ) + { + if (words) line.append(", "); + line.append(LLTrans::getString("TooltipFlagNotSafe")); + words++; + } + + // Maybe we should reflect the estate's block fly bit here as well? DK 12/1/04 + if ( !hover_parcel->getAllowFly() ) + { + if (words) line.append(", "); + line.append(LLTrans::getString("TooltipFlagNoFly")); + words++; + } + + if ( !hover_parcel->getAllowOtherScripts() ) + { + if (words) line.append(", "); + if ( hover_parcel->getAllowGroupScripts() ) { - line.append(name); + line.append(LLTrans::getString("TooltipFlagGroupScripts")); } else { - line.append(LLTrans::getString("RetrievingData")); + line.append(LLTrans::getString("TooltipFlagNoScripts")); } + + words++; } - else + + if (words) { - line.append(LLTrans::getString("RetrievingData")); + tooltip_msg.append(line); + tooltip_msg.push_back('\n'); } + } + + if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE)) + { + LLStringUtil::format_map_t args; + args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice()); + line = LLTrans::getString("TooltipForSaleL$", args); tooltip_msg.append(line); tooltip_msg.push_back('\n'); + } + + // trim last newlines + if (!tooltip_msg.empty()) + { + tooltip_msg.erase(tooltip_msg.size() - 1); + LLToolTipMgr::instance().show(tooltip_msg); + } + + return TRUE; +} - // Line: "no fly, not safe, no build" - - // Don't display properties for your land. This is just - // confusing, because you can do anything on your own land. - if ( hover_parcel && owner != gAgent.getID() ) +BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string line, std::string tooltip_msg) +{ + if ( hover_object->isHUDAttachment() ) + { + // no hover tips for HUD elements, since they can obscure + // what the HUD is displaying + return TRUE; + } + + if ( hover_object->isAttachment() ) + { + // get root of attachment then parent, which is avatar + LLViewerObject* root_edit = hover_object->getRootEdit(); + if (!root_edit) { - S32 words = 0; - - line.clear(); - // JC - Keep this in the same order as the checkboxes - // on the land info panel - if ( !hover_parcel->getAllowModify() ) + // Strange parenting issue, don't show any text + return TRUE; + } + hover_object = (LLViewerObject*)root_edit->getParent(); + if (!hover_object) + { + // another strange parenting issue, bail out + return TRUE; + } + } + + line.clear(); + if (hover_object->isAvatar()) + { + // only show tooltip if same inspector not already open + LLFloater* existing_inspector = LLFloaterReg::findInstance("inspect_avatar"); + if (!existing_inspector + || !existing_inspector->getVisible() + || existing_inspector->getKey()["avatar_id"].asUUID() != hover_object->getID()) + { + std::string avatar_name; + LLNameValue* firstname = hover_object->getNVPair("FirstName"); + LLNameValue* lastname = hover_object->getNVPair("LastName"); + if (firstname && lastname) { - if ( hover_parcel->getAllowGroupModify() ) - { - line.append(LLTrans::getString("TooltipFlagGroupBuild")); - } - else - { - line.append(LLTrans::getString("TooltipFlagNoBuild")); - } - words++; + avatar_name = llformat("%s %s", firstname->getString(), lastname->getString()); } - - if ( !hover_parcel->getAllowTerraform() ) + else { - if (words) line.append(", "); - line.append(LLTrans::getString("TooltipFlagNoEdit")); - words++; + avatar_name = LLTrans::getString("TooltipPerson"); } - - if ( hover_parcel->getAllowDamage() ) + + // *HACK: We may select this object, so pretend it was clicked + mPick = mHoverPick; + LLInspector::Params p; + p.fillFrom(LLUICtrlFactory::instance().getDefaultParams()); + p.message(avatar_name); + p.image.name("Inspector_I"); + p.click_callback(boost::bind(showAvatarInspector, hover_object->getID())); + p.visible_time_near(6.f); + p.visible_time_far(3.f); + p.delay_time(0.35f); + p.wrap(false); + + LLToolTipMgr::instance().show(p); + } + } + else + { + // + // We have hit a regular object (not an avatar or attachment) + // + + // + // Default prefs will suppress display unless the object is interactive + // + bool show_all_object_tips = + (bool)gSavedSettings.getBOOL("ShowAllObjectHoverTip"); + LLSelectNode *nodep = LLSelectMgr::getInstance()->getHoverNode(); + + // only show tooltip if same inspector not already open + LLFloater* existing_inspector = LLFloaterReg::findInstance("inspect_object"); + if (nodep && + (!existing_inspector + || !existing_inspector->getVisible() + || existing_inspector->getKey()["object_id"].asUUID() != hover_object->getID())) + { + if (nodep->mName.empty()) { - if (words) line.append(", "); - line.append(LLTrans::getString("TooltipFlagNotSafe")); - words++; + tooltip_msg.append(LLTrans::getString("TooltipNoName")); } - - // Maybe we should reflect the estate's block fly bit here as well? DK 12/1/04 - if ( !hover_parcel->getAllowFly() ) + else { - if (words) line.append(", "); - line.append(LLTrans::getString("TooltipFlagNoFly")); - words++; + tooltip_msg.append( nodep->mName ); } - - if ( !hover_parcel->getAllowOtherScripts() ) + + bool is_time_based_media = false; + bool is_web_based_media = false; + bool is_media_playing = false; + + // Does this face have media? + const LLTextureEntry* tep = hover_object->getTE(mHoverPick.mObjectFace); + + if(tep) { - if (words) line.append(", "); - if ( hover_parcel->getAllowGroupScripts() ) + const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; + if (mep) { - line.append(LLTrans::getString("TooltipFlagGroupScripts")); - } - else - { - line.append(LLTrans::getString("TooltipFlagNoScripts")); + viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; + LLPluginClassMedia* media_plugin = NULL; + + if (media_impl.notNull() && (media_impl->hasMedia())) + { + LLStringUtil::format_map_t args; + + media_plugin = media_impl->getMediaPlugin(); + if(media_plugin) + { if(media_plugin->pluginSupportsMediaTime()) + { + is_time_based_media = true; + is_web_based_media = false; + //args["[CurrentURL]"] = media_impl->getMediaURL(); + is_media_playing = media_impl->isMediaPlaying(); + } + else + { + is_time_based_media = false; + is_web_based_media = true; + //args["[CurrentURL]"] = media_plugin->getLocation(); + } + //tooltip_msg.append(LLTrans::getString("CurrentURL", args)); + } + } } - - words++; } - - if (words) + + // also check the primary node since sometimes it can have an action even though + // the root node doesn't + bool needs_tip = needs_tooltip(nodep) || + needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode()); + + if (show_all_object_tips || needs_tip) { - tooltip_msg.append(line); - tooltip_msg.push_back('\n'); + // We may select this object, so pretend it was clicked + mPick = mHoverPick; + LLInspector::Params p; + p.fillFrom(LLUICtrlFactory::instance().getDefaultParams()); + p.message(tooltip_msg); + p.image.name("Inspector_I"); + p.click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace)); + p.time_based_media(is_time_based_media); + p.web_based_media(is_web_based_media); + p.media_playing(is_media_playing); + p.click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick)); + p.click_homepage_callback(boost::bind(VisitHomePage, mHoverPick)); + p.visible_time_near(6.f); + p.visible_time_far(3.f); + p.delay_time(0.35f); + p.wrap(false); + + LLToolTipMgr::instance().show(p); } } + } + + return TRUE; +} - if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE)) - { - LLStringUtil::format_map_t args; - args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice()); - line = LLTrans::getString("TooltipForSaleL$", args); - tooltip_msg.append(line); - tooltip_msg.push_back('\n'); - } +BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) +{ + if (!LLUI::sSettingGroups["config"]->getBOOL("ShowHoverTips")) return TRUE; + if (!mHoverPick.isValid()) return TRUE; - // trim last newlines - if (!tooltip_msg.empty()) - { - tooltip_msg.erase(tooltip_msg.size() - 1); - LLToolTipMgr::instance().show(tooltip_msg); - } - } + LLViewerObject* hover_object = mHoverPick.getObject(); + + // update hover object and hover parcel + LLSelectMgr::getInstance()->setHoverObject(hover_object, mHoverPick.mObjectFace); + + + std::string tooltip_msg; + std::string line; + if ( hover_object ) + { + handleTooltipObject(hover_object, line, tooltip_msg ); + } + else if (mHoverPick.mPickType == LLPickInfo::PICK_LAND) + { + handleTooltipLand(line, tooltip_msg); + } return TRUE; } diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h index 5f0e28fa95..8a4c949aef 100644 --- a/indra/newview/lltoolpie.h +++ b/indra/newview/lltoolpie.h @@ -89,7 +89,9 @@ private: bool handleMediaClick(const LLPickInfo& info); bool handleMediaHover(const LLPickInfo& info); - bool handleMediaMouseUp(); + bool handleMediaMouseUp(); + BOOL handleTooltipLand(std::string line, std::string tooltip_msg); + BOOL handleTooltipObject( LLViewerObject* hover_object, std::string line, std::string tooltip_msg); private: BOOL mGrabMouseButtonDown; -- cgit v1.2.3 From 1f0470e33404408c6228c9d0e3753f7ba43d3d96 Mon Sep 17 00:00:00 2001 From: Chuck Linden Date: Wed, 20 Jan 2010 15:44:34 -0500 Subject: Finished layout of appearance editor. http://jira.secondlife.com/browse/EXT-146 --- .../skins/default/xui/en/floater_customize.xml | 1496 ++++++++++---------- .../skins/default/xui/en/widgets/color_swatch.xml | 2 +- 2 files changed, 730 insertions(+), 768 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml index ddc0d9af72..b048eeceb6 100644 --- a/indra/newview/skins/default/xui/en/floater_customize.xml +++ b/indra/newview/skins/default/xui/en/floater_customize.xml @@ -3,7 +3,7 @@ legacy_header_height="18" can_minimize="false" follows="left|top" - height="607" + height="583" layout="topleft" left_delta="-3" name="floater customize" @@ -20,7 +20,7 @@ tab_min_width="96" tab_position="left" tab_height="50" - top="50" + top="26" width="506"> You do not have permission to modify this wearable. @@ -473,9 +472,9 @@ follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" word_wrap="true" width="373"> You do not have permission to modify this wearable. @@ -723,9 +722,9 @@ follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" word_wrap="true" width="373"> You do not have permission to modify this wearable. @@ -798,16 +797,16 @@ width="82" /> + width="400"> [DESC] @@ -845,9 +844,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify @@ -858,9 +857,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... @@ -871,21 +870,21 @@ font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn Located in [PATH] @@ -895,9 +894,9 @@ follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" word_wrap="true" width="373"> Put on a new set of eyes by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. @@ -908,9 +907,9 @@ follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" word_wrap="true" width="373"> You do not have permission to modify this wearable. @@ -918,14 +917,14 @@ Eyes: @@ -933,23 +932,22 @@ can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Iris" layout="topleft" - left="8" + left="10" name="Iris" tool_tip="Click to choose a picture" - top="65" - width="64" /> + top="66" + width="82" /> - + + width="21" /> + + width="21" /> + + width="20" /> + width="21" /> - \ No newline at end of file + diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml index 86bea9be50..8918120918 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml @@ -3,14 +3,22 @@ height="25" name="offer_chiclet" width="25"> + + width="21" /> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml index b1f9f5b0e8..8e3541231d 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml @@ -3,14 +3,22 @@ height="25" name="script_chiclet" width="25"> + + width="21"/> Date: Wed, 20 Jan 2010 15:36:05 -0800 Subject: EXT-4482 [BSI] People > Profile - when window is too short, scroll bar cuts off text --- indra/newview/skins/default/xui/en/panel_profile.xml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 597b6410cd..4ac7295a7f 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -66,6 +66,7 @@ layout="topleft" follows="left|top|right" height="505" + min_height="505" name="profile_scroll_panel" top="0" left="0" @@ -108,10 +109,10 @@ textbox.max_length="512" name="sl_description_edit" top_pad="-3" - width="185" + width="180" 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. + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet.Nullamma lesuada mauris sit amet ipsum. adipiscing elit. Ae nean 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. 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. @@ -286,7 +287,7 @@ height="28" layout="topleft" name="profile_buttons_panel" - auto_resize="false" + auto_resize="false" width="313"> - - Mouselook: - - - Mouse sensitivity - - - - - Network: - - - Maximum bandwidth - - - - kbps - - - - - - - Cache size - - - - MB - - - Cache location: - - - - - - Web: - - - - - - - - - Proxy location: - - - - + + + + + Mouselook: + + + Mouse sensitivity + + + + + Network: + + + Maximum bandwidth + + + + kbps + + + + + + + Cache size + + + + MB + + + Cache location: + + + + + + + Web: + + + + + + + + + Proxy location: + + + + \ No newline at end of file -- cgit v1.2.3 From 2981e9aa4cdbe083011d1f552bf0fe5178a499ce Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Thu, 21 Jan 2010 15:10:25 -0800 Subject: checking for null in LLImageRaw::copy to prevent a crash --- indra/llimage/llimage.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index 575ad5363d..e02be6c8c1 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -668,6 +668,12 @@ void LLImageRaw::fill( const LLColor4U& color ) // Src and dst can be any size. Src and dst can each have 3 or 4 components. void LLImageRaw::copy(LLImageRaw* src) { + if (!src) + { + llwarns << "LLImageRaw::copy called with a null src pointer" << llendl; + return; + } + LLImageRaw* dst = this; // Just for clarity. llassert( (3 == src->getComponents()) || (4 == src->getComponents()) ); -- cgit v1.2.3 From 8b8b86480821c209a057fd4433d1d810d186a4c1 Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Thu, 21 Jan 2010 15:10:45 -0800 Subject: EXT-4266 Can't "drop" object selected in select-face mode reviewed by Callum --- indra/newview/llviewermenu.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d2ba898cf0..5179bcaef7 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -6065,7 +6065,8 @@ class LLAttachmentEnableDrop : public view_listener_t LLViewerJointAttachment* attachment = NULL; LLInventoryItem* item = NULL; - if (object) + // Do not enable drop if all faces of object are not enabled + if (object && LLSelectMgr::getInstance()->getSelection()->contains(object,SELECT_ALL_TES )) { S32 attachmentID = ATTACHMENT_ID_FROM_STATE(object->getState()); attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL); @@ -6107,8 +6108,14 @@ class LLAttachmentEnableDrop : public view_listener_t BOOL enable_detach(const LLSD&) { LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); - if (!object) return FALSE; - if (!object->isAttachment()) return FALSE; + + // Only enable detach if all faces of object are selected + if (!object || + !object->isAttachment() || + !LLSelectMgr::getInstance()->getSelection()->contains(object,SELECT_ALL_TES )) + { + return FALSE; + } // Find the avatar who owns this attachment LLViewerObject* avatar = object; -- cgit v1.2.3 From 01af3b805a7cffbeb7ff51809e35399bc472bb2d Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Thu, 21 Jan 2010 15:14:11 -0800 Subject: eol --- indra/newview/skins/default/xui/en/panel_preferences_setup.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index a0bd2bd438..9875062186 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -343,4 +343,4 @@ name="web_proxy_port" top_delta="0" width="140" /> - \ No newline at end of file + -- cgit v1.2.3 From 24328b6cc77daec2c42528fcf7025634519320db Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Thu, 21 Jan 2010 15:15:39 -0800 Subject: Backed out changeset: 191ec27bc583 --- .../default/xui/en/panel_preferences_setup.xml | 688 ++++++++++----------- 1 file changed, 342 insertions(+), 346 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index a0bd2bd438..f6900cc31c 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -1,346 +1,342 @@ - - - - - Mouselook: - - - Mouse sensitivity - - - - - Network: - - - Maximum bandwidth - - - - kbps - - - - - - - Cache size - - - - MB - - - Cache location: - - - - - - - Web: - - - - - - - - - Proxy location: - - - - \ No newline at end of file + + + + + Mouselook: + + + Mouse sensitivity + + + + + Network: + + + Maximum bandwidth + + + + kbps + + + + + + + Cache size + + + + MB + + + Cache location: + + + + + + Web: + + + + + + + + + Proxy location: + + + + -- cgit v1.2.3 From 63441873cc4cca5c9d41dec3d313199a69c87b30 Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Thu, 21 Jan 2010 15:58:35 -0800 Subject: updating --- indra/newview/skins/default/xui/en/panel_preferences_setup.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 8d505f4ad9..ac1ea26b38 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -873,5 +873,5 @@ min_val="10" name="web_proxy_port" top_delta="0" - width="140" /> + width="140"/> -- cgit v1.2.3 From 5432b9bd9a5979d24d814990957cbd1351e7ba48 Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Thu, 21 Jan 2010 16:00:51 -0800 Subject: fixing? --- .../default/xui/en/panel_preferences_setup.xml | 1754 ++++++++++---------- 1 file changed, 877 insertions(+), 877 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index ac1ea26b38..8d033c2ae6 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -1,877 +1,877 @@ - - - - - Mouselook: - - - Mouse sensitivity - - - - - Network: - - - Maximum bandwidth - - - - kbps - - - - - - - Cache size - - - - MB - - - Cache location: - - - - - - Web: - - - - - - - - - Proxy location: - - - - - - Network: - - - Maximum bandwidth - - - - kbps - - - - - - - Cache size - - - - MB - - - Cache location: - - - - - - - Web: - - - - - - - - - Proxy location: - - - - - Network: - - - Maximum bandwidth - - - - kbps - - - - - - - Cache size - - - - MB - - - Cache location: - - - - - - - Web: - - - - - - - - - Proxy location: - - - - + + + + + Mouselook: + + + Mouse sensitivity + + + + + Network: + + + Maximum bandwidth + + + + kbps + + + + + + + Cache size + + + + MB + + + Cache location: + + + + + + Web: + + + + + + + + + Proxy location: + + + + + + Network: + + + Maximum bandwidth + + + + kbps + + + + + + + Cache size + + + + MB + + + Cache location: + + + + + + + Web: + + + + + + + + + Proxy location: + + + + + Network: + + + Maximum bandwidth + + + + kbps + + + + + + + Cache size + + + + MB + + + Cache location: + + + + + + + Web: + + + + + + + + + Proxy location: + + + + -- cgit v1.2.3 From 9611af4f596c1f6ce1a0e3c91763b6e3ee343835 Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Thu, 21 Jan 2010 16:09:38 -0800 Subject: fixed. --- .../default/xui/en/panel_preferences_setup.xml | 1223 ++++++-------------- 1 file changed, 346 insertions(+), 877 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 8d033c2ae6..ec7e140eed 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -1,877 +1,346 @@ - - - - - Mouselook: - - - Mouse sensitivity - - - - - Network: - - - Maximum bandwidth - - - - kbps - - - - - - - Cache size - - - - MB - - - Cache location: - - - - - - Web: - - - - - - - - - Proxy location: - - - - - - Network: - - - Maximum bandwidth - - - - kbps - - - - - - - Cache size - - - - MB - - - Cache location: - - - - - - - Web: - - - - - - - - - Proxy location: - - - - - Network: - - - Maximum bandwidth - - - - kbps - - - - - - - Cache size - - - - MB - - - Cache location: - - - - - - - Web: - - - - - - - - - Proxy location: - - - - + + + + + Mouselook: + + + Mouse sensitivity + + + + + Network: + + + Maximum bandwidth + + + + kbps + + + + + + + Cache size + + + + MB + + + Cache location: + + + + + + + Web: + + + + + + + + + Proxy location: + + + + -- cgit v1.2.3 From 79f252526f37781417ae1ea5b8dce0bbc148b14b Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Thu, 21 Jan 2010 16:10:29 -0800 Subject: another fix. --- .../default/xui/en/panel_preferences_setup.xml | 692 ++++++++++----------- 1 file changed, 346 insertions(+), 346 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index ec7e140eed..17ababe854 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -1,346 +1,346 @@ - - - - - Mouselook: - - - Mouse sensitivity - - - - - Network: - - - Maximum bandwidth - - - - kbps - - - - - - - Cache size - - - - MB - - - Cache location: - - - - - - - Web: - - - - - - - - - Proxy location: - - - - + + + + + Mouselook: + + + Mouse sensitivity + + + + + Network: + + + Maximum bandwidth + + + + kbps + + + + + + + Cache size + + + + MB + + + Cache location: + + + + + + + Web: + + + + + + + + + Proxy location: + + + + -- cgit v1.2.3 From af2f61af502d483011a8f6722686a2c343bd0f7d Mon Sep 17 00:00:00 2001 From: Loren Shih Date: Thu, 21 Jan 2010 20:34:10 -0500 Subject: EXT-4492 Deleting gestures from the wearing tab causes the viewer to crash Removed "delete" from the COF menu, since it is normally disabled from the inventory view. --- indra/newview/llinventorybridge.cpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 099f863dc9..1c88658920 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -574,18 +574,35 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, disabled_items.push_back(std::string("Paste As Link")); } } - items.push_back(std::string("Paste Separator")); + // Don't add a separator unless we have at least one entry beneath it, + // to avoid double separators. + BOOL separator_pasted = FALSE; if (obj && obj->getIsLinkType() && !get_is_item_worn(mUUID)) { + if (!separator_pasted) + { + items.push_back(std::string("Paste Separator")); + separator_pasted = TRUE; + } items.push_back(std::string("Remove Link")); } - items.push_back(std::string("Delete")); - if (!isItemRemovable()) + // Hide the delete button from the COF. Detaching/removing/etc. an item in the COF + // will naturally delete it. This prevents double delete crash possibilities. + if (!isCOFFolder()) { - disabled_items.push_back(std::string("Delete")); + if (!separator_pasted) + { + items.push_back(std::string("Paste Separator")); + separator_pasted = TRUE; + } + items.push_back(std::string("Delete")); + if (!isItemRemovable()) + { + disabled_items.push_back(std::string("Delete")); + } } // If multiple items are selected, disable properties (if it exists). -- cgit v1.2.3 From c64638dc2114a91b8efb17c1e37481ce34df84d5 Mon Sep 17 00:00:00 2001 From: Loren Shih Date: Fri, 22 Jan 2010 10:48:24 -0500 Subject: EXT-4492 Deleting gestures from the wearing tab causes the viewer to crash Revert removal of "delete" option from last checkin. Now enabling "delete" but checking if *this was deleted within removeItem(). --- indra/newview/llinventorybridge.cpp | 46 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 1c88658920..df089cb0f9 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -575,34 +575,17 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, } } - // Don't add a separator unless we have at least one entry beneath it, - // to avoid double separators. - BOOL separator_pasted = FALSE; + items.push_back(std::string("Paste Separator")); if (obj && obj->getIsLinkType() && !get_is_item_worn(mUUID)) { - if (!separator_pasted) - { - items.push_back(std::string("Paste Separator")); - separator_pasted = TRUE; - } items.push_back(std::string("Remove Link")); } - // Hide the delete button from the COF. Detaching/removing/etc. an item in the COF - // will naturally delete it. This prevents double delete crash possibilities. - if (!isCOFFolder()) + items.push_back(std::string("Delete")); + if (!isItemRemovable()) { - if (!separator_pasted) - { - items.push_back(std::string("Paste Separator")); - separator_pasted = TRUE; - } - items.push_back(std::string("Delete")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Delete")); - } + disabled_items.push_back(std::string("Delete")); } // If multiple items are selected, disable properties (if it exists). @@ -3827,8 +3810,25 @@ void LLGestureBridge::openItem() BOOL LLGestureBridge::removeItem() { - // Force close the preview window, if it exists - LLGestureManager::instance().deactivateGesture(mUUID); + // Grab class information locally since *this may be deleted + // within this function. Not a great pattern... + const LLInventoryModel* model = getInventoryModel(); + if(!model) + { + return FALSE; + } + const LLUUID item_id = mUUID; + + // This will also force close the preview window, if it exists. + // This may actually delete *this, if mUUID is in the COF. + LLGestureManager::instance().deactivateGesture(item_id); + + // If deactivateGesture deleted *this, then return out immediately. + if (!model->getObject(item_id)) + { + return TRUE; + } + return LLItemBridge::removeItem(); } -- cgit v1.2.3 From 84dfa02baf4aff336ec467acbe647618e9b4b21a Mon Sep 17 00:00:00 2001 From: Soft Linden Date: Fri, 22 Jan 2010 10:25:23 -0600 Subject: DEV-1195 SVC-580: ATTACH_LPEC / ATTACH_RPEC reversed --- indra/newview/app_settings/keywords.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini index 14025c8061..0805e94b10 100644 --- a/indra/newview/app_settings/keywords.ini +++ b/indra/newview/app_settings/keywords.ini @@ -268,8 +268,8 @@ ATTACH_LHIP Passed to llAttachToAvatar to attach task to left hip ATTACH_LULEG Passed to llAttachToAvatar to attach task to left upper leg ATTACH_LLLEG Passed to llAttachToAvatar to attach task to left lower leg ATTACH_BELLY Passed to llAttachToAvatar to attach task to belly -ATTACH_RPEC Passed to llAttachToAvatar to attach task to right pectoral -ATTACH_LPEC Passed to llAttachToAvatar to attach task to left pectoral +ATTACH_LEFT_PEC Passed to llAttachToAvatar to attach task to left pectoral +ATTACH_RIGHT_PEC Passed to llAttachToAvatar to attach task to right pectoral LAND_LEVEL Passed to llModifyLand to level terrain LAND_RAISE Passed to llModifyLand to raise terrain -- cgit v1.2.3 From 0283837e56e69c8a6757d8366b82065e04ae966b Mon Sep 17 00:00:00 2001 From: Loren Shih Date: Fri, 22 Jan 2010 14:44:32 -0500 Subject: EXT-4492 : Deleting gestures from the wearing tab causes the viewer to crash EXT-4660 : Can delete a bodypart from the COF through inventory view or WEARING tab delete key EXT-4662 : remove leading separator from COF right-click menu EXT-4633 : AppearanceSP trash button doesn't update enabled state correctly Bunch of UI fixes related to the trash/delete functionality in InventoryFloater/SP and AppearanceSP "WEARING" tab. The main idea is that we don't want to allow deletion of bodyparts and folder links from the COF by the user. --- indra/newview/llappearancemgr.cpp | 22 +++++++++++- indra/newview/llappearancemgr.h | 10 +++++- indra/newview/llinventorybridge.cpp | 19 +++++----- indra/newview/llinventorypanel.cpp | 8 +++++ indra/newview/llinventorypanel.h | 2 +- indra/newview/llpaneloutfitsinventory.cpp | 40 +++++++++++----------- indra/newview/llpaneloutfitsinventory.h | 24 +++++++------ .../default/xui/en/panel_outfits_inventory.xml | 2 +- 8 files changed, 83 insertions(+), 44 deletions(-) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 748d8bdfbf..0ff839849f 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -358,7 +358,7 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data) } } -LLUUID LLAppearanceManager::getCOF() +const LLUUID LLAppearanceManager::getCOF() const { return gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); } @@ -1263,3 +1263,23 @@ void LLAppearanceManager::linkRegisteredAttachments() } mRegisteredAttachments.clear(); } + +BOOL LLAppearanceManager::getIsInCOF(const LLUUID& obj_id) const +{ + return gInventory.isObjectDescendentOf(obj_id, getCOF()); +} + +BOOL LLAppearanceManager::getIsProtectedCOFItem(const LLUUID& obj_id) const +{ + if (!getIsInCOF(obj_id)) return FALSE; + const LLInventoryObject *obj = gInventory.getObject(obj_id); + if (!obj) return FALSE; + + // Can't delete bodyparts, since this would be equivalent to removing the item. + if (obj->getType() == LLAssetType::AT_BODYPART) return TRUE; + + // Can't delete the folder link, since this is saved for bookkeeping. + if (obj->getActualType() == LLAssetType::AT_LINK_FOLDER) return TRUE; + + return FALSE; +} diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 20745b70e4..0093d30817 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -59,7 +59,7 @@ public: LLPointer cb); // Find the Current Outfit folder. - LLUUID getCOF(); + const LLUUID getCOF() const; // Finds the folder link to the currently worn outfit const LLViewerInventoryItem *getBaseOutfitLink(); @@ -132,6 +132,14 @@ private: std::set mRegisteredAttachments; bool mAttachmentInvLinkEnabled; bool mOutfitIsDirty; + + ////////////////////////////////////////////////////////////////////////////////// + // Item-specific convenience functions +public: + // Is this in the COF? + BOOL getIsInCOF(const LLUUID& obj_id) const; + // Is this in the COF and can the user delete it from the COF? + BOOL getIsProtectedCOFItem(const LLUUID& obj_id) const; }; #define SUPPORT_ENSEMBLES 0 diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index df089cb0f9..a7ce111b18 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -185,6 +185,11 @@ BOOL LLInvFVBridge::isItemRemovable() { return FALSE; } + if (LLAppearanceManager::instance().getIsProtectedCOFItem(mUUID)) + { + return FALSE; + } + const LLInventoryObject *obj = model->getItem(mUUID); if (obj && obj->getIsLinkType()) { @@ -712,14 +717,7 @@ BOOL LLInvFVBridge::isAgentInventory() const BOOL LLInvFVBridge::isCOFFolder() const { - const LLInventoryModel* model = getInventoryModel(); - if(!model) return TRUE; - const LLUUID cof_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); - if (mUUID == cof_id || model->isObjectDescendentOf(mUUID, cof_id)) - { - return TRUE; - } - return FALSE; + return LLAppearanceManager::instance().getIsInCOF(mUUID); } BOOL LLInvFVBridge::isItemPermissive() const @@ -4622,7 +4620,10 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags) getClipboardEntries(true, items, disabled_items, flags); - items.push_back(std::string("Wearable Separator")); + if (!is_sidepanel) + { + items.push_back(std::string("Wearable Separator")); + } items.push_back(std::string("Wearable Edit")); diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 9141d50829..7e71ac90b4 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -682,6 +682,14 @@ void LLInventoryPanel::setSelection(const LLUUID& obj_id, BOOL take_keyboard_foc mFolders->setSelectionByID(obj_id, take_keyboard_focus); } +void LLInventoryPanel::setSelectCallback(const LLFolderView::signal_t::slot_type& cb) +{ + if (mFolders) + { + mFolders->setSelectCallback(cb); + } +} + void LLInventoryPanel::clearSelection() { mFolders->clearSelection(); diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 09533b52f1..ccff795a51 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -123,7 +123,7 @@ public: // Call this method to set the selection. void openAllFolders(); void setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus); - void setSelectCallback(const LLFolderView::signal_t::slot_type& cb) { if (mFolders) mFolders->setSelectCallback(cb); } + void setSelectCallback(const LLFolderView::signal_t::slot_type& cb); void clearSelection(); LLInventoryFilter* getFilter(); void setFilterTypes(U64 filter, LLInventoryFilter::EFilterType = LLInventoryFilter::FILTERTYPE_OBJECT); diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index fd5ce7a46d..cf903958ee 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -61,6 +61,9 @@ #include "llviewercontrol.h" +static const std::string OUTFITS_TAB_NAME = "outfitslist_tab"; +static const std::string COF_TAB_NAME = "cof_tab"; + static LLRegisterPanelClassWrapper t_inventory("panel_outfits_inventory"); bool LLPanelOutfitsInventory::sShowDebugEditor = false; @@ -267,7 +270,7 @@ void LLPanelOutfitsInventory::onSaveCommit(const std::string& outfit_name) if (mAppearanceTabs) { - mAppearanceTabs->selectTabByName("outfitslist_tab"); + mAppearanceTabs->selectTabByName(OUTFITS_TAB_NAME); } } @@ -503,8 +506,7 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata) if (command_name == "wear") { - const BOOL is_my_outfits = (mActivePanel->getName() == "outfitslist_tab"); - if (!is_my_outfits) + if (isCOFPanelActive()) { return FALSE; } @@ -558,17 +560,15 @@ bool LLPanelOutfitsInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropTy void LLPanelOutfitsInventory::initTabPanels() { - mTabPanels.resize(2); - - LLInventoryPanel *cof_panel = getChild("cof_tab"); + LLInventoryPanel *cof_panel = getChild(COF_TAB_NAME); cof_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); - mTabPanels[0] = cof_panel; - - LLInventoryPanel *myoutfits_panel = getChild("outfitslist_tab"); + mTabPanels.push_back(cof_panel); + + LLInventoryPanel *myoutfits_panel = getChild(OUTFITS_TAB_NAME); myoutfits_panel->setFilterTypes(1LL << LLFolderType::FT_OUTFIT, LLInventoryFilter::FILTERTYPE_CATEGORY); myoutfits_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); - mTabPanels[1] = myoutfits_panel; - + mTabPanels.push_back(myoutfits_panel); + for (tabpanels_vec_t::iterator iter = mTabPanels.begin(); iter != mTabPanels.end(); ++iter) @@ -615,19 +615,19 @@ void LLPanelOutfitsInventory::onTabChange() updateVerbs(); } -LLInventoryPanel* LLPanelOutfitsInventory::getActivePanel() -{ - return mActivePanel; -} - -bool LLPanelOutfitsInventory::isTabPanel(LLInventoryPanel *panel) +BOOL LLPanelOutfitsInventory::isTabPanel(LLInventoryPanel *panel) const { - for(tabpanels_vec_t::iterator it = mTabPanels.begin(); + for(tabpanels_vec_t::const_iterator it = mTabPanels.begin(); it != mTabPanels.end(); ++it) { if (*it == panel) - return true; + return TRUE; } - return false; + return FALSE; +} + +BOOL LLPanelOutfitsInventory::isCOFPanelActive() const +{ + return (getActivePanel()->getName() == COF_TAB_NAME); } diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h index 76110e2a3f..ab25ef0a49 100644 --- a/indra/newview/llpaneloutfitsinventory.h +++ b/indra/newview/llpaneloutfitsinventory.h @@ -78,24 +78,26 @@ protected: bool getIsCorrectType(const LLFolderViewEventListener *listenerp) const; private: - LLSidepanelAppearance* mParent; - LLSaveFolderState* mSavedFolderState; - LLTabContainer* mAppearanceTabs; - std::string mFilterSubString; + LLSidepanelAppearance* mParent; + LLSaveFolderState* mSavedFolderState; + LLTabContainer* mAppearanceTabs; + std::string mFilterSubString; public: ////////////////////////////////////////////////////////////////////////////////// // tab panels - LLInventoryPanel* getActivePanel(); - bool isTabPanel(LLInventoryPanel *panel); + LLInventoryPanel* getActivePanel() { return mActivePanel; } + const LLInventoryPanel* getActivePanel() const { return mActivePanel; } + BOOL isTabPanel(LLInventoryPanel *panel) const; protected: - void initTabPanels(); - void onTabSelectionChange(LLInventoryPanel* tab_panel, const std::deque &items, BOOL user_action); - void onTabChange(); - + void initTabPanels(); + void onTabSelectionChange(LLInventoryPanel* tab_panel, const std::deque &items, BOOL user_action); + void onTabChange(); + BOOL isCOFPanelActive() const; + private: - LLInventoryPanel* mActivePanel; + LLInventoryPanel* mActivePanel; typedef std::vector tabpanels_vec_t; tabpanels_vec_t mTabPanels; diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index 8895484326..710ca733e0 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -45,7 +45,7 @@ left="0" top="0" mouse_opaque="true" - name="cof_accordionpanel" + name="cof_tab" start_folder="Current Outfit" width="313" /> -- cgit v1.2.3 From 1f896d2d58d9c150d3981f253e81898afa999c2c Mon Sep 17 00:00:00 2001 From: Loren Shih Date: Fri, 22 Jan 2010 14:54:28 -0500 Subject: EXT-4654 : FolderDictionary assert on importFile Took out spurious assert; this should be a llwarns instead, and we should be warning when an illegal folder entry is created. --- indra/llcommon/lldictionary.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h index 95178b41e7..8c86a8560e 100644 --- a/indra/llcommon/lldictionary.h +++ b/indra/llcommon/lldictionary.h @@ -76,7 +76,7 @@ public: return dictionary_iter->first; } } - llassert(false); + llwarns << "Lookup on " << name << " failed" << llendl; return Index(-1); } -- cgit v1.2.3 From c66053220183d120134734510b416bb02c3ea80f Mon Sep 17 00:00:00 2001 From: Ramzi Linden Date: Fri, 22 Jan 2010 12:39:45 -0800 Subject: DEV-43688 fix a couple of formatting issues on strings in the localized languages related to Localization Cycle 2. --- indra/newview/skins/default/xui/da/floater_about.xml | 2 +- indra/newview/skins/default/xui/de/floater_about.xml | 2 +- indra/newview/skins/default/xui/de/panel_edit_profile.xml | 2 +- indra/newview/skins/default/xui/es/floater_about.xml | 2 +- indra/newview/skins/default/xui/fr/floater_about.xml | 2 +- indra/newview/skins/default/xui/fr/panel_edit_profile.xml | 4 ++-- indra/newview/skins/default/xui/it/floater_about.xml | 2 +- indra/newview/skins/default/xui/ja/floater_about.xml | 2 +- indra/newview/skins/default/xui/ja/panel_edit_profile.xml | 2 +- indra/newview/skins/default/xui/nl/floater_about.xml | 2 +- indra/newview/skins/default/xui/pl/floater_about.xml | 2 +- indra/newview/skins/default/xui/pt/floater_about.xml | 2 +- 12 files changed, 13 insertions(+), 13 deletions(-) diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index faa24b5877..eb63b5c975 100644 --- a/indra/newview/skins/default/xui/da/floater_about.xml +++ b/indra/newview/skins/default/xui/da/floater_about.xml @@ -1,5 +1,5 @@ - + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index 664c6e3072..0beb54032f 100644 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -1,5 +1,5 @@ - + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/de/panel_edit_profile.xml b/indra/newview/skins/default/xui/de/panel_edit_profile.xml index 1c53ca64dd..811ca118d6 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_profile.xml @@ -39,7 +39,7 @@ - + diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml index 5545ab29e0..e8e38316f9 100644 --- a/indra/newview/skins/default/xui/es/floater_about.xml +++ b/indra/newview/skins/default/xui/es/floater_about.xml @@ -1,5 +1,5 @@ - + diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml index 33299f4cd4..7d6d736c5e 100644 --- a/indra/newview/skins/default/xui/fr/floater_about.xml +++ b/indra/newview/skins/default/xui/fr/floater_about.xml @@ -1,5 +1,5 @@ - + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml index b8ab805b13..a4771db91b 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml @@ -39,10 +39,10 @@ - + - + diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml index a5aff9d486..f80f810dba 100644 --- a/indra/newview/skins/default/xui/it/floater_about.xml +++ b/indra/newview/skins/default/xui/it/floater_about.xml @@ -1,5 +1,5 @@ - + diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml index bab805dbd2..0fa20ab1ac 100644 --- a/indra/newview/skins/default/xui/ja/floater_about.xml +++ b/indra/newview/skins/default/xui/ja/floater_about.xml @@ -1,5 +1,5 @@ - + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml index 8af0802ac2..b232a8db61 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml @@ -39,7 +39,7 @@ - + diff --git a/indra/newview/skins/default/xui/nl/floater_about.xml b/indra/newview/skins/default/xui/nl/floater_about.xml index 0c57a22be1..10c30eb361 100644 --- a/indra/newview/skins/default/xui/nl/floater_about.xml +++ b/indra/newview/skins/default/xui/nl/floater_about.xml @@ -1,5 +1,5 @@ - + diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml index 0f100b9d83..f59630edc7 100755 --- a/indra/newview/skins/default/xui/pl/floater_about.xml +++ b/indra/newview/skins/default/xui/pl/floater_about.xml @@ -1,5 +1,5 @@ - + diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml index 9c19b12893..704e2f4107 100644 --- a/indra/newview/skins/default/xui/pt/floater_about.xml +++ b/indra/newview/skins/default/xui/pt/floater_about.xml @@ -1,5 +1,5 @@ - + -- cgit v1.2.3 From 420430b8f59902a65cd1847ea8b596f82a283e6a Mon Sep 17 00:00:00 2001 From: Rick Pasetto Date: Fri, 22 Jan 2010 14:00:34 -0800 Subject: PARTIAL FIX EXT-3491: only bring up "external browser"notification if target is external or pref is set Review #86 This changes the logic to bring up the notification "Do you want to open your Web browser to view this content?" only if either the target is _external, or the user pref says to. Otherwise it avoids the notification. --- indra/newview/llmediactrl.cpp | 109 ++++++++++++++++++++++-------------------- indra/newview/llmediactrl.h | 1 + 2 files changed, 59 insertions(+), 51 deletions(-) diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 87ebce1d34..d464862eed 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -869,38 +869,6 @@ void LLMediaCtrl::convertInputCoords(S32& x, S32& y) }; } -//////////////////////////////////////////////////////////////////////////////// -// static -bool LLMediaCtrl::onClickLinkExternalTarget(const LLSD& notification, const LLSD& response ) -{ - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if ( 0 == option ) - { - LLSD payload = notification["payload"]; - std::string url = payload["url"].asString(); - S32 target_type = payload["target_type"].asInteger(); - - switch (target_type) - { - case LLPluginClassMedia::TARGET_EXTERNAL: - // load target in an external browser - LLWeb::loadURLExternal(url); - break; - - case LLPluginClassMedia::TARGET_BLANK: - // load target in the user's preferred browser - LLWeb::loadURL(url); - break; - - default: - // unsupported link target - shouldn't happen - LL_WARNS("LinkTarget") << "Unsupported link target type" << LL_ENDL; - break; - } - } - return false; -} - //////////////////////////////////////////////////////////////////////////////// // inherited from LLViewerMediaObserver //virtual @@ -1014,43 +982,82 @@ void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self ) U32 target_type = self->getClickTargetType(); // is there is a target specified for the link? - if (target_type == LLPluginClassMedia::TARGET_EXTERNAL || - target_type == LLPluginClassMedia::TARGET_BLANK) + if (gSavedSettings.getBOOL("UseExternalBrowser") || target_type == LLPluginClassMedia::TARGET_EXTERNAL) { LLSD payload; payload["url"] = url; payload["target_type"] = LLSD::Integer(target_type); LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget); - return; } - - const std::string protocol1( "http://" ); - const std::string protocol2( "https://" ); - if( mOpenLinksInExternalBrowser ) + else if (target_type == LLPluginClassMedia::TARGET_BLANK) { - if ( !url.empty() ) + clickLinkWithTarget(url, target_type); + } + else { + const std::string protocol1( "http://" ); + const std::string protocol2( "https://" ); + if( mOpenLinksInExternalBrowser ) { - if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || - LLStringUtil::compareInsensitive( url.substr( 0, protocol2.length() ), protocol2 ) == 0 ) + if ( !url.empty() ) { - LLWeb::loadURLExternal( url ); + if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || + LLStringUtil::compareInsensitive( url.substr( 0, protocol2.length() ), protocol2 ) == 0 ) + { + LLWeb::loadURLExternal( url ); + } } } - } - else - if( mOpenLinksInInternalBrowser ) - { - if ( !url.empty() ) + else + if( mOpenLinksInInternalBrowser ) { - if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || - LLStringUtil::compareInsensitive( url.substr( 0, protocol2.length() ), protocol2 ) == 0 ) + if ( !url.empty() ) { - llwarns << "Dead, unimplemented path that we used to send to the built-in browser long ago." << llendl; + if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || + LLStringUtil::compareInsensitive( url.substr( 0, protocol2.length() ), protocol2 ) == 0 ) + { + llwarns << "Dead, unimplemented path that we used to send to the built-in browser long ago." << llendl; + } } } } } +//////////////////////////////////////////////////////////////////////////////// +// static +bool LLMediaCtrl::onClickLinkExternalTarget(const LLSD& notification, const LLSD& response ) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if ( 0 == option ) + { + LLSD payload = notification["payload"]; + std::string url = payload["url"].asString(); + S32 target_type = payload["target_type"].asInteger(); + clickLinkWithTarget(url, target_type); + } + return false; +} + + +//////////////////////////////////////////////////////////////////////////////// +// static +void LLMediaCtrl::clickLinkWithTarget(const std::string& url, const S32& target_type ) +{ + if (gSavedSettings.getBOOL("UseExternalBrowser") || target_type == LLPluginClassMedia::TARGET_EXTERNAL) + { + // load target in an external browser + LLWeb::loadURLExternal(url); + } + else if (target_type == LLPluginClassMedia::TARGET_BLANK) + { + // load target in the user's preferred browser + LLWeb::loadURL(url); + } + else { + // unsupported link target - shouldn't happen + LL_WARNS("LinkTarget") << "Unsupported link target type" << LL_ENDL; + } +} + //////////////////////////////////////////////////////////////////////////////// // void LLMediaCtrl::onClickLinkNoFollow( LLPluginClassMedia* self ) diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index b0aca3cfa4..60e0c4073b 100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -172,6 +172,7 @@ public: private: void onVisibilityChange ( const LLSD& new_visibility ); static bool onClickLinkExternalTarget( const LLSD&, const LLSD& ); + static void clickLinkWithTarget(const std::string& url, const S32& target_type ); const S32 mTextureDepthBytes; LLUUID mMediaTextureID; -- cgit v1.2.3 From 5a83247f038e327465bf88127f60750306507ed3 Mon Sep 17 00:00:00 2001 From: Rick Pasetto Date: Fri, 22 Jan 2010 14:03:13 -0800 Subject: Fix assert in lldictionary as used by llfoldertype Review #88 This assert might be valid in general, but LLFolderType has a valid reason for getting "not found" --- indra/llcommon/lldictionary.h | 9 +++++++-- indra/llcommon/llfoldertype.cpp | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h index 95178b41e7..4a2bfb9f3f 100644 --- a/indra/llcommon/lldictionary.h +++ b/indra/llcommon/lldictionary.h @@ -76,11 +76,16 @@ public: return dictionary_iter->first; } } - llassert(false); - return Index(-1); + return notFound(); } protected: + virtual Index notFound() const + { + // default is to assert + llassert(false); + return Index(-1); + } void addEntry(Index index, Entry *entry) { if (lookup(index)) diff --git a/indra/llcommon/llfoldertype.cpp b/indra/llcommon/llfoldertype.cpp index 079e670b1a..2610fe9e6a 100644 --- a/indra/llcommon/llfoldertype.cpp +++ b/indra/llcommon/llfoldertype.cpp @@ -59,6 +59,11 @@ class LLFolderDictionary : public LLSingleton, { public: LLFolderDictionary(); +protected: + virtual LLFolderType::EType notFound() const + { + return LLFolderType::FT_NONE; + } }; LLFolderDictionary::LLFolderDictionary() -- cgit v1.2.3 From dcbe10044808d39c890fd26677374981147fe1f5 Mon Sep 17 00:00:00 2001 From: Tofu Linden Date: Fri, 22 Jan 2010 15:55:41 -0800 Subject: Linux: Don't strip or tar the viewer if it's not a release build. This is some more work towards making RelWithDebInfo very developer-friendly. --- indra/newview/viewer_manifest.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 00a903431a..15a51bbe14 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -822,8 +822,8 @@ class LinuxManifest(ViewerManifest): 'dst': self.get_dst_prefix(), 'inst': self.build_path_of(installer_name)}) try: - # only create tarball if it's not a debug build. - if self.args['buildtype'].lower() != 'debug': + # only create tarball if it's a release build. + if self.args['buildtype'].lower() == 'release': # --numeric-owner hides the username of the builder for # security etc. self.run_command('tar -C %(dir)s --numeric-owner -cjf ' @@ -855,7 +855,7 @@ class Linux_i686Manifest(LinuxManifest): pass - if(self.args['buildtype'].lower() != 'debug'): + if(self.args['buildtype'].lower() == 'release'): print "* packaging stripped viewer binary." self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin") else: -- cgit v1.2.3 From 515697aa52efb2d2e751d0c67b31107bc55d7cfc Mon Sep 17 00:00:00 2001 From: Ramzi Linden Date: Fri, 22 Jan 2010 16:11:25 -0800 Subject: DEV-43688 commit revised FR translations - FR cycle2 --- .../skins/default/xui/fr/floater_bulk_perms.xml | 2 +- .../skins/default/xui/fr/floater_buy_currency.xml | 4 +- .../xui/fr/floater_inventory_view_finder.xml | 3 +- indra/newview/skins/default/xui/fr/menu_viewer.xml | 2 +- .../skins/default/xui/fr/panel_edit_skin.xml | 6 +-- .../skins/default/xui/fr/panel_main_inventory.xml | 2 +- indra/newview/skins/default/xui/fr/panel_notes.xml | 4 +- .../newview/skins/default/xui/fr/panel_people.xml | 2 +- indra/newview/skins/default/xui/fr/panel_picks.xml | 2 +- .../default/xui/fr/panel_preferences_chat.xml | 4 +- .../default/xui/fr/panel_preferences_general.xml | 8 +-- .../default/xui/fr/panel_preferences_graphics1.xml | 4 +- .../default/xui/fr/panel_preferences_privacy.xml | 2 +- .../skins/default/xui/fr/panel_profile_view.xml | 2 +- indra/newview/skins/default/xui/fr/strings.xml | 58 +++++++++++----------- 15 files changed, 52 insertions(+), 53 deletions(-) diff --git a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml index ad3872587c..0552cd3108 100644 --- a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml @@ -33,7 +33,7 @@