commit
67a06e4df2
|
|
@ -40,6 +40,8 @@
|
|||
#include "llfocusmgr.h"
|
||||
#include "lllocalcliprect.h"
|
||||
|
||||
#include "lltrans.h"
|
||||
|
||||
#include "boost/bind.hpp"
|
||||
|
||||
static const S32 DRAGGER_BAR_MARGIN = 4;
|
||||
|
|
@ -72,6 +74,7 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)
|
|||
{
|
||||
initNoTabsWidget(params.no_matched_tabs_text);
|
||||
|
||||
mNoVisibleTabsOrigString = LLTrans::getString(params.no_visible_tabs_text.initial_value().asString());
|
||||
mSingleExpansion = params.single_expansion;
|
||||
if(mFitParent && !mSingleExpansion)
|
||||
{
|
||||
|
|
@ -386,7 +389,7 @@ void LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params)
|
|||
{
|
||||
LLTextBox::Params tp = tb_params;
|
||||
tp.rect(getLocalRect());
|
||||
mNoMatchedTabsOrigString = tp.initial_value().asString();
|
||||
mNoMatchedTabsOrigString = LLTrans::getString(tp.initial_value().asString());
|
||||
mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
version 21
|
||||
version 22
|
||||
|
||||
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
|
||||
// Should be combined into one table
|
||||
|
|
@ -60,6 +60,7 @@ RenderDeferred 1 0
|
|||
RenderDeferredSSAO 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WatchdogDisabled 1 1
|
||||
RenderUseStreamVBO 1 1
|
||||
|
||||
//
|
||||
// Low Graphics Settings
|
||||
|
|
@ -445,6 +446,10 @@ list ATIOldDriver
|
|||
RenderAvatarVP 0 0
|
||||
RenderAvatarCloth 0 0
|
||||
|
||||
// ATI cards generally perform better when not using VBOs for streaming data
|
||||
|
||||
list ATI
|
||||
RenderUseStreamVBO 1 0
|
||||
|
||||
/// Tweaked NVIDIA
|
||||
|
||||
|
|
|
|||
|
|
@ -2065,6 +2065,7 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)
|
|||
|
||||
// Menus should not remain open on switching to mouselook...
|
||||
LLMenuGL::sMenuContainer->hideMenus();
|
||||
LLUI::clearPopups();
|
||||
|
||||
// unpause avatar animation
|
||||
gAgent.unpauseAnimation();
|
||||
|
|
|
|||
|
|
@ -403,7 +403,10 @@ void LLWearableHoldingPattern::checkMissingWearables()
|
|||
|
||||
for (S32 type = 0; type < LLWearableType::WT_COUNT; ++type)
|
||||
{
|
||||
llinfos << "type " << type << " requested " << requested_by_type[type] << " found " << found_by_type[type] << llendl;
|
||||
if (requested_by_type[type] > found_by_type[type])
|
||||
{
|
||||
llwarns << "got fewer wearables than requested, type " << type << ": requested " << requested_by_type[type] << ", found " << found_by_type[type] << llendl;
|
||||
}
|
||||
if (found_by_type[type] > 0)
|
||||
continue;
|
||||
if (
|
||||
|
|
@ -670,12 +673,15 @@ bool LLWearableHoldingPattern::pollMissingWearables()
|
|||
bool timed_out = isTimedOut();
|
||||
bool missing_completed = isMissingCompleted();
|
||||
bool done = timed_out || missing_completed;
|
||||
|
||||
llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size()
|
||||
<< " links " << mTypesToLink.size()
|
||||
<< " wearables, timed out " << timed_out
|
||||
<< " elapsed " << mWaitTime.getElapsedTimeF32()
|
||||
<< " done " << done << llendl;
|
||||
|
||||
if (!done)
|
||||
{
|
||||
llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size()
|
||||
<< " links " << mTypesToLink.size()
|
||||
<< " wearables, timed out " << timed_out
|
||||
<< " elapsed " << mWaitTime.getElapsedTimeF32()
|
||||
<< " done " << done << llendl;
|
||||
}
|
||||
|
||||
if (done)
|
||||
{
|
||||
|
|
@ -795,12 +801,8 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)
|
|||
}
|
||||
|
||||
mResolved += 1; // just counting callbacks, not successes.
|
||||
llinfos << "onWearableAssetFetch, resolved count " << mResolved << " of requested " << getFoundList().size() << llendl;
|
||||
if (wearable)
|
||||
{
|
||||
llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl;
|
||||
}
|
||||
else
|
||||
llinfos << "resolved " << mResolved << "/" << getFoundList().size() << llendl;
|
||||
if (!wearable)
|
||||
{
|
||||
llwarns << "no wearable found" << llendl;
|
||||
}
|
||||
|
|
@ -830,10 +832,14 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)
|
|||
LLFoundData& data = *iter;
|
||||
if(wearable->getAssetID() == data.mAssetID)
|
||||
{
|
||||
data.mWearable = wearable;
|
||||
// Failing this means inventory or asset server are corrupted in a way we don't handle.
|
||||
llassert((data.mWearableType < LLWearableType::WT_COUNT) && (wearable->getType() == data.mWearableType));
|
||||
break;
|
||||
if ((data.mWearableType >= LLWearableType::WT_COUNT) || (wearable->getType() != data.mWearableType))
|
||||
{
|
||||
llwarns << "recovered wearable but type invalid. inventory wearable type: " << data.mWearableType << " asset wearable type: " << wearable->getType() << llendl;
|
||||
break;
|
||||
}
|
||||
|
||||
data.mWearable = wearable;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1635,7 +1641,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
|
|||
// the saved outfit stored as a folder link
|
||||
updateIsDirty();
|
||||
|
||||
dumpCat(getCOF(),"COF, start");
|
||||
//dumpCat(getCOF(),"COF, start");
|
||||
|
||||
bool follow_folder_links = true;
|
||||
LLUUID current_outfit_id = getCOF();
|
||||
|
|
@ -1718,7 +1724,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
|
|||
{
|
||||
LLFoundData& found = *it;
|
||||
|
||||
llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl;
|
||||
lldebugs << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl;
|
||||
|
||||
// Fetch the wearables about to be worn.
|
||||
LLWearableList::instance().getAsset(found.mAssetID,
|
||||
|
|
@ -2489,6 +2495,19 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
|
|||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
// *HACK: Force to remove garbage from COF.
|
||||
// Unworn links or objects can't be processed by existed removing functionality
|
||||
// since it is not designed for such cases. As example attachment object can't be removed
|
||||
// since sever don't sends message _PREHASH_KillObject in that case.
|
||||
// Also we can't check is link was successfully removed from COF since in case
|
||||
// deleting attachment link removing performs asynchronously in process_kill_object callback.
|
||||
LLViewerInventoryItem* item = gInventory.getItem(id_to_remove);
|
||||
if (item != NULL)
|
||||
{
|
||||
gInventory.purgeObject(id_to_remove);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
}
|
||||
|
||||
bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body)
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ protected:
|
|||
|
||||
// Set proper label for the "Create new <WEARABLE_TYPE>" menu item.
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[WEARABLE_TYPE]"] = LLWearableType::getTypeDefaultNewName(w_type);
|
||||
args["[WEARABLE_TYPE]"] = LLTrans::getString(LLWearableType::getTypeDefaultNewName(w_type));
|
||||
std::string new_label = LLTrans::getString("CreateNewWearable", args);
|
||||
menu_item->setLabel(new_label);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1792,6 +1792,7 @@ void LLPanelClassifiedEdit::onOpen(const LLSD& key)
|
|||
|
||||
enableVerbs(is_new);
|
||||
enableEditing(is_new);
|
||||
showEditing(!is_new);
|
||||
resetDirty();
|
||||
setInfoLoaded(false);
|
||||
}
|
||||
|
|
@ -2011,6 +2012,12 @@ void LLPanelClassifiedEdit::enableEditing(bool enable)
|
|||
childSetEnabled("auto_renew", enable);
|
||||
}
|
||||
|
||||
void LLPanelClassifiedEdit::showEditing(bool show)
|
||||
{
|
||||
childSetVisible("price_for_listing_label", show);
|
||||
childSetVisible("price_for_listing", show);
|
||||
}
|
||||
|
||||
std::string LLPanelClassifiedEdit::makeClassifiedName()
|
||||
{
|
||||
std::string name;
|
||||
|
|
|
|||
|
|
@ -416,6 +416,8 @@ protected:
|
|||
|
||||
void enableEditing(bool enable);
|
||||
|
||||
void showEditing(bool show);
|
||||
|
||||
std::string makeClassifiedName();
|
||||
|
||||
void setPriceForListing(S32 price);
|
||||
|
|
|
|||
|
|
@ -963,8 +963,7 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
|
|||
for_each_picker_ctrl_entry <LLColorSwatchCtrl> (panel, type, boost::bind(update_color_swatch_ctrl, this, _1, _2));
|
||||
for_each_picker_ctrl_entry <LLTextureCtrl> (panel, type, boost::bind(update_texture_ctrl, this, _1, _2));
|
||||
}
|
||||
|
||||
if (!is_modifiable || !is_copyable)
|
||||
else
|
||||
{
|
||||
// Disable controls
|
||||
for_each_picker_ctrl_entry <LLColorSwatchCtrl> (panel, type, boost::bind(set_enabled_color_swatch_ctrl, false, _1, _2));
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ private:
|
|||
|
||||
LLMenuItemCallGL::Params p;
|
||||
p.name = type_name;
|
||||
p.label = LLWearableType::getTypeDefaultNewName(type);
|
||||
p.label = LLTrans::getString(LLWearableType::getTypeDefaultNewName(type));
|
||||
p.on_click.function_name = "Wearable.Create";
|
||||
p.on_click.parameter = LLSD(type_name);
|
||||
|
||||
|
|
|
|||
|
|
@ -297,6 +297,12 @@ void LLScreenChannel::onToastDestroyed(LLToast* toast)
|
|||
{
|
||||
mStoredToastList.erase(it);
|
||||
}
|
||||
|
||||
// if destroyed toast is hovered - reset hovered
|
||||
if (mHoveredToast == toast)
|
||||
{
|
||||
mHoveredToast = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -765,12 +765,19 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
|
|||
|
||||
{
|
||||
LLViewerRegion* regionp = LLWorld::getInstance()->getRegionFromHandle(region_handle);
|
||||
if(regionp != mRegionp && regionp && mRegionp)
|
||||
if(regionp != mRegionp && regionp && mRegionp)//region cross
|
||||
{
|
||||
//this is the redundant position and region update, but it is necessary in case the viewer misses the following
|
||||
//position and region update messages from sim.
|
||||
//this redundant update should not cause any problems.
|
||||
LLVector3 delta_pos = mRegionp->getOriginAgent() - regionp->getOriginAgent();
|
||||
setPosition(getPosition() + delta_pos) ; //update the region position immediately.
|
||||
setPositionParent(getPosition() + delta_pos); //update to the new region position immediately.
|
||||
setRegion(regionp) ; //change the region.
|
||||
}
|
||||
else
|
||||
{
|
||||
mRegionp = regionp ;
|
||||
}
|
||||
mRegionp = regionp ;
|
||||
}
|
||||
|
||||
if (!mRegionp)
|
||||
|
|
|
|||
|
|
@ -313,7 +313,10 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
|
|||
//
|
||||
// Load Species-Specific data
|
||||
//
|
||||
static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames.
|
||||
mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size.
|
||||
|
||||
mBranchLength = sSpeciesTable[mSpecies]->mBranchLength;
|
||||
mTrunkLength = sSpeciesTable[mSpecies]->mTrunkLength;
|
||||
mLeafScale = sSpeciesTable[mSpecies]->mLeafScale;
|
||||
|
|
|
|||
|
|
@ -2279,7 +2279,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
|
|||
}
|
||||
}
|
||||
}
|
||||
llpushcallstacks ;
|
||||
{
|
||||
LLFastTimer ftm(FTM_STATESORT_DRAWABLE);
|
||||
for (LLCullResult::drawable_list_t::iterator iter = sCull->beginVisibleList();
|
||||
|
|
@ -2292,15 +2291,12 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
|
|||
}
|
||||
}
|
||||
}
|
||||
llpushcallstacks ;
|
||||
{
|
||||
LLFastTimer ftm(FTM_CLIENT_COPY);
|
||||
LLVertexBuffer::clientCopy();
|
||||
}
|
||||
llpushcallstacks ;
|
||||
|
||||
postSort(camera);
|
||||
llpushcallstacks ;
|
||||
postSort(camera);
|
||||
}
|
||||
|
||||
void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera)
|
||||
|
|
@ -2570,6 +2566,7 @@ void LLPipeline::postSort(LLCamera& camera)
|
|||
|
||||
assertInitialized();
|
||||
|
||||
llpushcallstacks ;
|
||||
//rebuild drawable geometry
|
||||
for (LLCullResult::sg_list_t::iterator i = sCull->beginDrawableGroups(); i != sCull->endDrawableGroups(); ++i)
|
||||
{
|
||||
|
|
@ -2580,7 +2577,7 @@ void LLPipeline::postSort(LLCamera& camera)
|
|||
group->rebuildGeom();
|
||||
}
|
||||
}
|
||||
|
||||
llpushcallstacks ;
|
||||
//rebuild groups
|
||||
sCull->assertDrawMapsEmpty();
|
||||
|
||||
|
|
@ -2600,6 +2597,7 @@ void LLPipeline::postSort(LLCamera& camera)
|
|||
|
||||
|
||||
rebuildPriorityGroups();
|
||||
llpushcallstacks ;
|
||||
|
||||
const S32 bin_count = 1024*8;
|
||||
|
||||
|
|
@ -2701,7 +2699,7 @@ void LLPipeline::postSort(LLCamera& camera)
|
|||
|
||||
std::sort(sCull->beginAlphaGroups(), sCull->endAlphaGroups(), LLSpatialGroup::CompareDepthGreater());
|
||||
}
|
||||
|
||||
llpushcallstacks ;
|
||||
// only render if the flag is set. The flag is only set if we are in edit mode or the toggle is set in the menus
|
||||
if (LLFloaterReg::instanceVisible("beacons") && !sShadowRender)
|
||||
{
|
||||
|
|
@ -2749,7 +2747,7 @@ void LLPipeline::postSort(LLCamera& camera)
|
|||
forAllVisibleDrawables(renderSoundHighlights);
|
||||
}
|
||||
}
|
||||
|
||||
llpushcallstacks ;
|
||||
// If managing your telehub, draw beacons at telehub and currently selected spawnpoint.
|
||||
if (LLFloaterTelehub::renderBeacons())
|
||||
{
|
||||
|
|
@ -2779,6 +2777,7 @@ void LLPipeline::postSort(LLCamera& camera)
|
|||
}
|
||||
|
||||
//LLSpatialGroup::sNoDelete = FALSE;
|
||||
llpushcallstacks ;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<context_menu name="COF Clothing">
|
||||
<menu_item_call label="Ausziehen" name="take_off"/>
|
||||
<menu_item_call label="Ersetzen" name="replace"/>
|
||||
<menu_item_call label="Eine Kategorie nach oben" name="move_up"/>
|
||||
<menu_item_call label="Eine Kategorie nach unten" name="move_down"/>
|
||||
<menu_item_call label="Bearbeiten" name="edit"/>
|
||||
|
|
|
|||
|
|
@ -25,10 +25,11 @@ Remember, Classified fees are non-refundable.
|
|||
<spinner
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
halign="left"
|
||||
height="23"
|
||||
increment="1"
|
||||
label_width="45"
|
||||
label_width="50"
|
||||
label="Price: L$ "
|
||||
v_pad="10"
|
||||
layout="topleft"
|
||||
|
|
|
|||
|
|
@ -261,6 +261,34 @@
|
|||
name="auto_renew"
|
||||
top_pad="15"
|
||||
width="250" />
|
||||
<text
|
||||
follows="left|top"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="price_for_listing_label"
|
||||
text_color="white"
|
||||
top_pad="15"
|
||||
value="Price for listing:"
|
||||
width="250" />
|
||||
<spinner
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
halign="left"
|
||||
height="23"
|
||||
increment="1"
|
||||
label_width="20"
|
||||
label="L$"
|
||||
v_pad="10"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
value="50"
|
||||
min_val="50"
|
||||
max_val="99999"
|
||||
name="price_for_listing"
|
||||
top_pad="5"
|
||||
tool_tip="Price for listing."
|
||||
width="105" />
|
||||
</panel>
|
||||
</scroll_container>
|
||||
<panel
|
||||
|
|
|
|||
|
|
@ -406,6 +406,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
|
|||
left_pad="1"
|
||||
name="shop_btn_1"
|
||||
top="1"
|
||||
tool_tip="Visit the SL Marketplace. You can also select something you are wearing, then click here to see more things like it"
|
||||
width="31" />
|
||||
</panel>
|
||||
|
||||
|
|
@ -480,6 +481,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
|
|||
left_pad="1"
|
||||
name="shop_btn_2"
|
||||
top="1"
|
||||
tool_tip="Visit the SL Marketplace. You can also select something you are wearing, then click here to see more things like it"
|
||||
width="31" />
|
||||
</panel>
|
||||
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@
|
|||
background_visible="true"
|
||||
bg_alpha_color="DkGray2"
|
||||
bg_opaque_color="DkGray2"
|
||||
no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
|
||||
no_matched_tabs_text.value="NoOutfitsTabsMatched"
|
||||
no_matched_tabs_text.v_pad="10"
|
||||
no_visible_tabs_text.value="..."
|
||||
no_visible_tabs_text.value="NoOutfits"
|
||||
follows="all"
|
||||
height="400"
|
||||
layout="topleft"
|
||||
|
|
|
|||
|
|
@ -2172,12 +2172,17 @@ Clears (deletes) the media and all params from the given face.
|
|||
<string name="PanelDirEventsDateText">[mthnum,datetime,slt]/[day,datetime,slt]</string>
|
||||
|
||||
<!-- panel contents -->
|
||||
<string name="PanelContentsTooltip">Content of object</string>
|
||||
<string name="PanelContentsNewScript">New Script</string>
|
||||
<string name="PanelContentsTooltip">Content of object</string>
|
||||
|
||||
<!-- panel preferences general -->
|
||||
<string name="BusyModeResponseDefault">The Resident you messaged is in 'busy mode' which means they have requested not to be disturbed. Your message will still be shown in their IM panel for later viewing.</string>
|
||||
|
||||
<!-- Outfits Panel -->
|
||||
<string name="NoOutfits">You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]</string>
|
||||
<string name="NoOutfitsTabsMatched">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string>
|
||||
|
||||
<!-- Mute -->
|
||||
<string name="MuteByName">(By name)</string>
|
||||
<string name="MuteAgent">(Resident)</string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue