diff options
Diffstat (limited to 'indra/newview')
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>  | 
