diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/newview/app_settings/static_data.db2 | bin | 0 -> 576578 bytes | |||
| -rw-r--r-- | indra/newview/app_settings/static_index.db2 | bin | 0 -> 9894 bytes | |||
| -rw-r--r-- | indra/newview/llagentcamera.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llappearancemgr.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llinventorybridge.cpp | 146 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_tools.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 1 | 
9 files changed, 113 insertions, 58 deletions
| diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 92f701551b..65502209f7 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1321,8 +1321,6 @@ set(viewer_APPSETTINGS_FILES      ${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg      ) -use_prebuilt_binary(artwork-common) -  source_group("App Settings" FILES ${viewer_APPSETTINGS_FILES})  set_source_files_properties(${viewer_APPSETTINGS_FILES} diff --git a/indra/newview/app_settings/static_data.db2 b/indra/newview/app_settings/static_data.db2Binary files differ new file mode 100644 index 0000000000..f85aa81601 --- /dev/null +++ b/indra/newview/app_settings/static_data.db2 diff --git a/indra/newview/app_settings/static_index.db2 b/indra/newview/app_settings/static_index.db2Binary files differ new file mode 100644 index 0000000000..a5440f96f2 --- /dev/null +++ b/indra/newview/app_settings/static_index.db2 diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index ec3c7452e5..c70bbb985f 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2310,6 +2310,7 @@ void LLAgentCamera::changeCameraToCustomizeAvatar()  				setAnimationDuration(turn_motion->getDuration() + CUSTOMIZE_AVATAR_CAMERA_ANIM_SLOP);  			} +			gAgentAvatarp->invalidateAll();  			gAgentAvatarp->updateMeshTextures();  		}  	} diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 17efc28a6a..f8cff42412 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -989,16 +989,15 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up  			{  				removeCOFItemLinks(gAgentWearables.getWearableItemID(item_to_wear->getWearableType(), wearable_count-1), false);  			} +			addCOFItemLink(item_to_wear, do_update);  		}  +		break;  	case LLAssetType::AT_BODYPART:  		// TODO: investigate wearables may not be loaded at this point EXT-8231  		// Remove the existing wearables of the same type.  		// Remove existing body parts anyway because we must not be able to wear e.g. two skins. -		if (item_to_wear->getType() == LLAssetType::AT_BODYPART) -		{ -			removeCOFLinksOfType(item_to_wear->getWearableType(), false); -		} +		removeCOFLinksOfType(item_to_wear->getWearableType(), false);  		addCOFItemLink(item_to_wear, do_update);  		break; diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 735e14de9e..3350497326 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2617,11 +2617,6 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  			gInventory.addObserver(fetch);  		}  	} -	else -	{ -		mItems.push_back(std::string("--no options--")); -		mDisabledItems.push_back(std::string("--no options--")); -	}  	// Preemptively disable system folder removal if more than one item selected.  	if ((flags & FIRST_SELECTED_ITEM) == 0) @@ -2635,6 +2630,12 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		mDisabledItems.push_back(std::string("Share"));  	} +	if (mItems.empty()) +	{ +		mItems.push_back(std::string("--no options--")); +		mDisabledItems.push_back(std::string("--no options--")); +	} +  	hide_context_entries(menu, mItems, mDisabledItems);  } @@ -2847,6 +2848,9 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response  	return false;  } +// This is used both for testing whether an item can be dropped +// into the folder, as well as performing the actual drop, depending +// if drop == TRUE.  BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  										BOOL drop)  { @@ -2866,8 +2870,23 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  	LLViewerObject* object = NULL;  	if(LLToolDragAndDrop::SOURCE_AGENT == source)  	{ +		const LLUUID &trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); +		const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); +		const LLUUID& favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + +		const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id); +		const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); +		const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); +		const BOOL move_is_outof_current_outfit = LLAppearanceMgr::instance().getIsInCOF(inv_item->getUUID()); +		const BOOL folder_allows_reorder = (mUUID == favorites_id); + +		//-------------------------------------------------------------------------------- +		// Determine if item can be moved. +		// +  		BOOL is_movable = TRUE; -		switch( inv_item->getActualType() ) + +		switch (inv_item->getActualType())  		{  			case LLAssetType::AT_CATEGORY:  				is_movable = !LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)inv_item)->getPreferredType()); @@ -2875,41 +2894,50 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  			default:  				break;  		} - -		const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); -		const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id); -		const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); -		const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); -		const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); -		const BOOL move_is_outof_current_outfit = LLAppearanceMgr::instance().getIsInCOF(inv_item->getUUID()); -  		// Can't explicitly drag things out of the COF.  		if (move_is_outof_current_outfit)  		{  			is_movable = FALSE;  		} -		 -		if(is_movable && move_is_into_trash) +		if (move_is_into_trash)  		{ -			is_movable = inv_item->getIsLinkType() || !get_is_item_worn(inv_item->getUUID()); +			is_movable &= inv_item->getIsLinkType() || !get_is_item_worn(inv_item->getUUID());  		} - -		if ( is_movable ) +		if (is_movable)  		{  			// Don't allow creating duplicates in the Calling Card/Friends  			// subfolders, see bug EXT-1599. Check is item direct descendent  			// of target folder and forbid item's movement if it so.  			// Note: isItemDirectDescendentOfCategory checks if  			// passed category is in the Calling Card/Friends folder -			is_movable = ! LLFriendCardsManager::instance() -				.isObjDirectDescendentOfCategory (inv_item, getCategory()); +			is_movable &= !LLFriendCardsManager::instance().isObjDirectDescendentOfCategory(inv_item, getCategory()); +		} + +		//  +		//-------------------------------------------------------------------------------- +		 +		//-------------------------------------------------------------------------------- +		// Determine if item can be moved & dropped +		// + +		accept = TRUE; + +		if (!is_movable)  +			accept = FALSE; +		if ((mUUID == inv_item->getParentUUID()) && !folder_allows_reorder) +			accept = FALSE; +		if (move_is_into_current_outfit || move_is_into_outfit) +		{ +			if ((inv_item->getInventoryType() != LLInventoryType::IT_WEARABLE) && +				(inv_item->getInventoryType() != LLInventoryType::IT_GESTURE) && +				(inv_item->getInventoryType() != LLInventoryType::IT_OBJECT)) +				accept = FALSE; +		} +		if (move_is_into_current_outfit && get_is_item_worn(inv_item->getUUID())) +		{ +			accept = FALSE;  		} -		const LLUUID& favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE); -		const BOOL folder_allows_reorder = (mUUID == favorites_id); -	    -		// we can move item inside a folder only if this folder is Favorites. See EXT-719 -		accept = is_movable && ((mUUID != inv_item->getParentUUID()) || folder_allows_reorder);  		if(accept && drop)  		{  			if (inv_item->getType() == LLAssetType::AT_GESTURE @@ -2917,10 +2945,8 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  			{  				LLGestureMgr::instance().deactivateGesture(inv_item->getUUID());  			} -			// If an item is being dragged between windows, unselect -			// everything in the active window so that we don't follow -			// the selection to its new location (which is very -			// annoying). +			// If an item is being dragged between windows, unselect everything in the active window  +			// so that we don't follow the selection to its new location (which is very annoying).  			LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);  			if (active_panel)  			{ @@ -2931,7 +2957,12 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  				}  			} -			// if dragging from/into favorites folder only reorder items +			//-------------------------------------------------------------------------------- +			// Destination folder logic +			//  + +			// REORDER +			// (only reorder the item)  			if ((mUUID == inv_item->getParentUUID()) && folder_allows_reorder)  			{  				LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get()); @@ -2943,7 +2974,10 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  					gInventory.rearrangeFavoriteLandmarks(srcItemId, destItemId);  				}  			} -			else if (favorites_id == mUUID) // if target is the favorites folder we use copy + +			// FAVORITES folder +			// (copy the item) +			else if (favorites_id == mUUID)  			{  				// use callback to rearrange favorite landmarks after adding  				// to have new one placed before target (on which it was dropped). See EXT-4312. @@ -2963,38 +2997,50 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  					std::string(),  					cb);  			} +			// CURRENT OUTFIT or OUTFIT folder +			// (link the item)  			else if (move_is_into_current_outfit || move_is_into_outfit)  			{ -				// BAP - should skip if dup. -				if (move_is_into_current_outfit) -				{ -					LLAppearanceMgr::instance().addCOFItemLink(inv_item); -				} -				else +				if ((inv_item->getInventoryType() == LLInventoryType::IT_WEARABLE) ||  +					(inv_item->getInventoryType() == LLInventoryType::IT_GESTURE) ||  +					(inv_item->getInventoryType() == LLInventoryType::IT_OBJECT))  				{ -					LLPointer<LLInventoryCallback> cb = NULL; -					link_inventory_item( -						gAgent.getID(), -						inv_item->getLinkedUUID(), -						mUUID, -						inv_item->getName(), -						inv_item->getDescription(), -						LLAssetType::AT_LINK, -						cb); +					// BAP - should skip if dup. +					if (move_is_into_current_outfit) +					{ +						LLAppearanceMgr::instance().addCOFItemLink(inv_item); +					} +					else +					{ +						LLPointer<LLInventoryCallback> cb = NULL; +						link_inventory_item( +							gAgent.getID(), +							inv_item->getLinkedUUID(), +							mUUID, +							inv_item->getName(), +							inv_item->getDescription(), +							LLAssetType::AT_LINK, +							cb); +					}  				}  			} +			// NORMAL or TRASH folder +			// (move the item, restamp if into trash)  			else  			{ -				// restamp if the move is into the trash.  				LLInvFVBridge::changeItemParent(  					model,  					(LLViewerInventoryItem*)inv_item,  					mUUID,  					move_is_into_trash);  			} + +			//  +			//-------------------------------------------------------------------------------- +  		}  	} -	else if(LLToolDragAndDrop::SOURCE_WORLD == source) +	else if (LLToolDragAndDrop::SOURCE_WORLD == source)  	{  		// Make sure the object exists. If we allowed dragging from  		// anonymous objects, it would be possible to bypass @@ -3012,7 +3058,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  		BOOL is_move = FALSE;  		if((perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID())  			&& perm.allowTransferTo(gAgent.getID()))) -//		   || gAgent.isGodlike()) +			// || gAgent.isGodlike())  		{  			accept = TRUE; diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 9027caa4ce..9a2866832a 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -762,7 +762,17 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  	// Coordinates of objects on simulators are region-local.  	U64 region_handle;  	mesgsys->getU64Fast(_PREHASH_RegionData, _PREHASH_RegionHandle, region_handle); -	mRegionp = LLWorld::getInstance()->getRegionFromHandle(region_handle); +	 +	{ +		LLViewerRegion* regionp = LLWorld::getInstance()->getRegionFromHandle(region_handle); +		if(regionp != mRegionp && regionp && mRegionp) +		{ +			LLVector3 delta_pos =  mRegionp->getOriginAgent() - regionp->getOriginAgent(); +			setPosition(getPosition() + delta_pos) ; //update the region position immediately.		 +		} +		mRegionp = regionp ; +	}	 +	  	if (!mRegionp)  	{  		U32 x, y; diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 34c1b25f8c..194a93977f 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -823,7 +823,7 @@               height="10"               left="10"               name="Name:" -             top="0" +             top="5"               width="90">                  Name:              </text> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index f7611b6833..1e8d0d2fe5 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2159,6 +2159,7 @@ Clears (deletes) the media and all params from the given face.  	<string name="ATTACH_HUD_BOTTOM_LEFT">HUD Bottom Left</string>  	<string name="ATTACH_HUD_BOTTOM">HUD Bottom</string>  	<string name="ATTACH_HUD_BOTTOM_RIGHT">HUD Bottom Right</string> +	<string name="Bad attachment point">Invalid Attachment Point</string>  	<!-- script editor -->  	<string name="CursorPos">Line [LINE], Column [COLUMN]</string> | 
