diff options
author | Steven Bennetts <steve@lindenlab.com> | 2009-10-09 00:42:36 +0000 |
---|---|---|
committer | Steven Bennetts <steve@lindenlab.com> | 2009-10-09 00:42:36 +0000 |
commit | 81e0fb43caa27491fa18b17d6a05cafb0e20dfa6 (patch) | |
tree | aea6b59f47a56255ab01c0b814650b943170847e /indra | |
parent | 4c89e7389383e2943334ad8ec185b8935cbe7db8 (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')
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> |