summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-05-09 10:53:37 +0100
committerTofu Linden <tofu.linden@lindenlab.com>2010-05-09 10:53:37 +0100
commit70635cb3cb3e18456757bda57f8f2cab17f2b2c5 (patch)
tree2b4a12f158662cf3173d09086ceb23ed2743fdaf
parentcb766f1fb2600c06b795774f4d1229b23d1dcec4 (diff)
parent6b456442eb78f5c70d45e6cc2c6ee278a734406b (diff)
merge
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/gpu_table.txt83
-rw-r--r--indra/newview/llagent.cpp2
-rw-r--r--indra/newview/llcofwearables.cpp11
-rw-r--r--indra/newview/llinventorybridge.cpp77
-rw-r--r--indra/newview/llinventorybridge.h2
-rw-r--r--indra/newview/llmoveview.cpp29
-rw-r--r--indra/newview/llmoveview.h3
-rw-r--r--indra/newview/llpanelgroup.cpp68
-rw-r--r--indra/newview/llpanelgroup.h6
-rw-r--r--indra/newview/llpanelgrouproles.cpp4
-rw-r--r--indra/newview/llpaneloutfitedit.cpp112
-rw-r--r--indra/newview/llpaneloutfitedit.h17
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp9
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.pngbin0 -> 47887 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_Left_On.pngbin0 -> 47995 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.pngbin0 -> 48333 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_Right_On.pngbin0 -> 47187 bytes
-rw-r--r--indra/newview/skins/default/textures/textures.xml4
-rw-r--r--indra/newview/skins/default/xui/da/menu_login.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_moveview.xml146
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml13
-rw-r--r--indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml6
-rw-r--r--indra/newview/skins/default/xui/es/floater_world_map.xml4
-rw-r--r--indra/newview/skins/default/xui/es/menu_login.xml1
-rw-r--r--indra/newview/skins/default/xui/it/menu_login.xml1
-rw-r--r--indra/newview/skins/default/xui/nl/floater_tools.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_login.xml1
-rw-r--r--indra/newview/skins/default/xui/pt/menu_login.xml1
-rw-r--r--indra/newview/skins/default/xui/pt/panel_region_debug.xml22
-rw-r--r--indra/newview/skins/default/xui/pt/panel_region_general_layout.xml4
31 files changed, 351 insertions, 289 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 4bbabb026c..dee0138729 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -3819,6 +3819,17 @@
<key>Value</key>
<real>1.0</real>
</map>
+ <key>InventoryLinking</key>
+ <map>
+ <key>Comment</key>
+ <string>Enable ability to create links to folders and items via "Paste as link".</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>InventorySortOrder</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index aa0e21ea8f..3754f30a66 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -70,43 +70,42 @@ ATI M56 .*ATI.*M56.* 1 1
ATI M71 .*ATI.*M71.* 1 1
ATI M72 .*ATI.*M72.* 1 1
ATI M76 .*ATI.*M76.* 3 1
-ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1
-ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1
-ATI Mobility Radeon 9800 .*ATI.*Mobility.*98.* 0 1
-ATI Mobility Radeon 9700 .*ATI.*Mobility.*97.* 0 1
-ATI Mobility Radeon 9600 .*ATI.*Mobility.*96.* 0 1
-ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD.*23.* 1 1
-ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD.*24.* 1 1
-ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD.*26.* 3 1
-ATI Mobility Radeon HD 3400 .*ATI.*Mobility.*HD.*34.* 1 1
-ATI Mobility Radeon HD 3600 .*ATI.*Mobility.*HD.*36.* 3 1
-ATI Mobility Radeon HD 3800 .*ATI.*Mobility.*HD.*38.* 3 1
-ATI Mobility Radeon X1xxx .*ATI.*Mobility.*X1.* 0 1
-ATI Mobility Radeon X2xxx .*ATI.*Mobility.*X2.* 0 1
-ATI Mobility Radeon X3xx .*ATI.*Mobility.*X3.* 1 1
-ATI Mobility Radeon X6xx .*ATI.*Mobility.*X6.* 1 1
-ATI Mobility Radeon X7xx .*ATI.*Mobility.*X7.* 1 1
-ATI Mobility Radeon Xxxx .*ATI.*Mobility.*X.* 0 1
-ATI Mobility Radeon .*ATI.*Mobility.* 0 1
-ATI Radeon HD 2300 .*ATI.*Radeon HD 23.* 0 1
-ATI Radeon HD 2400 .*ATI.*Radeon HD.*24.* 1 1
-ATI Radeon HD 2600 .*ATI.*Radeon HD 26.* 2 1
-ATI Radeon HD 2900 .*ATI.*Radeon HD 29.* 3 1
-ATI Radeon HD 3200 .*ATI.*Radeon.*HD.*32.* 1 1
-ATI Radeon HD 3300 .*ATI.*Radeon HD.*33.* 1 1
-ATI Radeon HD 3400 .*ATI.*Radeon HD.*34.* 1 1
-ATI Radeon HD 3600 .*ATI.*Radeon HD.*36.* 3 1
-ATI Radeon HD 3800 .*ATI.*Radeon HD.*38.* 3 1
-ATI Radeon HD 4200 .*ATI.*Radeon HD 42.* 1 1
-ATI Radeon HD 4300 .*ATI.*Radeon HD 43.* 1 1
-ATI Radeon HD 4500 .*ATI.*Radeon HD 45.* 3 1
-ATI Radeon HD 4600 .*ATI.*Radeon HD.*46.* 3 1
-ATI Radeon HD 4700 .*ATI.*Radeon HD 47.* 3 1
-ATI Radeon HD 4800 .*ATI.*Radeon.*HD.*48.* 3 1
-ATI Radeon HD 5600 .*ATI.*Radeon.*HD.*56.* 3 1
-ATI Radeon HD 5700 .*ATI.*Radeon.*HD.*57.* 3 1
-ATI Radeon HD 5800 .*ATI.*Radeon.*HD.*58.* 3 1
-ATI Radeon HD 5900 .*ATI.*Radeon.*HD.*59.* 3 1
+ATI Mobility Radeon 7xxx .*ATI.*Mobility *Radeon 7.* 0 1
+ATI Mobility Radeon 8xxx .*ATI.*Mobility *Radeon 8.* 0 1
+ATI Mobility Radeon 9800 .*ATI.*Mobility *98.* 0 1
+ATI Mobility Radeon 9700 .*ATI.*Mobility *97.* 0 1
+ATI Mobility Radeon 9600 .*ATI.*Mobility *96.* 0 1
+ATI Mobility Radeon HD 2300 .*ATI.*Mobility *HD *23.* 1 1
+ATI Mobility Radeon HD 2400 .*ATI.*Mobility *HD *24.* 1 1
+ATI Mobility Radeon HD 2600 .*ATI.*Mobility *HD *26.* 3 1
+ATI Mobility Radeon HD 3400 .*ATI.*Mobility *HD *34.* 1 1
+ATI Mobility Radeon HD 3600 .*ATI.*Mobility *HD *36.* 3 1
+ATI Mobility Radeon HD 3800 .*ATI.*Mobility *HD *38.* 3 1
+ATI Mobility Radeon X1xxx .*ATI.*Mobility *X1.* 0 1
+ATI Mobility Radeon X2xxx .*ATI.*Mobility *X2.* 0 1
+ATI Mobility Radeon X3xx .*ATI.*Mobility *X3.* 1 1
+ATI Mobility Radeon X6xx .*ATI.*Mobility *X6.* 1 1
+ATI Mobility Radeon X7xx .*ATI.*Mobility *X7.* 1 1
+ATI Mobility Radeon Xxxx .*ATI.*Mobility *X.* 0 1
+ATI Radeon HD 2300 .*ATI.*Radeon HD *23.* 0 1
+ATI Radeon HD 2400 .*ATI.*Radeon HD *24.* 1 1
+ATI Radeon HD 2600 .*ATI.*Radeon HD *26.* 2 1
+ATI Radeon HD 2900 .*ATI.*Radeon HD *29.* 3 1
+ATI Radeon HD 3200 .*ATI.*Radeon *HD *32.* 0 1
+ATI Radeon HD 3300 .*ATI.*Radeon HD *33.* 1 1
+ATI Radeon HD 3400 .*ATI.*Radeon HD *34.* 1 1
+ATI Radeon HD 3600 .*ATI.*Radeon HD *36.* 3 1
+ATI Radeon HD 3800 .*ATI.*Radeon HD *38.* 3 1
+ATI Radeon HD 4200 .*ATI.*Radeon HD *42.* 1 1
+ATI Radeon HD 4300 .*ATI.*Radeon HD *43.* 1 1
+ATI Radeon HD 4500 .*ATI.*Radeon HD *45.* 3 1
+ATI Radeon HD 4600 .*ATI.*Radeon HD *46.* 3 1
+ATI Radeon HD 4700 .*ATI.*Radeon HD *47.* 3 1
+ATI Radeon HD 4800 .*ATI.*Radeon.*HD *48.* 3 1
+ATI Radeon HD 5600 .*ATI.*Radeon.*HD *56.* 3 1
+ATI Radeon HD 5700 .*ATI.*Radeon.*HD *57.* 3 1
+ATI Radeon HD 5800 .*ATI.*Radeon.*HD *58.* 3 1
+ATI Radeon HD 5900 .*ATI.*Radeon.*HD *59.* 3 1
ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0
ATI Radeon 2100 .*ATI.*Radeon 21.* 0 1
ATI Radeon 3100 .*ATI.*Radeon 31.* 1 1
@@ -128,12 +127,12 @@ ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0
ATI Radeon X1000 .*ATI.*Radeon *X10.* 0 1
ATI Radeon X1200 .*ATI.*Radeon *X12.* 0 1
ATI Radeon X1300 .*ATI.*Radeon *X13.* 1 1
-ATI Radeon X1400 .*ATI.*Radeon X14.* 1 1
-ATI Radeon X1500 .*ATI.*Radeon X15.* 1 1
+ATI Radeon X1400 .*ATI.*Radeon *X14.* 1 1
+ATI Radeon X1500 .*ATI.*Radeon *X15.* 1 1
ATI Radeon X1600 .*ATI.*Radeon *X16.* 1 1
-ATI Radeon X1700 .*ATI.*Radeon X17.* 1 1
-ATI Radeon X1800 .*ATI.*Radeon X18.* 3 1
-ATI Radeon X1900 .*ATI.*Radeon X19.* 3 1
+ATI Radeon X1700 .*ATI.*Radeon *X17.* 1 1
+ATI Radeon X1800 .*ATI.*Radeon *X18.* 3 1
+ATI Radeon X1900 .*ATI.*Radeon *X19.* 3 1
ATI Radeon X300 .*ATI.*Radeon *X3.* 0 1
ATI Radeon X400 .*ATI.*Radeon X4.* 0 1
ATI Radeon X500 .*ATI.*Radeon X5.* 0 1
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index ddcaeb113d..88ba5dce11 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1495,6 +1495,8 @@ void LLAgent::propagate(const F32 dt)
floater_move->mBackwardButton ->setToggleState( gAgentCamera.getAtKey() < 0 || gAgentCamera.getWalkKey() < 0 );
floater_move->mTurnLeftButton ->setToggleState( gAgentCamera.getYawKey() > 0.f );
floater_move->mTurnRightButton ->setToggleState( gAgentCamera.getYawKey() < 0.f );
+ floater_move->mSlideLeftButton ->setToggleState( gAgentCamera.getLeftKey() > 0.f );
+ floater_move->mSlideRightButton ->setToggleState( gAgentCamera.getLeftKey() < 0.f );
floater_move->mMoveUpButton ->setToggleState( gAgentCamera.getUpKey() > 0 );
floater_move->mMoveDownButton ->setToggleState( gAgentCamera.getUpKey() < 0 );
}
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 1925b818f2..29c32b6fa2 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -199,8 +199,8 @@ LLPanelClothingListItem* LLCOFWearables::buildClothingListItem(LLViewerInventory
//setting callbacks
//*TODO move that item panel's inner structure disclosing stuff into the panels
item_panel->childSetAction("btn_delete", mCOFCallbacks.mDeleteWearable);
- item_panel->childSetAction("btn_move_up", mCOFCallbacks.mMoveWearableCloser);
- item_panel->childSetAction("btn_move_down", mCOFCallbacks.mMoveWearableFurther);
+ item_panel->childSetAction("btn_move_up", mCOFCallbacks.mMoveWearableFurther);
+ item_panel->childSetAction("btn_move_down", mCOFCallbacks.mMoveWearableCloser);
item_panel->childSetAction("btn_edit", mCOFCallbacks.mEditWearable);
//turning on gray separator line for the last item in the items group of the same wearable type
@@ -243,11 +243,12 @@ void LLCOFWearables::populateClothingList(LLAppearanceMgr::wearables_by_type_t&
LLAppearanceMgr::sortItemsByActualDescription(clothing_by_type[type]);
- for (U32 i = 0; i < size; i++)
+ //clothing items are displayed in reverse order, from furthest ones to closest ones (relatively to the body)
+ for (U32 i = size; i != 0; --i)
{
- LLViewerInventoryItem* item = clothing_by_type[type][i];
+ LLViewerInventoryItem* item = clothing_by_type[type][i-1];
- LLPanelClothingListItem* item_panel = buildClothingListItem(item, i == 0, i == size - 1);
+ LLPanelClothingListItem* item_panel = buildClothingListItem(item, i == size, i == 1);
if (!item_panel) continue;
mClothing->addItem(item_panel, item->getUUID(), ADD_BOTTOM, false);
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 228ab7ebd6..b9b195c89a 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -645,10 +645,13 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
disabled_items.push_back(std::string("Paste"));
}
- items.push_back(std::string("Paste As Link"));
- if (!isClipboardPasteableAsLink() || (flags & FIRST_SELECTED_ITEM) == 0)
+ if (gSavedSettings.getBOOL("InventoryLinking"))
{
- disabled_items.push_back(std::string("Paste As Link"));
+ items.push_back(std::string("Paste As Link"));
+ if (!isClipboardPasteableAsLink() || (flags & FIRST_SELECTED_ITEM) == 0)
+ {
+ disabled_items.push_back(std::string("Paste As Link"));
+ }
}
items.push_back(std::string("Paste Separator"));
@@ -1405,13 +1408,65 @@ BOOL LLItemBridge::removeItem()
{
return FALSE;
}
+
+
// move it to the trash
LLPreview::hide(mUUID, TRUE);
LLInventoryModel* model = getInventoryModel();
if(!model) return FALSE;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ const LLUUID& trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLViewerInventoryItem* item = getItem();
+ if (!item) return FALSE;
+
+ // Already in trash
+ if (model->isObjectDescendentOf(mUUID, trash_id)) return FALSE;
+
+ LLNotification::Params params("ConfirmItemDeleteHasLinks");
+ params.functor.function(boost::bind(&LLItemBridge::confirmRemoveItem, this, _1, _2));
+
+ // Check if this item has any links. If generic inventory linking is enabled,
+ // we can't do this check because we may have items in a folder somewhere that is
+ // not yet in memory, so we don't want false negatives. (If disabled, then we
+ // know we only have links in the Outfits folder which we explicitly fetch.)
+ if (!gSavedSettings.getBOOL("InventoryLinking"))
+ {
+ if (!item->getIsLinkType())
+ {
+ LLInventoryModel::cat_array_t cat_array;
+ LLInventoryModel::item_array_t item_array;
+ LLLinkedItemIDMatches is_linked_item_match(mUUID);
+ gInventory.collectDescendentsIf(gInventory.getRootFolderID(),
+ cat_array,
+ item_array,
+ LLInventoryModel::INCLUDE_TRASH,
+ is_linked_item_match);
+
+ const U32 num_links = cat_array.size() + item_array.size();
+ if (num_links > 0)
+ {
+ // Warn if the user is will break any links when deleting this item.
+ LLNotifications::instance().add(params);
+ return FALSE;
+ }
+ }
+ }
+
+ LLNotifications::instance().forceResponse(params, 0);
+ return TRUE;
+}
+
+BOOL LLItemBridge::confirmRemoveItem(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if (option != 0) return FALSE;
+
+ LLInventoryModel* model = getInventoryModel();
+ if (!model) return FALSE;
+
LLViewerInventoryItem* item = getItem();
+ if (!item) return FALSE;
+ const LLUUID& trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
// if item is not already in trash
if(item && !model->isObjectDescendentOf(mUUID, trash_id))
{
@@ -1420,11 +1475,7 @@ BOOL LLItemBridge::removeItem()
// delete was successful
return TRUE;
}
- else
- {
- // tried to delete already item in trash (should purge?)
- return FALSE;
- }
+ return FALSE;
}
BOOL LLItemBridge::isItemCopyable() const
@@ -1589,8 +1640,12 @@ BOOL LLFolderBridge::isUpToDate() const
BOOL LLFolderBridge::isItemCopyable() const
{
- // Can copy folders to paste-as-link, but not for straight paste.
- return TRUE;
+ if (gSavedSettings.getBOOL("InventoryLinking"))
+ {
+ // Can copy folders to paste-as-link, but not for straight paste.
+ return TRUE;
+ }
+ return FALSE;
}
BOOL LLFolderBridge::copyToClipboard() const
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index c45e376cab..aa3b36e7e2 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -267,6 +267,8 @@ protected:
virtual BOOL isItemPermissive() const;
static void buildDisplayName(LLInventoryItem* item, std::string& name);
mutable std::string mDisplayName;
+
+ BOOL confirmRemoveItem(const LLSD& notification, const LLSD& response);
};
class LLFolderBridge : public LLInvFVBridge
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 2f22512aba..afca9daa67 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -91,12 +91,20 @@ BOOL LLFloaterMove::postBuild()
LLDockableFloater::postBuild();
+ // Code that implements floater buttons toggling when user moves via keyboard is located in LLAgent::propagate()
+
mForwardButton = getChild<LLJoystickAgentTurn>("forward btn");
mForwardButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
mBackwardButton = getChild<LLJoystickAgentTurn>("backward btn");
mBackwardButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+ mSlideLeftButton = getChild<LLJoystickAgentSlide>("move left btn");
+ mSlideLeftButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+
+ mSlideRightButton = getChild<LLJoystickAgentSlide>("move right btn");
+ mSlideRightButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+
mTurnLeftButton = getChild<LLButton>("turn left btn");
mTurnLeftButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
mTurnLeftButton->setHeldDownCallback(boost::bind(&LLFloaterMove::turnLeft, this));
@@ -125,8 +133,6 @@ BOOL LLFloaterMove::postBuild()
btn = getChild<LLButton>("mode_fly_btn");
btn->setCommitCallback(boost::bind(&LLFloaterMove::onFlyButtonClick, this));
- showFlyControls(false);
-
initModeTooltips();
initModeButtonMap();
@@ -345,33 +351,38 @@ void LLFloaterMove::setMovementMode(const EMovementMode mode)
void LLFloaterMove::updateButtonsWithMovementMode(const EMovementMode newMode)
{
- showFlyControls(MM_FLY == newMode);
setModeTooltip(newMode);
setModeButtonToggleState(newMode);
setModeTitle(newMode);
}
-void LLFloaterMove::showFlyControls(bool bShow)
-{
- mMoveUpButton->setVisible(bShow);
- mMoveDownButton->setVisible(bShow);
-}
-
void LLFloaterMove::initModeTooltips()
{
control_tooltip_map_t walkTipMap;
walkTipMap.insert(std::make_pair(mForwardButton, getString("walk_forward_tooltip")));
walkTipMap.insert(std::make_pair(mBackwardButton, getString("walk_back_tooltip")));
+ walkTipMap.insert(std::make_pair(mSlideLeftButton, getString("walk_left_tooltip")));
+ walkTipMap.insert(std::make_pair(mSlideRightButton, getString("walk_right_tooltip")));
+ walkTipMap.insert(std::make_pair(mMoveUpButton, getString("jump_tooltip")));
+ walkTipMap.insert(std::make_pair(mMoveDownButton, getString("crouch_tooltip")));
mModeControlTooltipsMap[MM_WALK] = walkTipMap;
control_tooltip_map_t runTipMap;
runTipMap.insert(std::make_pair(mForwardButton, getString("run_forward_tooltip")));
runTipMap.insert(std::make_pair(mBackwardButton, getString("run_back_tooltip")));
+ runTipMap.insert(std::make_pair(mSlideLeftButton, getString("run_left_tooltip")));
+ runTipMap.insert(std::make_pair(mSlideRightButton, getString("run_right_tooltip")));
+ runTipMap.insert(std::make_pair(mMoveUpButton, getString("jump_tooltip")));
+ runTipMap.insert(std::make_pair(mMoveDownButton, getString("crouch_tooltip")));
mModeControlTooltipsMap[MM_RUN] = runTipMap;
control_tooltip_map_t flyTipMap;
flyTipMap.insert(std::make_pair(mForwardButton, getString("fly_forward_tooltip")));
flyTipMap.insert(std::make_pair(mBackwardButton, getString("fly_back_tooltip")));
+ flyTipMap.insert(std::make_pair(mSlideLeftButton, getString("fly_left_tooltip")));
+ flyTipMap.insert(std::make_pair(mSlideRightButton, getString("fly_right_tooltip")));
+ flyTipMap.insert(std::make_pair(mMoveUpButton, getString("fly_up_tooltip")));
+ flyTipMap.insert(std::make_pair(mMoveDownButton, getString("fly_down_tooltip")));
mModeControlTooltipsMap[MM_FLY] = flyTipMap;
setModeTooltip(MM_WALK);
diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h
index dcca8308d9..fcf643f050 100644
--- a/indra/newview/llmoveview.h
+++ b/indra/newview/llmoveview.h
@@ -88,7 +88,6 @@ private:
void onFlyButtonClick();
void initMovementMode();
void setMovementMode(const EMovementMode mode);
- void showFlyControls(bool bShow);
void initModeTooltips();
void setModeTooltip(const EMovementMode mode);
void setModeTitle(const EMovementMode mode);
@@ -102,6 +101,8 @@ public:
LLJoystickAgentTurn* mForwardButton;
LLJoystickAgentTurn* mBackwardButton;
+ LLJoystickAgentSlide* mSlideLeftButton;
+ LLJoystickAgentSlide* mSlideRightButton;
LLButton* mTurnLeftButton;
LLButton* mTurnRightButton;
LLButton* mMoveUpButton;
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index c00b6a4147..39833a7201 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -92,8 +92,7 @@ LLPanelGroup::LLPanelGroup()
: LLPanel(),
LLGroupMgrObserver( LLUUID() ),
mSkipRefresh(FALSE),
- mButtonJoin(NULL),
- mShowingNotifyDialog(false)
+ mButtonJoin(NULL)
{
// Set up the factory callbacks.
// Roles sub tabs
@@ -629,69 +628,4 @@ void LLPanelGroup::showNotice(const std::string& subject,
}
-bool LLPanelGroup::canClose()
-{
- if(getVisible() == false)
- return true;
-
- bool need_save = false;
- std::string mesg;
- for(std::vector<LLPanelGroupTab* >::iterator it = mTabs.begin();it!=mTabs.end();++it)
- if(need_save|=(*it)->needsApply(mesg))
- break;
- if(!need_save)
- return false;
- // If no message was provided, give a generic one.
- if (mesg.empty())
- {
- mesg = mDefaultNeedsApplyMesg;
- }
- // Create a notify box, telling the user about the unapplied tab.
- LLSD args;
- args["NEEDS_APPLY_MESSAGE"] = mesg;
- args["WANT_APPLY_MESSAGE"] = mWantApplyMesg;
-
- LLNotificationsUtil::add("SaveChanges", args, LLSD(), boost::bind(&LLPanelGroup::handleNotifyCallback,this, _1, _2));
-
- mShowingNotifyDialog = true;
-
- return false;
-}
-
-bool LLPanelGroup::notifyChildren(const LLSD& info)
-{
- if(info.has("request") && mID.isNull() )
- {
- std::string str_action = info["request"];
-
- if (str_action == "quit" )
- {
- canClose();
- return true;
- }
- if(str_action == "wait_quit")
- return mShowingNotifyDialog;
- }
- return false;
-}
-bool LLPanelGroup::handleNotifyCallback(const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- mShowingNotifyDialog = false;
- switch (option)
- {
- case 0: // "Apply Changes"
- apply();
- break;
- case 1: // "Ignore Changes"
- break;
- case 2: // "Cancel"
- default:
- // Do nothing. The user is canceling the action.
- // If we were quitting, we didn't really mean it.
- LLAppViewer::instance()->abortQuit();
- break;
- }
- return false;
-}
diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
index 359f252383..13a03b0713 100644
--- a/indra/newview/llpanelgroup.h
+++ b/indra/newview/llpanelgroup.h
@@ -95,9 +95,6 @@ public:
LLOfferInfo* inventory_offer);
- bool notifyChildren (const LLSD& info);
- bool handleNotifyCallback(const LLSD&, const LLSD&);
-
protected:
virtual void update(LLGroupChange gc);
@@ -117,9 +114,6 @@ protected:
protected:
bool apply(LLPanelGroupTab* tab);
- bool canClose();
-
- bool mShowingNotifyDialog;
LLTimer mRefreshTimer;
diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
index 0c24e6ad22..a77ba0c69c 100644
--- a/indra/newview/llpanelgrouproles.cpp
+++ b/indra/newview/llpanelgrouproles.cpp
@@ -145,8 +145,6 @@ BOOL LLPanelGroupRoles::postBuild()
llwarns << "Invalid subtab panel: " << panel->getName() << llendl;
return FALSE;
}
- // Add click callbacks to all the tabs.
- mSubTabContainer->setCommitCallback(boost::bind(&LLPanelGroupRoles::handleClickSubTab, this));
// Hand the subtab a pointer to this LLPanelGroupRoles, so that it can
// look around for the widgets it is interested in.
@@ -155,6 +153,8 @@ BOOL LLPanelGroupRoles::postBuild()
//subtabp->addObserver(this);
}
+ // Add click callbacks to all the tabs.
+ mSubTabContainer->setCommitCallback(boost::bind(&LLPanelGroupRoles::handleClickSubTab, this));
// Set the current tab to whatever is currently being shown.
mCurrentTab = (LLPanelGroupTab*) mSubTabContainer->getCurrentPanel();
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index daa41e1467..43c2f01da5 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -77,11 +77,16 @@ const U64 ALL_ITEMS_MASK = WEARABLE_MASK | ATTACHMENT_MASK;
static const std::string SAVE_BTN("save_btn");
static const std::string REVERT_BTN("revert_btn");
-class LLInventoryLookObserver : public LLInventoryObserver
+class LLCOFObserver : public LLInventoryObserver
{
public:
- LLInventoryLookObserver(LLPanelOutfitEdit *panel) : mPanel(panel) {}
- virtual ~LLInventoryLookObserver()
+ LLCOFObserver(LLPanelOutfitEdit *panel) : mPanel(panel),
+ mCOFLastVersion(LLViewerInventoryCategory::VERSION_UNKNOWN)
+ {
+ gInventory.addObserver(this);
+ }
+
+ virtual ~LLCOFObserver()
{
if (gInventory.containsObserver(this))
{
@@ -91,51 +96,43 @@ public:
virtual void changed(U32 mask)
{
- if (mask & (LLInventoryObserver::ADD | LLInventoryObserver::REMOVE))
- {
- mPanel->updateLookInfo();
- }
+ if (!gInventory.isInventoryUsable()) return;
+
+ LLUUID cof = LLAppearanceMgr::getInstance()->getCOF();
+ if (cof.isNull()) return;
+
+ LLViewerInventoryCategory* cat = gInventory.getCategory(cof);
+ if (!cat) return;
+
+ S32 cof_version = cat->getVersion();
+
+ if (cof_version == mCOFLastVersion) return;
+
+ mCOFLastVersion = cof_version;
+
+ mPanel->update();
}
+
protected:
LLPanelOutfitEdit *mPanel;
-};
-class LLLookFetchObserver : public LLInventoryFetchDescendentsObserver
-{
-public:
- LLLookFetchObserver(LLPanelOutfitEdit *panel) :
- mPanel(panel)
- {}
- LLLookFetchObserver() {}
- virtual void done()
- {
- mPanel->lookFetched();
- if(gInventory.containsObserver(this))
- {
- gInventory.removeObserver(this);
- }
- }
-private:
- LLPanelOutfitEdit *mPanel;
+ //last version number of a COF category
+ S32 mCOFLastVersion;
};
LLPanelOutfitEdit::LLPanelOutfitEdit()
: LLPanel(),
- mCurrentOutfitID(),
- mFetchLook(NULL),
mSearchFilter(NULL),
mCOFWearables(NULL),
mInventoryItemsPanel(NULL),
- mLookObserver(NULL)
+ mCOFObserver(NULL)
{
mSavedFolderState = new LLSaveFolderState();
mSavedFolderState->setApply(FALSE);
- mFetchLook = new LLLookFetchObserver(this);
- mLookObserver = new LLInventoryLookObserver(this);
- gInventory.addObserver(mLookObserver);
+ mCOFObserver = new LLCOFObserver(this);
mLookItemTypes.reserve(NUM_LOOK_ITEM_TYPES);
for (U32 i = 0; i < NUM_LOOK_ITEM_TYPES; i++)
@@ -149,17 +146,8 @@ LLPanelOutfitEdit::LLPanelOutfitEdit()
LLPanelOutfitEdit::~LLPanelOutfitEdit()
{
delete mSavedFolderState;
- if (gInventory.containsObserver(mFetchLook))
- {
- gInventory.removeObserver(mFetchLook);
- }
- delete mFetchLook;
-
- if (gInventory.containsObserver(mLookObserver))
- {
- gInventory.removeObserver(mLookObserver);
- }
- delete mLookObserver;
+
+ delete mCOFObserver;
}
BOOL LLPanelOutfitEdit::postBuild()
@@ -242,9 +230,6 @@ void LLPanelOutfitEdit::moveWearable(bool closer_to_body)
LLViewerInventoryItem* wearable_to_move = gInventory.getItem(item_id);
LLAppearanceMgr::getInstance()->moveWearable(wearable_to_move, closer_to_body);
-
- //*TODO why not to listen to inventory?
- updateLookInfo();
}
void LLPanelOutfitEdit::toggleAddWearablesPanel()
@@ -360,10 +345,7 @@ void LLPanelOutfitEdit::onAddToOutfitClicked(void)
LLFolderViewEventListener* listenerp = curr_item->getListener();
if (!listenerp) return;
- if (LLAppearanceMgr::getInstance()->wearItemOnAvatar(listenerp->getUUID()))
- {
- updateLookInfo();
- }
+ LLAppearanceMgr::getInstance()->wearItemOnAvatar(listenerp->getUUID());
}
@@ -372,8 +354,6 @@ void LLPanelOutfitEdit::onRemoveFromOutfitClicked(void)
LLUUID id_to_remove = mCOFWearables->getSelectedUUID();
LLAppearanceMgr::getInstance()->removeItemFromAvatar(id_to_remove);
-
- updateLookInfo();
}
@@ -465,34 +445,13 @@ void LLPanelOutfitEdit::onOutfitItemSelectionChange(void)
}
}
-void LLPanelOutfitEdit::changed(U32 mask)
-{
-}
-
-void LLPanelOutfitEdit::lookFetched(void)
+void LLPanelOutfitEdit::update()
{
mCOFWearables->refresh();
updateVerbs();
}
-void LLPanelOutfitEdit::updateLookInfo()
-{
- if (getVisible())
- {
- mFetchLook->setFetchID(mCurrentOutfitID);
- mFetchLook->startFetch();
- if (mFetchLook->isFinished())
- {
- mFetchLook->done();
- }
- else
- {
- gInventory.addObserver(mFetchLook);
- }
- }
-}
-
void LLPanelOutfitEdit::displayCurrentOutfit()
{
if (!getVisible())
@@ -500,8 +459,6 @@ void LLPanelOutfitEdit::displayCurrentOutfit()
setVisible(TRUE);
}
- mCurrentOutfitID = LLAppearanceMgr::getInstance()->getCOF();
-
std::string current_outfit_name;
if (LLAppearanceMgr::getInstance()->getBaseOutfitName(current_outfit_name))
{
@@ -512,12 +469,15 @@ void LLPanelOutfitEdit::displayCurrentOutfit()
mCurrentOutfitName->setText(getString("No Outfit"));
}
- updateLookInfo();
+ update();
}
//private
void LLPanelOutfitEdit::updateVerbs()
{
+ //*TODO implement better handling of COF dirtiness
+ LLAppearanceMgr::getInstance()->updateIsDirty();
+
bool outfit_is_dirty = LLAppearanceMgr::getInstance()->isOutfitDirty();
childSetEnabled(SAVE_BTN, outfit_is_dirty);
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index 0074cd517b..3cdfed14b9 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -48,13 +48,12 @@ class LLButton;
class LLCOFWearables;
class LLTextBox;
class LLInventoryCategory;
-class LLInventoryLookObserver;
+class LLCOFObserver;
class LLInventoryPanel;
class LLSaveFolderState;
class LLFolderViewItem;
class LLScrollListCtrl;
class LLToggleableMenu;
-class LLLookFetchObserver;
class LLFilterEditor;
class LLFilteredWearableListManager;
@@ -82,11 +81,6 @@ public:
/*virtual*/ ~LLPanelOutfitEdit();
/*virtual*/ BOOL postBuild();
- /*virtual*/ void changed(U32 mask);
-
- /*virtual*/ void setParcelID(const LLUUID& parcel_id);
- // Sends a request for data about the given parcel, which will
- // only update the location if there is none already available.
void moveWearable(bool closer_to_body);
@@ -106,16 +100,12 @@ public:
void displayCurrentOutfit();
- void lookFetched(void);
-
- void updateLookInfo(void);
+ void update();
private:
void updateVerbs();
- //*TODO got rid of mCurrentOutfitID
- LLUUID mCurrentOutfitID;
LLTextBox* mCurrentOutfitName;
LLInventoryPanel* mInventoryItemsPanel;
@@ -127,8 +117,7 @@ private:
LLFilteredWearableListManager* mWearableListManager;
- LLLookFetchObserver* mFetchLook;
- LLInventoryLookObserver* mLookObserver;
+ LLCOFObserver* mCOFObserver;
std::vector<LLLookItemType> mLookItemTypes;
LLCOFWearables* mCOFWearables;
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index e36e63521e..111894b31c 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -91,6 +91,15 @@ BOOL LLPanelOutfitsInventory::postBuild()
initTabPanels();
initListCommandsHandlers();
+ // Fetch your outfits folder so that the links are in memory.
+ // ( This is only necessary if we want to show a warning if a user deletes an item that has a
+ // a link in an outfit, see "ConfirmItemDeleteHasLinks". )
+ const LLUUID &outfits_cat = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTFIT, false);
+ if (outfits_cat.notNull())
+ {
+ LLInventoryModelBackgroundFetch::instance().start(outfits_cat);
+ }
+
return TRUE;
}
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png
new file mode 100644
index 0000000000..ded370a46f
--- /dev/null
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png
new file mode 100644
index 0000000000..98bf415f84
--- /dev/null
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png
new file mode 100644
index 0000000000..2d8d55fa91
--- /dev/null
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png
new file mode 100644
index 0000000000..a91517d31f
--- /dev/null
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index bbb82d86b1..15bac6de0d 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -241,6 +241,10 @@ with the same filename but different name
<texture name="Movement_Down_On" file_name="bottomtray/Movement_Down_On.png" preload="false" />
<texture name="Movement_Forward_Off" file_name="bottomtray/Movement_Forward_Off.png" preload="false" />
<texture name="Movement_Forward_On" file_name="bottomtray/Movement_Forward_On.png" preload="false" />
+ <texture name="Movement_Left_Off" file_name="bottomtray/Movement_Left_Off.png" preload="false" />
+ <texture name="Movement_Left_On" file_name="bottomtray/Movement_Left_On.png" preload="false" />
+ <texture name="Movement_Right_Off" file_name="bottomtray/Movement_Right_Off.png" preload="false" />
+ <texture name="Movement_Right_On" file_name="bottomtray/Movement_Right_On.png" preload="false" />
<texture name="Movement_TurnLeft_Off" file_name="bottomtray/Movement_TurnLeft_Off.png" preload="false" />
<texture name="Movement_TurnLeft_On" file_name="bottomtray/Movement_TurnLeft_On.png" preload="false" />
<texture name="Movement_TurnRight_Off" file_name="bottomtray/Movement_TurnRight_Off.png" preload="false" />
diff --git a/indra/newview/skins/default/xui/da/menu_login.xml b/indra/newview/skins/default/xui/da/menu_login.xml
index 1408702a1c..36e82e8bc4 100644
--- a/indra/newview/skins/default/xui/da/menu_login.xml
+++ b/indra/newview/skins/default/xui/da/menu_login.xml
@@ -6,6 +6,7 @@
</menu>
<menu label="Hjælp" name="Help">
<menu_item_call label="[SECOND_LIFE] hjælp" name="Second Life Help"/>
+ <menu_item_call label="Om [APP_NAME]" name="About Second Life"/>
</menu>
<menu_item_check label="Vis debug menu" name="Show Debug Menu"/>
<menu label="Debug" name="Debug">
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 8e2c57764b..a685094190 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -13,7 +13,7 @@
save_rect="true"
save_visibility="true"
save_dock_state="true"
- width="115">
+ width="113">
<string
name="walk_forward_tooltip">
Walk Forward (press Up Arrow or W)
@@ -23,6 +23,14 @@
Walk Backwards (press Down Arrow or S)
</string>
<string
+ name="walk_left_tooltip">
+ Walk left (press Shift + Left Arrow or A)
+ </string>
+ <string
+ name="walk_right_tooltip">
+ Walk right (press Shift + Right Arrow or D)
+ </string>
+ <string
name="run_forward_tooltip">
Run Forward (press Up Arrow or W)
</string>
@@ -31,6 +39,14 @@
Run Backwards (press Down Arrow or S)
</string>
<string
+ name="run_left_tooltip">
+ Run left (press Shift + Left Arrow or A)
+ </string>
+ <string
+ name="run_right_tooltip">
+ Run right (press Shift + Right Arrow or D)
+ </string>
+ <string
name="fly_forward_tooltip">
Fly Forward (press Up Arrow or W)
</string>
@@ -39,6 +55,30 @@
Fly Backwards (press Down Arrow or S)
</string>
<string
+ name="fly_left_tooltip">
+ Fly left (press Shift + Left Arrow or A)
+ </string>
+ <string
+ name="fly_right_tooltip">
+ Fly right (press Shift + Right Arrow or D)
+ </string>
+ <string
+ name="fly_up_tooltip">
+ Fly up (press E)
+ </string>
+ <string
+ name="fly_down_tooltip">
+ Fly down (press C)
+ </string>
+ <string
+ name="jump_tooltip">
+ Jump (press E)
+ </string>
+ <string
+ name="crouch_tooltip">
+ Crouch (press C)
+ </string>
+ <string
name="walk_title">
Walk
</string>
@@ -59,59 +99,91 @@
mouse_opaque="false"
name="panel_actions"
top="0"
- width="115">
+ width="113">
+ <!-- Buttons in panel are organized in 3 columns to enable their easy vertical adjustment via top_pad-->
+ <!-- Left column -->
<button
follows="left|bottom"
- height="25"
+ height="24"
+ image_selected="Movement_Up_On"
+ image_pressed_selected="Movement_Up_On"
+ image_unselected="Movement_Up_Off"
+ layout="topleft"
+ left="23"
+ name="move up btn"
+ scale_image="false"
+ tool_tip="Fly up (press E)"
+ top="18"
+ width="24" />
+ <button
+ follows="left|bottom"
+ height="24"
image_selected="Movement_TurnLeft_On"
image_pressed_selected="Movement_TurnLeft_On"
image_unselected="Movement_TurnLeft_Off"
layout="topleft"
- left="17"
+ left="15"
name="turn left btn"
scale_image="false"
tool_tip="Turn left (press Left Arrow or A)"
- top="45"
- width="25" />
- <button
- follows="left|bottom"
- height="25"
- image_selected="Movement_TurnRight_On"
- image_pressed_selected="Movement_TurnRight_On"
- image_unselected="Movement_TurnRight_Off"
- layout="topleft"
- left_pad="34"
- name="turn right btn"
- scale_image="false"
- tool_tip="Turn right (press Right Arrow or D)"
- top_delta="0"
- width="25" />
- <button
+ top_pad="-3"
+ width="24" />
+ <joystick_slide
follows="left|bottom"
- height="25"
- image_selected="Movement_Up_On"
- image_pressed_selected="Movement_Up_On"
- image_unselected="Movement_Up_Off"
+ height="24"
+ image_selected="Movement_Left_On"
+ image_pressed_selected="Movement_Left_On"
+ image_unselected="Movement_Left_Off"
layout="topleft"
- left="10"
- name="move up btn"
+ left="18"
+ name="move left btn"
+ quadrant="left"
scale_image="false"
- tool_tip="Fly up, press E"
- top="14"
- width="25" />
+ tool_tip="Walk left (press Shift + Left Arrow or A)"
+ top_pad="-3"
+ width="24" />
+ <!-- Right column -->
<button
follows="left|bottom"
- height="25"
+ height="24"
image_selected="Movement_Down_On"
image_pressed_selected="Movement_Down_On"
image_unselected="Movement_Down_Off"
layout="topleft"
- left_pad="45"
+ right="-21"
name="move down btn"
scale_image="false"
- tool_tip="Fly down, press C"
- top_delta="0"
- width="20" />
+ tool_tip="Fly down (press C)"
+ top="18"
+ width="24" />
+ <button
+ follows="left|bottom"
+ height="24"
+ image_selected="Movement_TurnRight_On"
+ image_pressed_selected="Movement_TurnRight_On"
+ image_unselected="Movement_TurnRight_Off"
+ layout="topleft"
+ right="-13"
+ name="turn right btn"
+ scale_image="false"
+ tool_tip="Turn left (press Right Arrow or D)"
+ top_pad="-3"
+ width="24" />
+ <joystick_slide
+ follows="left|bottom"
+ height="24"
+ image_selected="Movement_Right_On"
+ image_pressed_selected="Movement_Right_On"
+ image_unselected="Movement_Right_Off"
+ layout="topleft"
+ name="move right btn"
+ quadrant="right"
+ right="-16"
+ scale_image="false"
+ tool_tip="Walk right (press Shift + Right Arrow or D)"
+ top_pad="-3"
+ width="24" />
+ <!-- Middle column -->
<joystick_turn
follows="left|bottom"
height="25"
@@ -124,7 +196,7 @@
quadrant="up"
scale_image="false"
tool_tip="Walk forward (press up arrow or W)"
- top_delta="10"
+ top="22"
width="21" />
<joystick_turn
follows="left|bottom"
@@ -138,7 +210,7 @@
quadrant="down"
scale_image="false"
tool_tip="Walk backward (press down arrow or S)"
- top_delta="30"
+ top_pad="7"
width="21" />
</panel>
<!-- Width and height of this panel should be synchronized with panel_stand_stop_flying.xml -->
@@ -149,7 +221,7 @@
left="0"
name="panel_modes"
top_pad="0"
- width="115">
+ width="113">
<button
follows="left|bottom"
height="23"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 10914285dd..149a254f49 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -2124,6 +2124,19 @@ Please enter a higher price.
<notification
icon="alertmodal.tga"
+ name="ConfirmItemDeleteHasLinks"
+ type="alertmodal">
+At least one of the items you has link items that point to it. If you delete this item, its links will permanently stop working. It is strongly advised to delete the links first.
+
+Are you sure you want to delete these items?
+ <usetemplate
+ name="okcancelbuttons"
+ notext="Cancel"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
name="ConfirmObjectDeleteLock"
type="alertmodal">
At least one of the items you have selected is locked.
diff --git a/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml
index b48943c699..3effc9de89 100644
--- a/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml
+++ b/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml
@@ -6,7 +6,7 @@
name="panel_stand_stop_flying"
mouse_opaque="false"
visible="true"
- width="115">
+ width="113">
<button
follows="left|bottom"
height="19"
@@ -16,7 +16,7 @@
tool_tip="Click here to stand up."
top="2"
visible="false"
- width="115" />
+ width="113" />
<button
follows="left|bottom"
height="19"
@@ -26,5 +26,5 @@
tool_tip="Stop flying"
top="2"
visible="false"
- width="115" />
+ width="113" />
</panel>
diff --git a/indra/newview/skins/default/xui/es/floater_world_map.xml b/indra/newview/skins/default/xui/es/floater_world_map.xml
index 38a12002f5..c3a13980de 100644
--- a/indra/newview/skins/default/xui/es/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/es/floater_world_map.xml
@@ -20,10 +20,10 @@
Venta de terreno
</text>
<text name="by_owner_label">
- por el propietario
+ por el dueño
</text>
<text name="auction_label">
- subasta de terreno
+ subasta
</text>
<button name="Go Home" tool_tip="Teleportar a mi Base"/>
<text name="Home_label">
diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml
index df21ced9ab..101cddc6aa 100644
--- a/indra/newview/skins/default/xui/es/menu_login.xml
+++ b/indra/newview/skins/default/xui/es/menu_login.xml
@@ -6,6 +6,7 @@
</menu>
<menu label="Ayuda" name="Help">
<menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
+ <menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/>
</menu>
<menu_item_check label="Mostrar el menú &apos;Debug&apos;" name="Show Debug Menu"/>
<menu label="Depurar" name="Debug">
diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml
index b0edeb3618..904b819198 100644
--- a/indra/newview/skins/default/xui/it/menu_login.xml
+++ b/indra/newview/skins/default/xui/it/menu_login.xml
@@ -6,6 +6,7 @@
</menu>
<menu label="Aiuto" name="Help">
<menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
+ <menu_item_call label="Informazioni su [APP_NAME]" name="About Second Life"/>
</menu>
<menu_item_check label="Mostra menu Debug" name="Show Debug Menu"/>
<menu label="Debug" name="Debug">
diff --git a/indra/newview/skins/default/xui/nl/floater_tools.xml b/indra/newview/skins/default/xui/nl/floater_tools.xml
index f79d3dbd6b..0f8392428f 100644
--- a/indra/newview/skins/default/xui/nl/floater_tools.xml
+++ b/indra/newview/skins/default/xui/nl/floater_tools.xml
@@ -403,7 +403,7 @@
<text name="glow label">
Gloed
</text>
- <check_box label="Volledige &#10;helderheid" name="checkbox fullbright" bottom_delta="-21"/>
+ <check_box label="Volledige helderheid" name="checkbox fullbright"/>
<text name="tex gen">
Mapping
</text>
diff --git a/indra/newview/skins/default/xui/pl/menu_login.xml b/indra/newview/skins/default/xui/pl/menu_login.xml
index 2673f5c271..ed4937182f 100644
--- a/indra/newview/skins/default/xui/pl/menu_login.xml
+++ b/indra/newview/skins/default/xui/pl/menu_login.xml
@@ -6,6 +6,7 @@
</menu>
<menu label="Pomoc" name="Help">
<menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help"/>
+ <menu_item_call label="O [APP_NAME]" name="About Second Life"/>
</menu>
<menu label="Debug" name="Debug">
<menu label="Edytuj" name="Edit">
diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml
index a7df67a6b5..8ea87a06d1 100644
--- a/indra/newview/skins/default/xui/pt/menu_login.xml
+++ b/indra/newview/skins/default/xui/pt/menu_login.xml
@@ -6,6 +6,7 @@
</menu>
<menu label="Ajuda" name="Help">
<menu_item_call label="Ajuda do [SECOND_LIFE]" name="Second Life Help"/>
+ <menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/>
</menu>
<menu_item_check label="Exibir menu de depuração" name="Show Debug Menu"/>
<menu label="Depurar" name="Debug">
diff --git a/indra/newview/skins/default/xui/pt/panel_region_debug.xml b/indra/newview/skins/default/xui/pt/panel_region_debug.xml
index 2119a06e55..f2cc9f644d 100644
--- a/indra/newview/skins/default/xui/pt/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/pt/panel_region_debug.xml
@@ -6,15 +6,15 @@
<text name="region_text">
desconhecido
</text>
- <check_box label="Desabilitar Scripts" name="disable_scripts_check" tool_tip="Desabilitar todos os scripts nesta região"/>
+ <check_box label="Desativar scripts" name="disable_scripts_check" tool_tip="Desativar todos os scripts nesta região"/>
<button label="?" name="disable_scripts_help"/>
- <check_box label="Desabilitar colisões" name="disable_collisions_check" tool_tip="Desabilitar colisões de não-avatares nessa região"/>
+ <check_box label="Desativar colisões" name="disable_collisions_check" tool_tip="Desabilitar colisões de não-avatares nessa região"/>
<button label="?" name="disable_collisions_help"/>
- <check_box label="Desabilitar física" name="disable_physics_check" tool_tip="Desabilitar toda a físíca nesta região"/>
+ <check_box label="Desativar física" name="disable_physics_check" tool_tip="Desativar toda a físíca nesta região"/>
<button label="?" name="disable_physics_help"/>
<button label="Aplicar" name="apply_btn"/>
<text name="objret_text_lbl" width="130">
- Retornar objeto
+ Devolver objeto
</text>
<text name="resident_text_lbl">
Residente:
@@ -27,14 +27,14 @@
Opções:
</text>
<check_box label="Com scripts" name="return_scripts" tool_tip="Só devolver objetos com scripts"/>
- <check_box label="No terreno de outra pessoa" name="return_other_land" tool_tip="Retornar apenas objetos que estejam na terra pertencente a alguém"/>
- <check_box label="Em todas as regiões desta propriedade" name="return_estate_wide" tool_tip="Retornar objetos em todas as regiões que constituem esta propriedade"/>
- <button label="Retornar" name="return_btn"/>
- <button label="Pegar os principais colidentes..." name="top_colliders_btn" tool_tip="Lista dos objetos que experimentam as mais potenciais colisões" width="280"/>
+ <check_box label="No terreno de outra pessoa" name="return_other_land" tool_tip="Devolver apenas objetos que estejam em terrenos de outra pessoa"/>
+ <check_box label="Em todas as regiões desta propriedade" name="return_estate_wide" tool_tip="Devolver objetos em todas as regiões que constituem esta propriedade"/>
+ <button label="Devolver" name="return_btn"/>
+ <button label="Principais colidentes..." name="top_colliders_btn" tool_tip="Lista dos objetos com maior potencial de colisão" width="280"/>
<button label="?" left="297" name="top_colliders_help"/>
- <button label="Pegar Principais Scripts..." name="top_scripts_btn" tool_tip="Lista de objetos gastando mais tempo rodando scripts" width="280"/>
+ <button label="Principais scripts..." name="top_scripts_btn" tool_tip="Lista de objetos que mais passam tempo executando scripts" width="280"/>
<button label="?" left="297" name="top_scripts_help"/>
- <button label="Reiniciar a Região" name="restart_btn" tool_tip="Dar 2 minutos de contagem regressiva e reiniciar a região"/>
+ <button label="Reiniciar a região" name="restart_btn" tool_tip="Após 2 minutos de contagem regressiva, reiniciar a região"/>
<button label="?" name="restart_help"/>
- <button label="Atrasar o Reinicio" name="cancel_restart_btn" tool_tip="Atrasar o reinicio da região por uma hora"/>
+ <button label="Adiar reinício" name="cancel_restart_btn" tool_tip="Adiar o reinício da região por uma hora"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_region_general_layout.xml b/indra/newview/skins/default/xui/pt/panel_region_general_layout.xml
index d2d5fb649c..534b2826af 100644
--- a/indra/newview/skins/default/xui/pt/panel_region_general_layout.xml
+++ b/indra/newview/skins/default/xui/pt/panel_region_general_layout.xml
@@ -18,12 +18,12 @@
<text name="region_type">
(Desconhecido)
</text>
- <check_box label="Bloquear terraplanagem" name="block_terraform_check"/>
+ <check_box label="Bloquear terraplanagens" name="block_terraform_check"/>
<check_box label="Bloquear voos" name="block_fly_check"/>
<check_box label="Permitir danos" name="allow_damage_check"/>
<check_box label="Limitar empurrões" name="restrict_pushobject"/>
<check_box label="Permitir revenda de terrenos" name="allow_land_resell_check"/>
- <check_box label="Permitir junção e divisão de terrenos" name="allow_parcel_changes_check"/>
+ <check_box label="Permitir união e divisão de terrenos" name="allow_parcel_changes_check"/>
<check_box label="Não mostrar nos resultados de pesquisa" name="block_parcel_search_check" tool_tip="Mostrar esta região e lotes nos resultados de pesquisa"/>
<spinner label="Limite do agente" name="agent_limit_spin"/>
<spinner label="Bônus do objeto" name="object_bonus_spin"/>