summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorSteven Bennetts <steve@lindenlab.com>2009-10-09 00:42:36 +0000
committerSteven Bennetts <steve@lindenlab.com>2009-10-09 00:42:36 +0000
commit81e0fb43caa27491fa18b17d6a05cafb0e20dfa6 (patch)
treeaea6b59f47a56255ab01c0b814650b943170847e /indra
parent4c89e7389383e2943334ad8ec185b8935cbe7db8 (diff)
merge https://svn.aws.productengine.com/secondlife/export-from-ll/viewer-2-0@1943 https://svn.aws.productengine.com/secondlife/pe/stable-2@1958 -> viewer-2.0.0-3
* Bugs: EXT-1148 EXT-1330 EXT-990 EXT-1259 EXT-1184 EXT-1327 EXT-1389 EXT-1276 EXT-1390 EXT-1396 EXT-1050 EXT-1094 EXT-1166 EXT-1137 EXT-1327 EXT-782 EXT-1137 EXT-1394 EXT-1326 EXT-917 EXT-1262 * New Dev: EXT-1292 EXT-1139
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/llbottomtray.cpp8
-rw-r--r--indra/newview/llbottomtray.h2
-rw-r--r--indra/newview/llfavoritesbar.cpp72
-rw-r--r--indra/newview/llfavoritesbar.h3
-rw-r--r--indra/newview/llnearbychathandler.cpp42
-rw-r--r--indra/newview/llpanelgroup.cpp7
-rw-r--r--indra/newview/llpanelgrouproles.cpp8
-rw-r--r--indra/newview/llpanelplaceinfo.cpp16
-rw-r--r--indra/newview/llpanelplaceinfo.h4
-rw-r--r--indra/newview/llpanelplaces.cpp133
-rw-r--r--indra/newview/llpanelteleporthistory.cpp164
-rw-r--r--indra/newview/llpanelteleporthistory.h15
-rw-r--r--indra/newview/lltoastpanel.cpp2
-rw-r--r--indra/newview/llurllineeditorctrl.cpp10
-rw-r--r--indra/newview/llviewercontrol.cpp7
-rw-r--r--indra/newview/llviewerwindow.cpp6
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_session.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_moveview.xml6
-rw-r--r--indra/newview/skins/default/xui/en/menu_bottomtray.xml13
-rw-r--r--indra/newview/skins/default/xui/en/menu_favorites.xml3
-rw-r--r--indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml30
-rw-r--r--indra/newview/skins/default/xui/en/menu_teleport_history_item.xml7
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml11
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray.xml32
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_pick.xml36
-rw-r--r--indra/newview/skins/default/xui/en/panel_instant_message.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_info.xml20
-rw-r--r--indra/newview/skins/default/xui/en/panel_places.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_teleport_history.xml98
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml3
32 files changed, 510 insertions, 268 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 806f96a654..be48ebdf67 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7610,6 +7610,17 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>ShowSnapshotButton</key>
+ <map>
+ <key>Comment</key>
+ <string>Show/Hide Snapshot button button in the bottom tray</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>ShowMoveButton</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 8771611b1c..0ff8ca7d26 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -87,6 +87,7 @@ BOOL LLBottomTray::postBuild()
mMovementPanel = getChild<LLPanel>("movement_panel");
mGestureCombo = getChild<LLComboBox>("Gesture");
mCamPanel = getChild<LLPanel>("cam_panel");
+ mSnapshotPanel = getChild<LLPanel>("snapshot_panel");
setRightMouseDownCallback(boost::bind(&LLBottomTray::showBottomTrayContextMenu,this, _2, _3,_4));
return TRUE;
@@ -212,7 +213,7 @@ void LLBottomTray::setVisible(BOOL visible)
LLView* viewp = *child_it;
std::string name = viewp->getName();
- if ("chat_bar" == name || "movement_panel" == name || "cam_panel" == name)
+ if ("chat_bar" == name || "movement_panel" == name || "cam_panel" == name || "snapshot_panel" == name)
continue;
else
{
@@ -266,3 +267,8 @@ void LLBottomTray::showCameraButton(BOOL visible)
{
mCamPanel->setVisible(visible);
}
+
+void LLBottomTray::showSnapshotButton(BOOL visible)
+{
+ mSnapshotPanel->setVisible(visible);
+}
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index b25dec7b92..4724c5ecef 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -76,6 +76,7 @@ public:
void showGestureButton(BOOL visible);
void showMoveButton(BOOL visible);
void showCameraButton(BOOL visible);
+ void showSnapshotButton(BOOL visible);
private:
@@ -100,6 +101,7 @@ protected:
LLMenuGL* mBottomTrayContextMenu;
LLPanel* mMovementPanel;
LLPanel* mCamPanel;
+ LLPanel* mSnapshotPanel;
LLComboBox* mGestureCombo;
};
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 48fcb6b6de..b06b4855ad 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -164,33 +164,6 @@ private:
LLSLURLGetter mUrlGetter;
};
-class LLFavoritesToggleableMenu : public LLToggleableMenu
-{
-public:
- virtual BOOL handleHover(S32 x, S32 y, MASK mask)
- {
- if (fb)
- {
- fb->handleHover(x, y, mask);
- }
-
- return LLToggleableMenu::handleHover(x, y, mask);
- }
-
- void initFavoritesBarPointer(LLFavoritesBarCtrl* fb) { this->fb = fb; }
-
-protected:
- LLFavoritesToggleableMenu(const LLToggleableMenu::Params& p):
- LLToggleableMenu(p)
- {
- }
-
- friend class LLUICtrlFactory;
-
-private:
- LLFavoritesBarCtrl* fb;
-};
-
/**
* This class is needed to override LLMenuItemCallGL default handleToolTip function and
* show SLURL as button tooltip.
@@ -221,6 +194,18 @@ public:
return LLMenuItemCallGL::handleMouseUp(x, y, mask);
}
+ virtual BOOL handleHover(S32 x, S32 y, MASK mask)
+ {
+ if (fb)
+ {
+ fb->handleHover(x, y, mask);
+ }
+
+ return LLMenuItemCallGL::handleHover(x, y, mask);
+ }
+
+ void initFavoritesBarPointer(LLFavoritesBarCtrl* fb) { this->fb = fb; }
+
protected:
LLFavoriteLandmarkMenuItem(const LLMenuItemCallGL::Params& p) : LLMenuItemCallGL(p) {}
@@ -228,6 +213,7 @@ protected:
private:
LLSLURLGetter mUrlGetter;
+ LLFavoritesBarCtrl* fb;
};
/**
@@ -312,8 +298,8 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)
boost::bind(&LLFavoritesBarCtrl::doToSelected, this, _2));
// Add this if we need to selectively enable items
- //LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Favorites.EnableSelected",
- // boost::bind(&LLFavoritesBarCtrl::enableSelected, this, _2));
+ LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Favorites.EnableSelected",
+ boost::bind(&LLFavoritesBarCtrl::enableSelected, this, _2));
gInventory.addObserver(this);
}
@@ -433,7 +419,7 @@ void LLFavoritesBarCtrl::handleExistingFavoriteDragAndDrop(S32 x, S32 y)
saveItemsOrder(mItems);
- LLFavoritesToggleableMenu* menu = (LLFavoritesToggleableMenu*) mPopupMenuHandle.get();
+ LLToggleableMenu* menu = (LLToggleableMenu*) mPopupMenuHandle.get();
if (menu && menu->getVisible())
{
@@ -794,7 +780,7 @@ void LLFavoritesBarCtrl::showDropDownMenu()
{
if (mPopupMenuHandle.isDead())
{
- LLFavoritesToggleableMenu::Params menu_p;
+ LLToggleableMenu::Params menu_p;
menu_p.name("favorites menu");
menu_p.can_tear_off(false);
menu_p.visible(false);
@@ -802,12 +788,11 @@ void LLFavoritesBarCtrl::showDropDownMenu()
menu_p.max_scrollable_items = 10;
menu_p.preferred_width = DROP_DOWN_MENU_WIDTH;
- LLFavoritesToggleableMenu* menu = LLUICtrlFactory::create<LLFavoritesToggleableMenu>(menu_p);
- menu->initFavoritesBarPointer(this);
+ LLToggleableMenu* menu = LLUICtrlFactory::create<LLToggleableMenu>(menu_p);
mPopupMenuHandle = menu->getHandle();
}
- LLFavoritesToggleableMenu* menu = (LLFavoritesToggleableMenu*)mPopupMenuHandle.get();
+ LLToggleableMenu* menu = (LLToggleableMenu*)mPopupMenuHandle.get();
if(menu)
{
@@ -873,6 +858,7 @@ void LLFavoritesBarCtrl::showDropDownMenu()
item_params.on_click.function(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, item->getUUID()));
LLFavoriteLandmarkMenuItem *menu_item = LLUICtrlFactory::create<LLFavoriteLandmarkMenuItem>(item_params);
+ menu_item->initFavoritesBarPointer(this);
menu_item->setRightMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonRightClick, this,item->getUUID(),_1,_2,_3,_4));
menu_item->LLUICtrl::setMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseDown, this, item->getUUID(), _1, _2, _3, _4));
menu_item->LLUICtrl::setMouseUpCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseUp, this, item->getUUID(), _1, _2, _3, _4));
@@ -951,6 +937,18 @@ void copy_slurl_to_clipboard_cb(std::string& slurl)
}
+bool LLFavoritesBarCtrl::enableSelected(const LLSD& userdata)
+{
+ std::string param = userdata.asString();
+
+ if (param == std::string("can_paste"))
+ {
+ return isClipboardPasteable();
+ }
+
+ return false;
+}
+
void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata)
{
std::string action = userdata.asString();
@@ -1072,6 +1070,7 @@ void LLFavoritesBarCtrl::pastFromClipboard() const
void LLFavoritesBarCtrl::onButtonMouseDown(LLUUID id, LLUICtrl* ctrl, S32 x, S32 y, MASK mask)
{
mDragItemId = id;
+ mStartDrag = TRUE;
S32 screenX, screenY;
localPointToScreen(x, y, &screenX, &screenY);
@@ -1081,6 +1080,7 @@ void LLFavoritesBarCtrl::onButtonMouseDown(LLUUID id, LLUICtrl* ctrl, S32 x, S32
void LLFavoritesBarCtrl::onButtonMouseUp(LLUUID id, LLUICtrl* ctrl, S32 x, S32 y, MASK mask)
{
+ mStartDrag = FALSE;
mDragItemId = LLUUID::null;
}
@@ -1095,7 +1095,7 @@ void LLFavoritesBarCtrl::onEndDrag()
BOOL LLFavoritesBarCtrl::handleHover(S32 x, S32 y, MASK mask)
{
- if (mDragItemId != LLUUID::null)
+ if (mDragItemId != LLUUID::null && mStartDrag)
{
S32 screenX, screenY;
localPointToScreen(x, y, &screenX, &screenY);
@@ -1106,6 +1106,8 @@ BOOL LLFavoritesBarCtrl::handleHover(S32 x, S32 y, MASK mask)
DAD_LANDMARK, mDragItemId,
LLToolDragAndDrop::SOURCE_LIBRARY);
+ mStartDrag = FALSE;
+
return LLToolDragAndDrop::getInstance()->handleHover(x, y, mask);
}
}
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index 97117c3b4a..ea2a3d08e2 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -81,10 +81,12 @@ protected:
void onButtonRightClick(LLUUID id,LLView* button,S32 x,S32 y,MASK mask);
void onButtonMouseDown(LLUUID id, LLUICtrl* button, S32 x, S32 y, MASK mask);
+ void onOverflowMenuItemMouseDown(LLUUID id, LLUICtrl* item, S32 x, S32 y, MASK mask);
void onButtonMouseUp(LLUUID id, LLUICtrl* button, S32 x, S32 y, MASK mask);
void onEndDrag();
+ bool enableSelected(const LLSD& userdata);
void doToSelected(const LLSD& userdata);
BOOL isClipboardPasteable() const;
void pastFromClipboard() const;
@@ -149,6 +151,7 @@ private:
LLUICtrl* mLastTab;
LLUUID mDragItemId;
+ BOOL mStartDrag;
LLInventoryModel::item_array_t mItems;
BOOL mTabsHighlightEnabled;
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index eb42e83994..3c5e588128 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -75,6 +75,13 @@ public:
void onToastDestroyed (LLToast* toast);
void onToastFade (LLToast* toast);
+ void reshape (S32 width, S32 height, BOOL called_from_parent);
+
+ void redrawToasts()
+ {
+ arrangeToasts();
+ }
+
// hide all toasts from screen, but not remove them from a channel
virtual void hideToastsFromScreen()
{
@@ -204,35 +211,46 @@ void LLNearbyChatScreenChannel::arrangeToasts()
void LLNearbyChatScreenChannel::showToastsBottom()
{
- LLRect rect = getRect();
-
LLRect toast_rect;
S32 bottom = getRect().mBottom;
+ S32 margin = gSavedSettings.getS32("ToastMargin");
for(std::vector<LLToast*>::iterator it = m_active_toasts.begin(); it != m_active_toasts.end(); ++it)
{
LLToast* toast = (*it);
- toast_rect = toast->getRect();
- toast_rect.setLeftTopAndSize(getRect().mLeft, bottom + toast_rect.getHeight()+gSavedSettings.getS32("ToastMargin"), toast_rect.getWidth() ,toast_rect.getHeight());
-
- toast->setRect(toast_rect);
+ S32 toast_top = bottom + toast->getRect().getHeight() + margin;
- if(toast->getRect().mTop > getRect().getHeight())
+ if(toast_top > gFloaterView->getRect().getHeight())
{
while(it!=m_active_toasts.end())
{
- (*it)->setVisible(FALSE);
- (*it)->stopTimer();
- m_toast_pool.push_back(*it);
+ toast->setVisible(FALSE);
+ toast->stopTimer();
+ m_toast_pool.push_back(toast);
it=m_active_toasts.erase(it);
}
break;
}
- toast->setVisible(TRUE);
- bottom = toast->getRect().mTop;
+ else
+ {
+ toast_rect = toast->getRect();
+ toast_rect.setLeftTopAndSize(getRect().mLeft , toast_top, toast_rect.getWidth() ,toast_rect.getHeight());
+
+ toast->setRect(toast_rect);
+
+ toast->setVisible(TRUE);
+ toast->stopTimer();
+ bottom = toast->getRect().mTop;
+ }
}
}
+void LLNearbyChatScreenChannel::reshape (S32 width, S32 height, BOOL called_from_parent)
+{
+ LLScreenChannelBase::reshape(width, height, called_from_parent);
+ arrangeToasts();
+}
+
//-----------------------------------------------------------------------------------------------
//LLNearbyChatHandler
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 2b584910a3..acad897fa4 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -54,6 +54,7 @@
#include "llsidetray.h"
#include "llaccordionctrltab.h"
+#include "llaccordionctrl.h"
static LLRegisterPanelClassWrapper<LLPanelGroup> t_panel_group("panel_group_info_sidetray");
@@ -375,17 +376,23 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
getChild<LLUICtrl>("prepend_founded_by")->setVisible(!is_null_group_id);
+ LLAccordionCtrl* tab_ctrl = findChild<LLAccordionCtrl>("group_accordion");
+ if(tab_ctrl)
+ tab_ctrl->reset();
+
LLAccordionCtrlTab* tab_general = findChild<LLAccordionCtrlTab>("group_general_tab");
LLAccordionCtrlTab* tab_roles = findChild<LLAccordionCtrlTab>("group_roles_tab");
LLAccordionCtrlTab* tab_notices = findChild<LLAccordionCtrlTab>("group_notices_tab");
LLAccordionCtrlTab* tab_land = findChild<LLAccordionCtrlTab>("group_land_tab");
+
if(!tab_general || !tab_roles || !tab_notices || !tab_land)
return;
if(button_join)
button_join->setVisible(false);
+
if(is_null_group_id)//creating new group
{
if(!tab_general->getDisplayChildren())
diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
index 1521c1113a..71486c908c 100644
--- a/indra/newview/llpanelgrouproles.cpp
+++ b/indra/newview/llpanelgrouproles.cpp
@@ -517,6 +517,8 @@ void LLPanelGroupSubTab::setGroupID(const LLUUID& id)
void LLPanelGroupSubTab::setSearchFilter(const std::string& filter)
{
+ if(mSearchFilter == filter)
+ return;
lldebugs << "LLPanelGroupSubTab::setSearchFilter() ==> '" << filter << "'" << llendl;
mSearchFilter = filter;
LLStringUtil::toLower(mSearchFilter);
@@ -1515,9 +1517,6 @@ void LLPanelGroupMembersSubTab::update(LLGroupChange gc)
return;
}
- // Rebuild the members list.
- mMembersList->deleteAllItems();
-
// Wait for both all data to be retrieved before displaying anything.
if ( gdatap->isMemberDataComplete()
&& gdatap->isRoleDataComplete()
@@ -1557,6 +1556,9 @@ void LLPanelGroupMembersSubTab::updateMembers()
{
mPendingMemberUpdate = FALSE;
+ // Rebuild the members list.
+ mMembersList->deleteAllItems();
+
lldebugs << "LLPanelGroupMembersSubTab::updateMembers()" << llendl;
LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID);
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index d6be0a9419..64c7f659dd 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -870,6 +870,11 @@ const LLUUID LLPanelPlaceInfo::getLandmarkFolder() const
return mFolderCombo->getValue().asUUID();
}
+BOOL LLPanelPlaceInfo::setLandmarkFolder(const LLUUID& id)
+{
+ return mFolderCombo->setCurrentByID(id);
+}
+
void LLPanelPlaceInfo::createLandmark(const LLUUID& folder_id)
{
std::string name = mTitleEditor->getText();
@@ -912,17 +917,6 @@ void LLPanelPlaceInfo::createPick(const LLVector3d& pos_global, LLPanelPick* pic
}
// virtual
-void LLPanelPlaceInfo::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- if (mMinHeight > 0 && mScrollingPanel != NULL)
- {
- mScrollingPanel->reshape(mScrollingPanel->getRect().getWidth(), mMinHeight);
- }
-
- LLView::reshape(width, height, called_from_parent);
-}
-
-// virtual
void LLPanelPlaceInfo::handleVisibilityChange (BOOL new_visibility)
{
LLPanel::handleVisibilityChange(new_visibility);
diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h
index 49aa195490..4926f81b60 100644
--- a/indra/newview/llpanelplaceinfo.h
+++ b/indra/newview/llpanelplaceinfo.h
@@ -124,8 +124,10 @@ public:
const std::string getLandmarkNotes() const;
const LLUUID getLandmarkFolder() const;
+ // Select current landmark folder in combobox.
+ BOOL setLandmarkFolder(const LLUUID& id);
+
/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
- /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
/*virtual*/ void handleVisibilityChange (BOOL new_visibility);
private:
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 35206f54c7..d16847de0f 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -317,21 +317,38 @@ void LLPanelPlaces::onOpen(const LLSD& key)
void LLPanelPlaces::setItem(LLInventoryItem* item)
{
- if (!item)
+ if (!mPlaceInfo || !item)
return;
mItem = item;
-
- // If the item is a link get a linked item
- if (mItem->getType() == LLAssetType::AT_LINK)
+
+ LLAssetType::EType item_type = mItem->getActualType();
+ if (item_type == LLAssetType::AT_LANDMARK || item_type == LLAssetType::AT_LINK)
{
- mItem = gInventory.getItem(mItem->getAssetUUID());
- if (mItem.isNull())
- return;
+ // If the item is a link get a linked item
+ if (item_type == LLAssetType::AT_LINK)
+ {
+ mItem = gInventory.getItem(mItem->getLinkedUUID());
+ if (mItem.isNull())
+ return;
+ }
}
-
- if (!mPlaceInfo)
+ else
+ {
return;
+ }
+
+ // Check if item is in agent's inventory and he has the permission to modify it.
+ BOOL is_landmark_editable = gInventory.isObjectDescendentOf(mItem->getUUID(), gInventory.getRootFolderID()) &&
+ mItem->getPermissions().allowModifyBy(gAgent.getID());
+
+ mEditBtn->setEnabled(is_landmark_editable);
+ mSaveBtn->setEnabled(is_landmark_editable);
+
+ if (is_landmark_editable)
+ {
+ mPlaceInfo->setLandmarkFolder(mItem->getParentUUID());
+ }
mPlaceInfo->displayItemInfo(mItem);
@@ -352,12 +369,6 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)
landmark->getRegionID(region_id);
landmark->getGlobalPos(mPosGlobal);
mPlaceInfo->displayParcelInfo(region_id, mPosGlobal);
-
- // Check if item is in agent's inventory and he has the permission to modify it.
- BOOL is_landmark_editable = mItem.notNull() &&
- gInventory.isObjectDescendentOf(mItem->getUUID(), gInventory.getRootFolderID()) &&
- mItem->getPermissions().allowModifyBy(gAgent.getID());
- mEditBtn->setEnabled(is_landmark_editable);
}
void LLPanelPlaces::onFilterEdit(const std::string& search_string)
@@ -487,22 +498,6 @@ void LLPanelPlaces::onSaveButtonClicked()
if (!mPlaceInfo || mItem.isNull())
return;
- LLAssetType::EType item_type = mItem->getType();
- if (item_type == LLAssetType::AT_LANDMARK || item_type != LLAssetType::AT_LINK)
- {
- // If the item is a link get a linked item
- if (item_type == LLAssetType::AT_LINK)
- {
- mItem = gInventory.getItem(mItem->getAssetUUID());
- if (mItem.isNull())
- return;
- }
- }
- else
- {
- return;
- }
-
std::string current_title_value = mPlaceInfo->getLandmarkTitle();
std::string item_title_value = mItem->getName();
std::string current_notes_value = mPlaceInfo->getLandmarkNotes();
@@ -511,73 +506,35 @@ void LLPanelPlaces::onSaveButtonClicked()
LLStringUtil::trim(current_title_value);
LLStringUtil::trim(current_notes_value);
- bool is_item_update_needed = false;
+ LLUUID item_id = mItem->getUUID();
+ LLUUID folder_id = mPlaceInfo->getLandmarkFolder();
+
+ LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(mItem);
if (!current_title_value.empty() &&
(item_title_value != current_title_value || item_notes_value != current_notes_value))
{
- is_item_update_needed = true;
+ new_item->rename(current_title_value);
+ new_item->setDescription(current_notes_value);
+ new_item->updateServer(FALSE);
}
- LLUUID item_id = mItem->getUUID();
- LLUUID folder_id = mPlaceInfo->getLandmarkFolder();
-
- // Check if item is in agent's inventory and he has the permission to modify it.
- if (!gInventory.isObjectDescendentOf(item_id, gInventory.getRootFolderID()) ||
- !mItem->getPermissions().allowModifyBy(gAgent.getID()))
- return;
-
- if(folder_id != mItem->getParentUUID() || is_item_update_needed)
+ if(folder_id != mItem->getParentUUID())
{
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)mItem.get();
- LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
+ LLInventoryModel::update_list_t update;
+ LLInventoryModel::LLCategoryUpdate old_folder(mItem->getParentUUID(),-1);
+ update.push_back(old_folder);
+ LLInventoryModel::LLCategoryUpdate new_folder(folder_id, 1);
+ update.push_back(new_folder);
+ gInventory.accountForUpdate(update);
- LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);
-
- // If target is the favorites folder we create link to it.
- if (favorites_id == folder_id)
- {
- if (is_item_update_needed)
- {
- new_item->rename(current_title_value);
- new_item->setDescription(current_notes_value);
- new_item->updateServer(FALSE);
-
- gInventory.updateItem(new_item);
- gInventory.notifyObservers();
- }
-
- link_inventory_item(gAgent.getID(),
- item->getUUID(),
- folder_id,
- item->getName(),
- LLAssetType::AT_LINK,
- LLPointer<LLInventoryCallback>(NULL));
- }
- else
- {
- if (is_item_update_needed)
- {
- new_item->rename(current_title_value);
- new_item->setDescription(current_notes_value);
- new_item->updateServer(FALSE);
- }
-
- LLInventoryModel::update_list_t update;
- LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1);
- update.push_back(old_folder);
- LLInventoryModel::LLCategoryUpdate new_folder(folder_id, 1);
- update.push_back(new_folder);
- gInventory.accountForUpdate(update);
-
- new_item->setParent(folder_id);
- new_item->updateParentOnServer(FALSE);
-
- gInventory.updateItem(new_item);
- gInventory.notifyObservers();
- }
+ new_item->setParent(folder_id);
+ new_item->updateParentOnServer(FALSE);
}
+ gInventory.updateItem(new_item);
+ gInventory.notifyObservers();
+
onCancelButtonClicked();
}
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index bc0dec1fdb..bed15df1ee 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -163,11 +163,6 @@ void LLTeleportHistoryPanel::ContextMenu::show(LLView* spawning_view, S32 index,
mIndex = index;
mMenu = createMenu();
- LLViewerInventoryItem *landmark = LLLandmarkActions::findLandmarkForGlobalPos(
- LLTeleportHistoryStorage::getInstance()->getItems()[index].mGlobalPos);
-
- mMenu->setItemEnabled("Make Landmark", !landmark || landmark->getUUID().isNull());
-
mMenu->show(x, y);
LLMenuGL::showPopup(spawning_view, mMenu, x, y);
}
@@ -181,7 +176,6 @@ LLContextMenu* LLTeleportHistoryPanel::ContextMenu::createMenu()
registrar.add("TeleportHistory.Teleport", boost::bind(&LLTeleportHistoryPanel::ContextMenu::onTeleport, this));
registrar.add("TeleportHistory.MoreInformation",boost::bind(&LLTeleportHistoryPanel::ContextMenu::onInfo, this));
registrar.add("TeleportHistory.Copy", boost::bind(&LLTeleportHistoryPanel::ContextMenu::onCopy, this));
- registrar.add("TeleportHistory.MakeLandmark", boost::bind(&LLTeleportHistoryPanel::ContextMenu::onMakeLandmark, this));
// create the context menu from the XUI
return LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>(
@@ -211,12 +205,6 @@ void LLTeleportHistoryPanel::ContextMenu::onCopy()
boost::bind(&LLTeleportHistoryPanel::ContextMenu::gotSLURLCallback, _1), false);
}
-void LLTeleportHistoryPanel::ContextMenu::onMakeLandmark()
-{
- //FIXME: it creates landmark for current agent positon, not for the global position of item of teleport history
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark"));
-}
-
// Not yet implemented; need to remove buildPanel() from constructor when we switch
//static LLRegisterPanelClassWrapper<LLTeleportHistoryPanel> t_teleport_history("panel_teleport_history");
@@ -225,6 +213,7 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel()
mFilterSubString(LLStringUtil::null),
mTeleportHistory(NULL),
mHistoryAccordion(NULL),
+ mStarButton(NULL),
mAccordionTabMenu(NULL),
mLastSelectedScrollList(NULL)
{
@@ -233,6 +222,7 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel()
LLTeleportHistoryPanel::~LLTeleportHistoryPanel()
{
+ LLView::deleteViewByHandle(mGearMenuHandle);
}
BOOL LLTeleportHistoryPanel::postBuild()
@@ -247,7 +237,6 @@ BOOL LLTeleportHistoryPanel::postBuild()
if (mHistoryAccordion)
{
-
for (child_list_const_iter_t iter = mHistoryAccordion->beginChild(); iter != mHistoryAccordion->endChild(); iter++)
{
if (dynamic_cast<LLAccordionCtrlTab*>(*iter))
@@ -268,6 +257,21 @@ BOOL LLTeleportHistoryPanel::postBuild()
}
}
+ getChild<LLPanel>("bottom_panel")->childSetAction("gear_btn",boost::bind(&LLTeleportHistoryPanel::onGearButtonClicked, this));
+
+ LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
+
+ registrar.add("TeleportHistory.ExpandAllFolders", boost::bind(&LLTeleportHistoryPanel::onExpandAllFolders, this));
+ registrar.add("TeleportHistory.CollapseAllFolders", boost::bind(&LLTeleportHistoryPanel::onCollapseAllFolders, this));
+ registrar.add("TeleportHistory.ClearTeleportHistory", boost::bind(&LLTeleportHistoryPanel::onClearTeleportHistory, this));
+
+ LLMenuGL* gear_menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_teleport_history_gear.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
+ if(gear_menu)
+ mGearMenuHandle = gear_menu->getHandle();
+
+ mStarButton = getChild<LLButton>("star_btn");
+ mStarButton->setCommitCallback(boost::bind(&LLTeleportHistoryPanel::onStarButtonCommit, this));
+
return TRUE;
}
@@ -293,7 +297,7 @@ void LLTeleportHistoryPanel::onShowOnMap()
return;
LLVector3d global_pos = mTeleportHistory->getItems()[itemp->getIndex()].mGlobalPos;
-
+
if (!global_pos.isExactlyZero())
{
LLFloaterWorldMap::getInstance()->trackLocation(global_pos);
@@ -342,20 +346,47 @@ void LLTeleportHistoryPanel::onCopySLURL()
// virtual
void LLTeleportHistoryPanel::updateVerbs()
{
- if (!isTabVisible())
+ if (!isTabVisible())
return;
if (!mLastSelectedScrollList)
{
mTeleportBtn->setEnabled(false);
mShowOnMapBtn->setEnabled(false);
+ mStarButton->setEnabled(false);
+ mStarButton->setToolTip(LLStringExplicit(""));
return;
}
LLTeleportHistoryFlatItem* itemp = dynamic_cast<LLTeleportHistoryFlatItem *> (mLastSelectedScrollList->getSelectedItem());
- mTeleportBtn->setEnabled(NULL != itemp && 0 < itemp->getIndex());
+ mTeleportBtn->setEnabled(NULL != itemp && itemp->getIndex() < (S32)mTeleportHistory->getItems().size() - 1);
mShowOnMapBtn->setEnabled(NULL != itemp);
+
+ if (NULL != itemp)
+ {
+ LLViewerInventoryItem *landmark = LLLandmarkActions::findLandmarkForGlobalPos(
+ mTeleportHistory->getItems()[itemp->getIndex()].mGlobalPos);
+
+ mStarButton->setEnabled(true);
+ if (!landmark || landmark->getUUID().isNull())
+ {
+ mStarButton->setToggleState(true);
+ // Landmark can be created only for current agent positon, which is most recent (last) item in teleport history.
+ // mTeleportBtn is disabled only for that item.
+ mStarButton->setToolTip(mTeleportBtn->getEnabled() ? getString("cant_create_lm_here") : getString("create_landmark"));
+ }
+ else
+ {
+ mStarButton->setToggleState(false);
+ mStarButton->setToolTip(getString("open_landmark"));
+ }
+ }
+ else
+ {
+ mStarButton->setEnabled(false);
+ mStarButton->setToolTip(LLStringExplicit(""));
+ }
}
void LLTeleportHistoryPanel::showTeleportHistory()
@@ -375,7 +406,7 @@ void LLTeleportHistoryPanel::showTeleportHistory()
curr_date.split(&curr_year, &curr_month, &curr_day);
curr_date.fromYMDHMS(curr_year, curr_month, curr_day); // Set hour, min, and sec to 0
curr_date.secondsSinceEpoch(curr_date.secondsSinceEpoch() + seconds_in_day);
-
+
LLFlatListView* curr_flat_view = NULL;
S32 index = hist_items.size() - 1;
@@ -388,10 +419,10 @@ void LLTeleportHistoryPanel::showTeleportHistory()
std::string::size_type match_offset = mFilterSubString.size() ? landmark_title.find(mFilterSubString) : std::string::npos;
bool passed = mFilterSubString.size() == 0 || match_offset != std::string::npos;
-
+
if (!passed)
continue;
-
+
if (curr_tab < tabs_cnt - 1)
{
const LLDate &date = (*iter).mDate;
@@ -405,7 +436,7 @@ void LLTeleportHistoryPanel::showTeleportHistory()
tab = mItemContainers.get(mItemContainers.size() - 1 - curr_tab);
tab->setVisible(false);
-
+
if (curr_tab <= tabs_cnt - 4)
{
curr_date.secondsSinceEpoch(curr_date.secondsSinceEpoch() - seconds_in_day);
@@ -436,7 +467,6 @@ void LLTeleportHistoryPanel::showTeleportHistory()
curr_year--;
}
curr_date.fromYMDHMS(curr_year, curr_month, curr_day);
-
}
else // 6 months and older
{
@@ -455,7 +485,7 @@ void LLTeleportHistoryPanel::showTeleportHistory()
}
if (curr_flat_view)
- {
+ {
curr_flat_view->addItem(new LLTeleportHistoryFlatItem(index, &mContextMenu, (*iter).mTitle));
}
@@ -553,6 +583,50 @@ void LLTeleportHistoryPanel::onAccordionTabClose(LLAccordionCtrlTab *tab)
mHistoryAccordion->arrange();
}
+void LLTeleportHistoryPanel::onExpandAllFolders()
+{
+ S32 tabs_cnt = mItemContainers.size();
+
+ for (S32 n = 0; n < tabs_cnt; n++)
+ {
+ mItemContainers.get(n)->setDisplayChildren(true);
+ }
+ mHistoryAccordion->arrange();
+}
+
+void LLTeleportHistoryPanel::onCollapseAllFolders()
+{
+ S32 tabs_cnt = mItemContainers.size();
+
+ for (S32 n = 0; n < tabs_cnt; n++)
+ {
+ mItemContainers.get(n)->setDisplayChildren(false);
+ }
+ mHistoryAccordion->arrange();
+}
+
+void LLTeleportHistoryPanel::onClearTeleportHistory()
+{
+ LLNotifications::instance().add("ConfirmClearTeleportHistory", LLSD(), LLSD(), boost::bind(&LLTeleportHistoryPanel::onClearTeleportHistoryDialog, this, _1, _2));
+}
+
+bool LLTeleportHistoryPanel::onClearTeleportHistoryDialog(const LLSD& notification, const LLSD& response)
+{
+
+ S32 option = LLNotification::getSelectedOption(notification, response);
+
+ if (0 == option)
+ {
+ LLTeleportHistoryStorage *th = LLTeleportHistoryStorage::getInstance();
+ th->purgeItems();
+ th->save();
+
+ showTeleportHistory();
+ }
+
+ return false;
+}
+
LLFlatListView* LLTeleportHistoryPanel::getFlatListViewFromTab(LLAccordionCtrlTab *tab)
{
for (child_list_const_iter_t iter = tab->beginChild(); iter != tab->endChild(); iter++)
@@ -566,3 +640,49 @@ LLFlatListView* LLTeleportHistoryPanel::getFlatListViewFromTab(LLAccordionCtrlTa
return NULL;
}
+void LLTeleportHistoryPanel::onGearButtonClicked()
+{
+ LLMenuGL* menu = (LLMenuGL*)mGearMenuHandle.get();
+ if (!menu)
+ return;
+
+ // Shows the menu at the top of the button bar.
+
+ // Calculate its coordinates.
+ LLPanel* bottom_panel = getChild<LLPanel>("bottom_panel");
+ menu->arrangeAndClear();
+ S32 menu_height = menu->getRect().getHeight();
+ S32 menu_x = -2; // *HACK: compensates HPAD in showPopup()
+ S32 menu_y = bottom_panel->getRect().mTop + menu_height;
+
+ // Actually show the menu.
+ menu->buildDrawLabels();
+ menu->updateParent(LLMenuGL::sMenuContainer);
+ LLMenuGL::showPopup(this, menu, menu_x, menu_y);
+}
+
+void LLTeleportHistoryPanel::onStarButtonCommit()
+{
+ if (!mLastSelectedScrollList)
+ return;
+
+ LLTeleportHistoryFlatItem* itemp = dynamic_cast<LLTeleportHistoryFlatItem *> (mLastSelectedScrollList->getSelectedItem());
+ if(!itemp)
+ return;
+
+ if (itemp->getIndex() < (S32)mTeleportHistory->getItems().size() - 1)
+ {
+ LLTeleportHistoryFlatItem::showPlaceInfoPanel(itemp->getIndex());
+ }
+ else
+ {
+ LLViewerInventoryItem *landmark = LLLandmarkActions::findLandmarkForGlobalPos(
+ mTeleportHistory->getItems()[itemp->getIndex()].mGlobalPos);
+
+ if (!landmark || landmark->getUUID().isNull())
+ LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark"));
+ else
+ LLTeleportHistoryFlatItem::showPlaceInfoPanel(itemp->getIndex());
+ }
+}
+
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index c4b7f995e0..f487c92836 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -52,16 +52,15 @@ public:
public:
ContextMenu();
void show(LLView* spawning_view, S32 index, S32 x, S32 y);
-
+
private:
LLContextMenu* createMenu();
void onTeleport();
void onInfo();
void onCopy();
- void onMakeLandmark();
static void gotSLURLCallback(const std::string& slurl);
-
+
LLContextMenu* mMenu;
S32 mIndex;
};
@@ -82,12 +81,21 @@ private:
void onAccordionTabRightClick(LLView *view, S32 x, S32 y, MASK mask);
void onAccordionTabOpen(LLAccordionCtrlTab *tab);
void onAccordionTabClose(LLAccordionCtrlTab *tab);
+ void onExpandAllFolders();
+ void onCollapseAllFolders();
+ void onClearTeleportHistory();
+ bool onClearTeleportHistoryDialog(const LLSD& notification, const LLSD& response);
+
void showTeleportHistory();
void handleItemSelect(LLFlatListView* );
LLFlatListView* getFlatListViewFromTab(LLAccordionCtrlTab *);
+ void onGearButtonClicked();
+ void onStarButtonCommit();
LLTeleportHistoryStorage* mTeleportHistory;
LLAccordionCtrl* mHistoryAccordion;
+ LLButton * mStarButton;
+
LLFlatListView* mLastSelectedScrollList;
std::string mFilterSubString;
@@ -96,6 +104,7 @@ private:
ContextMenu mContextMenu;
LLContextMenu* mAccordionTabMenu;
+ LLHandle<LLView> mGearMenuHandle;
};
#endif //LL_LLPANELTELEPORTHISTORY_H
diff --git a/indra/newview/lltoastpanel.cpp b/indra/newview/lltoastpanel.cpp
index 68ad043129..7b477470aa 100644
--- a/indra/newview/lltoastpanel.cpp
+++ b/indra/newview/lltoastpanel.cpp
@@ -65,7 +65,6 @@ void LLToastPanel::snapToMessageHeight(LLTextBox* message, S32 maxLineCount)
//This needed to calculate lines count according to specified text
heightDelta = maxTextHeight - oldTextHeight;
reshape( getRect().getWidth(), getRect().getHeight() + heightDelta);
- message->setValue(message->getText());
//Knowing the height is set to max allowed, getTextPixelHeight returns needed text height
//Perhaps we need to pass maxLineCount as parameter to getTextPixelHeight to avoid previous reshape.
@@ -77,7 +76,6 @@ void LLToastPanel::snapToMessageHeight(LLTextBox* message, S32 maxLineCount)
//reshape the panel with new height
reshape( getRect().getWidth(), getRect().getHeight() + heightDelta);
- message->setValue(message->getText());
}
}
diff --git a/indra/newview/llurllineeditorctrl.cpp b/indra/newview/llurllineeditorctrl.cpp
index 046b3e619b..258c3ddd75 100644
--- a/indra/newview/llurllineeditorctrl.cpp
+++ b/indra/newview/llurllineeditorctrl.cpp
@@ -38,6 +38,7 @@
#include "llurllineeditorctrl.h"
#include "llweb.h"
+#include "llslurl.h"
//Constructor
LLURLLineEditor::LLURLLineEditor(const LLLineEditor::Params& p)
@@ -87,8 +88,13 @@ void LLURLLineEditor::copyEscapedURLToClipboard()
S32 length = llabs( mSelectionStart - mSelectionEnd );
const std::string unescaped_text = wstring_to_utf8str(mText.getWString().substr(left_pos, length));
- LLWString selected_escaped_text = utf8str_to_wstring(LLWeb::escapeURL(unescaped_text));
- gClipboard.copyFromString( selected_escaped_text );
+ LLWString text_to_copy;
+ if (LLSLURL::isSLURL(unescaped_text))
+ text_to_copy = utf8str_to_wstring(LLWeb::escapeURL(unescaped_text));
+ else
+ text_to_copy = utf8str_to_wstring(unescaped_text);
+
+ gClipboard.copyFromString( text_to_copy );
}
// Makes UISndBadKeystroke sound
void LLURLLineEditor::reportBadKeystroke()
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 24f4745c18..fa82612114 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -503,6 +503,12 @@ bool toggle_show_camera_button(const LLSD& newvalue)
return true;
}
+bool toggle_show_snapshot_button(const LLSD& newvalue)
+{
+ LLBottomTray::getInstance()->showSnapshotButton(newvalue.asBoolean());
+ return true;
+}
+
bool toggle_show_navigation_panel(const LLSD& newvalue)
{
LLNavigationBar::getInstance()->showNavigationPanel(newvalue.asBoolean());
@@ -654,6 +660,7 @@ void settings_setup_listeners()
gSavedSettings.getControl("ShowGestureButton")->getSignal()->connect(boost::bind(&toggle_show_gesture_button, _2));
gSavedSettings.getControl("ShowMoveButton")->getSignal()->connect(boost::bind(&toggle_show_move_button, _2));
gSavedSettings.getControl("ShowCameraButton")->getSignal()->connect(boost::bind(&toggle_show_camera_button, _2));
+ gSavedSettings.getControl("ShowSnapshotButton")->getSignal()->connect(boost::bind(&toggle_show_snapshot_button, _2));
gSavedSettings.getControl("ShowNavbarNavigationPanel")->getSignal()->connect(boost::bind(&toggle_show_navigation_panel, _2));
gSavedSettings.getControl("ShowNavbarFavoritesPanel")->getSignal()->connect(boost::bind(&toggle_show_favorites_panel, _2));
}
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 22141011a2..fc6467ea23 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1467,6 +1467,7 @@ void LLViewerWindow::initBase()
hvp.rect(full_window);
hvp.follows.flags(FOLLOWS_ALL);
gToolTipView = LLUICtrlFactory::create<LLToolTipView>(hvp);
+ gToolTipView->setFollowsAll();
getRootView()->addChild(gToolTipView);
// Add the progress bar view (startup view), which overrides everything
@@ -1569,6 +1570,11 @@ void LLViewerWindow::initWorldUI()
LLBottomTray::getInstance()->showCameraButton(FALSE);
}
+ if (!gSavedSettings.getBOOL("ShowSnapshotButton"))
+ {
+ LLBottomTray::getInstance()->showSnapshotButton(FALSE);
+ }
+
if (!gSavedSettings.getBOOL("ShowMoveButton"))
{
LLBottomTray::getInstance()->showMoveButton(FALSE);
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index a233f7f0fa..0921ccfb95 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -62,7 +62,7 @@
width="195"
word_wrap="true">
</text_editor>
- <line_editor name="chat_editor" height="20" layout="topleft" width="190">
+ <line_editor follows="left|right" name="chat_editor" height="20" layout="topleft" width="190">
</line_editor>
</layout_panel>
</layout_stack>
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 65235da8d5..2790a12a36 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -50,6 +50,7 @@
follows="left|bottom"
height="25"
image_selected="Movement_TurnLeft_On"
+ image_pressed_selected="Movement_TurnLeft_On"
image_unselected="Movement_TurnLeft_Off"
layout="topleft"
left="17"
@@ -63,6 +64,7 @@
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"
@@ -76,6 +78,7 @@
follows="left|bottom"
height="25"
image_selected="Movement_Up_On"
+ image_pressed_selected="Movement_Up_On"
image_unselected="Movement_Up_Off"
layout="topleft"
left="10"
@@ -89,6 +92,7 @@
follows="left|bottom"
height="25"
image_selected="Movement_Down_On"
+ image_pressed_selected="Movement_Down_On"
image_unselected="Movement_Down_Off"
layout="topleft"
left_pad="45"
@@ -102,6 +106,7 @@
follows="left|bottom"
height="25"
image_selected="Movement_Forward_On"
+ image_pressed_selected="Movement_Forward_On"
image_unselected="Movement_Forward_Off"
layout="topleft"
left="46"
@@ -116,6 +121,7 @@
follows="left|bottom"
height="25"
image_selected="Movement_Backward_On"
+ image_pressed_selected="Movement_Backward_On"
image_unselected="Movement_Backward_Off"
layout="topleft"
left_delta="0"
diff --git a/indra/newview/skins/default/xui/en/menu_bottomtray.xml b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
index e98920f8c2..a7abb223ba 100644
--- a/indra/newview/skins/default/xui/en/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
@@ -31,7 +31,7 @@
parameter="ShowMoveButton" />
</menu_item_check>
<menu_item_check
- label="Camera button"
+ label="View button"
layout="topleft"
name="ShowCameraButton">
<menu_item_check.on_click
@@ -41,4 +41,15 @@
function="CheckControl"
parameter="ShowCameraButton" />
</menu_item_check>
+ <menu_item_check
+ label="Snapshot button"
+ layout="topleft"
+ name="ShowSnapshotButton">
+ <menu_item_check.on_click
+ function="ToggleControl"
+ parameter="ShowSnapshotButton" />
+ <menu_item_check.on_check
+ function="CheckControl"
+ parameter="ShowSnapshotButton" />
+ </menu_item_check>
</menu>
diff --git a/indra/newview/skins/default/xui/en/menu_favorites.xml b/indra/newview/skins/default/xui/en/menu_favorites.xml
index 951cf63c76..92c9935721 100644
--- a/indra/newview/skins/default/xui/en/menu_favorites.xml
+++ b/indra/newview/skins/default/xui/en/menu_favorites.xml
@@ -55,6 +55,9 @@
<menu_item_call.on_click
function="Favorites.DoToSelected"
parameter="paste" />
+ <menu_item_call.on_enable
+ function="Favorites.EnableSelected"
+ parameter="can_paste" />
</menu_item_call>
<menu_item_separator
diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml
new file mode 100644
index 0000000000..6768d7fccb
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<menu
+ name="Teleport History Gear Context Menu"
+ left="0"
+ bottom="0"
+ visible="false"
+ mouse_opaque="false"
+ opaque="true"
+ color="MenuDefaultBgColor"
+ drop_shadow="true" >
+ <menu_item_call
+ label="Expand all folders"
+ name="Expand all folders">
+ <menu_item_call.on_click
+ function="TeleportHistory.ExpandAllFolders" />
+ </menu_item_call>
+ <menu_item_call
+ label="Collapse all folders"
+ name="Collapse all folders">
+ <menu_item_call.on_click
+ function="TeleportHistory.CollapseAllFolders" />
+ </menu_item_call>
+ <menu_item_separator layout="topleft" />
+ <menu_item_call
+ label="Clear Teleport History"
+ name="Clear Teleport History">
+ <menu_item_call.on_click
+ function="TeleportHistory.ClearTeleportHistory" />
+ </menu_item_call>
+</menu>
diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml
index d9cba27b88..515278c23d 100644
--- a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml
@@ -23,11 +23,4 @@
<menu_item_call.on_click
function="TeleportHistory.Copy" />
</menu_item_call>
- <menu_item_call
- label="Make Landmark"
- layout="topleft"
- name="Make Landmark">
- <menu_item_call.on_click
- function="TeleportHistory.MakeLandmark" />
- </menu_item_call>
</context_menu>
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 466824a974..117fb226be 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -6523,6 +6523,17 @@ Server Error: Media update or get failed.
yestext="OK"/>
</notification>
+ <notification
+ icon="alertmodal.tga"
+ name="ConfirmClearTeleportHistory"
+ type="alertmodal">
+Are you sure you want to delete teleport history?
+ <usetemplate
+ name="okcancelbuttons"
+ notext="Cancel"
+ yestext="OK"/>
+ </notification>
+
<global name="UnsupportedCPU">
- Your CPU speed does not meet the minimum requirements.
</global>
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index cd7e340ff1..72869a3197 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -105,10 +105,10 @@
height="28"
layout="topleft"
min_height="28"
- min_width="150"
+ min_width="100"
name="cam_panel"
top_delta="-10"
- width="150">
+ width="100">
<button
follows="right"
height="20"
@@ -140,11 +140,24 @@
parameter="camera_presets"
/>
</button>
+ </layout_panel>
+ <layout_panel
+ mouse_opaque="false"
+ auto_resize="false"
+ follows="right"
+ height="28"
+ layout="topleft"
+ min_height="28"
+ min_width="35"
+ name="snapshot_panel"
+ top_delta="-10"
+ width="35">
<split_button
arrow_position="right"
follows="right"
height="18"
- left_pad="4"
+ left="0"
+ layout="topleft"
name="snapshots"
top="6"
width="35">
@@ -160,19 +173,8 @@
image_unselected="camera_presets/camera_presets_snapshot.png"
name="snapshot"
tool_tip="Take Snapshot" />
- </split_button>
+ </split_button>
</layout_panel>
- <icon
- auto_resize="false"
- color="0 0 0 0"
- follows="left|right"
- height="10"
- image_name="spacer24.tga"
- layout="topleft"
- left="0"
- name="DUMMY"
- top="0"
- width="5"/>
<layout_panel
mouse_opaque="false"
follows="left|right"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index b9a01d80f9..453e1319a6 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -2,13 +2,13 @@
<panel
background_visible="true"
bevel_style="in"
- height="420"
+ height="570"
label="Edit Pick"
layout="topleft"
left="0"
name="panel_edit_pick"
top="0"
- width="255">
+ width="333">
<text
type="string"
length="1"
@@ -36,34 +36,26 @@
<scroll_container
color="DkGray2"
follows="left|top|right|bottom"
- height="300"
+ height="470"
layout="topleft"
- left="0"
+ left="10"
+ top_pad="10"
name="profile_scroll"
reserve_scroll_corner="true"
opaque="true"
- width="255">
+ width="313">
<panel
name="scroll_content_panel"
follows="left|top|right"
layout="topleft"
top="0"
left="0"
- width="240"
- height="575">
- <panel
- background_visible="true"
- bg_alpha_color="DkGray2"
- width="220"
- follows="left|right|top|bottom"
- height="560"
- layout="topleft"
- left="0"
- top="0">
+ width="298"
+ height="555">
<texture_picker
follows="left|top|right"
- height="190"
- width="220"
+ height="197"
+ width="280"
layout="topleft"
top="20"
left="10"
@@ -101,7 +93,7 @@
max_length="63"
name="pick_name"
text_color="black"
- width="220" />
+ width="280" />
<text
type="string"
length="1"
@@ -119,7 +111,8 @@
<text_editor
follows="left|top|right"
height="100"
- width="220"
+ width="280"
+ hide_scrollbar="false"
layout="topleft"
left="10"
top_pad="2"
@@ -152,7 +145,7 @@
right="-10"
top_pad="2"
text_color="white"
- width="250"
+ width="280"
word_wrap="true">
loading...
</text>
@@ -165,7 +158,6 @@
name="set_to_curr_location_btn"
width="200" />
</panel>
- </panel>
</scroll_container>
<panel
follows="left|right|bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml
index 7db1b9e916..00ede1fb2c 100644
--- a/indra/newview/skins/default/xui/en/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml
@@ -80,7 +80,8 @@
use_ellipses="true"
value="MESSAGE"
width="330"
- word_wrap="true" />
+ word_wrap="true"
+ max_length="350" />
<button
follows="bottom"
font="SansSerifBigBold"
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 9edd14ce49..7d5ae3d78a 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -31,8 +31,8 @@
<scroll_container
color="DkGray2"
opaque="true"
- follows="left|top|bottom"
- height="490"
+ follows="all"
+ height="470"
layout="topleft"
left="10"
top_pad="10"
@@ -41,14 +41,14 @@
width="313">
<panel
name="scroll_content_panel"
- follows="left|top|right|bottom"
+ follows="left|top"
min_height="300"
layout="topleft"
top="0"
background_visible="false"
- height="488"
+ height="470"
left="0"
- width="311">
+ width="295">
<texture_picker
enabled="false"
follows="left|top"
@@ -57,11 +57,11 @@
left="10"
name="pick_snapshot"
top="20"
- width="290" />
+ width="280" />
<text
follows="left|top|right"
height="20"
- width="291"
+ width="280"
layout="topleft"
font="SansSerifBig"
font.style="BOLD"
@@ -77,16 +77,16 @@
layout="topleft"
left="10"
name="pick_location"
- width="291"
+ width="280"
word_wrap="true"
value="[loading...]" />
<text
follows="left|top|right"
- height="400"
+ height="280"
layout="topleft"
left="10"
name="pick_desc"
- width="290"
+ width="280"
value="[description]"
word_wrap="true" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 696e0b3c33..1761c80a39 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -60,7 +60,7 @@
left="5"
name="teleport_btn"
top="0"
- width="70" />
+ width="77" />
<button
follows="bottom|left"
font="SansSerifSmallBold"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 9cf699ad46..78aff64216 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -312,7 +312,7 @@
name="teleport"
left_pad="0"
top="0"
- width="75" />
+ width="77" />
</panel>
<panel
follows="bottom|left"
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
index aa95a2baef..b0cd75117f 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
@@ -1,16 +1,24 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel name="Teleport History" bottom="0" height="326" left="0" width="380"
border="true" follows="left|top|right|bottom">
+ <string
+ name="cant_create_lm_here"
+ value="Please teleport to selected location before creating Landmark. " />
+ <string
+ name="create_landmark"
+ value="Create Landmark" />
+ <string
+ name="open_landmark"
+ value="Open Landmark panel" />
<accordion
follows="left|top|right|bottom"
- height="326"
+ height="300"
layout="topleft"
left="0"
top="0"
name="history_accordion"
width="380">
-
- <accordion_tab
+ <accordion_tab
can_resize="false"
layout="topleft"
name="today"
@@ -24,9 +32,8 @@
name="today_items"
top="0"
width="380">
- </flat_list_view>
- </accordion_tab>
-
+ </flat_list_view>
+ </accordion_tab>
<accordion_tab
can_resize="false"
layout="topleft"
@@ -41,9 +48,8 @@
name="yesterday_items"
top="0"
width="380">
- </flat_list_view>
- </accordion_tab>
-
+ </flat_list_view>
+ </accordion_tab>
<accordion_tab
can_resize="false"
layout="topleft"
@@ -58,9 +64,8 @@
name="2_days_ago"
top="0"
width="380">
- </flat_list_view>
- </accordion_tab>
-
+ </flat_list_view>
+ </accordion_tab>
<accordion_tab
can_resize="false"
layout="topleft"
@@ -75,9 +80,8 @@
name="3_days_ago"
top="0"
width="380">
- </flat_list_view>
- </accordion_tab>
-
+ </flat_list_view>
+ </accordion_tab>
<accordion_tab
can_resize="false"
layout="topleft"
@@ -92,9 +96,8 @@
name="4_days_ago"
top="0"
width="380">
- </flat_list_view>
- </accordion_tab>
-
+ </flat_list_view>
+ </accordion_tab>
<accordion_tab
can_resize="false"
layout="topleft"
@@ -109,9 +112,8 @@
name="5_days_ago_items"
top="0"
width="380">
- </flat_list_view>
- </accordion_tab>
-
+ </flat_list_view>
+ </accordion_tab>
<accordion_tab
can_resize="false"
layout="topleft"
@@ -126,9 +128,8 @@
name="6_days_and_older_items"
top="0"
width="380">
- </flat_list_view>
- </accordion_tab>
-
+ </flat_list_view>
+ </accordion_tab>
<accordion_tab
can_resize="false"
layout="topleft"
@@ -143,9 +144,8 @@
name="1_month_and_older_items"
top="0"
width="380">
- </flat_list_view>
- </accordion_tab>
-
+ </flat_list_view>
+ </accordion_tab>
<accordion_tab
can_resize="false"
layout="topleft"
@@ -160,7 +160,47 @@
name="6_months_and_older_items"
top="0"
width="380">
- </flat_list_view>
- </accordion_tab>
+ </flat_list_view>
+ </accordion_tab>
</accordion>
+ <panel
+ background_visible="true"
+ bevel_style="none"
+ top_pad="0"
+ follows="left|right|bottom"
+ height="30"
+ label="bottom_panel"
+ layout="topleft"
+ left="0"
+ name="bottom_panel"
+ width="380">
+ <button
+ follows="bottom|left"
+ font="SansSerifBigBold"
+ tool_tip=""
+ height="18"
+ image_disabled="OptionsMenu_Disabled"
+ image_selected="OptionsMenu_Press"
+ image_unselected="OptionsMenu_Off"
+ layout="topleft"
+ left="10"
+ name="gear_btn"
+ picture_style="true"
+ top="5"
+ width="18" />
+ <button
+ follows="bottom|left"
+ font="SansSerifBigBold"
+ height="18"
+ image_selected="Favorite_Star_Active"
+ image_disabled="Favorite_Star_Off"
+ image_unselected="Favorite_Star_Press"
+ layout="topleft"
+ left_pad="5"
+ name="star_btn"
+ picture_style="true"
+ tool_tip=""
+ top_delta="0"
+ width="18" />
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index d124a4cdfa..44875e9a25 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2887,6 +2887,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
<string name="no_ability_error">
You do not have that ability.
</string>
+ <string name="no_ability">
+ You do not have that ability.
+ </string>
<string name="not_a_mod_error">
You are not a session moderator.
</string>