diff options
| author | Leyla Farazha <leyla@lindenlab.com> | 2011-06-22 16:18:23 -0700 | 
|---|---|---|
| committer | Leyla Farazha <leyla@lindenlab.com> | 2011-06-22 16:18:23 -0700 | 
| commit | b84881382b265a7e4fad1b03dfb935992880ce70 (patch) | |
| tree | 2be1dc98b3c29e4745c79f6c0c6134a9598498a1 | |
| parent | 5999574c106d0d2566d191c754f6a630d8407787 (diff) | |
| parent | 4267014b146798cabe96568b2091c6bb2dd2b294 (diff) | |
merge and fixing linux build issues
| -rw-r--r-- | indra/llui/llbadge.cpp | 4 | ||||
| -rw-r--r-- | indra/llui/lllayoutstack.cpp | 97 | ||||
| -rw-r--r-- | indra/llui/lllayoutstack.h | 34 | ||||
| -rw-r--r-- | indra/newview/llinventorybridge.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/llinventorypanel.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llsidepanelinventory.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/sidepanel_inventory.xml | 4 | 
7 files changed, 104 insertions, 64 deletions
diff --git a/indra/llui/llbadge.cpp b/indra/llui/llbadge.cpp index 53db226b20..c28a947a7f 100644 --- a/indra/llui/llbadge.cpp +++ b/indra/llui/llbadge.cpp @@ -221,11 +221,11 @@ void LLBadge::draw()  				F32 badge_x = badge_center_x - badge_width * 0.5f;  				F32 badge_y = badge_center_y - badge_height * 0.5f; -				mImage->drawSolid(badge_x, badge_y, badge_width, badge_height, mImageColor % alpha); +				mImage->drawSolid((S32) badge_x, (S32) badge_y, (S32) badge_width, (S32) badge_height, mImageColor % alpha);  				if (!mBorderImage.isNull())  				{ -					mBorderImage->drawSolid(badge_x, badge_y, badge_width, badge_height, mBorderColor % alpha); +					mBorderImage->drawSolid((S32) badge_x, (S32) badge_y, (S32) badge_width, (S32) badge_height, mBorderColor % alpha);  				}  			}  			else diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 8a92796942..d87ee428aa 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -49,6 +49,8 @@ void LLLayoutStack::OrientationNames::declareValues()  //  LLLayoutPanel::LLLayoutPanel(const Params& p)	  :	LLPanel(p), +	mExpandedMinDimSpecified(false), +	mExpandedMinDim(p.min_dim),   	mMinDim(p.min_dim),    	mMaxDim(p.max_dim),    	mAutoResize(p.auto_resize), @@ -58,6 +60,13 @@ LLLayoutPanel::LLLayoutPanel(const Params& p)  	mVisibleAmt(1.f), // default to fully visible  	mResizeBar(NULL)   { +	// Set the expanded min dim if it is provided, otherwise it gets the p.min_dim value +	if (p.expanded_min_dim.isProvided()) +	{ +		mExpandedMinDimSpecified = true; +		mExpandedMinDim = p.expanded_min_dim(); +	} +	  	// panels initialized as hidden should not start out partially visible  	if (!getVisible())  	{ @@ -84,13 +93,13 @@ F32 LLLayoutPanel::getCollapseFactor(LLLayoutStack::ELayoutOrientation orientati  	if (orientation == LLLayoutStack::HORIZONTAL)  	{  		F32 collapse_amt =  -			clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, (F32)mMinDim / (F32)llmax(1, getRect().getWidth())); +			clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, getRelevantMinDim() / (F32)llmax(1, getRect().getWidth()));  		return mVisibleAmt * collapse_amt;  	}  	else  	{  		F32 collapse_amt =  -			clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, llmin(1.f, (F32)mMinDim / (F32)llmax(1, getRect().getHeight()))); +			clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, llmin(1.f, getRelevantMinDim() / (F32)llmax(1, getRect().getHeight())));  		return mVisibleAmt * collapse_amt;  	}  } @@ -281,9 +290,9 @@ bool LLLayoutStack::getPanelMinSize(const std::string& panel_name, S32* min_dimp  {  	LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name); -	if (panel) +	if (panel && min_dimp)  	{ -		if (min_dimp) *min_dimp = panel->mMinDim; +		*min_dimp = panel->getRelevantMinDim();  	}  	return NULL != panel; @@ -316,7 +325,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  	e_panel_list_t::iterator panel_it;  	for (panel_it = mPanels.begin(); panel_it != mPanels.end();	++panel_it)  	{ -		LLPanel* panelp = (*panel_it); +		LLLayoutPanel* panelp = (*panel_it);  		if (panelp->getVisible())   		{  			if (mAnimate) @@ -366,9 +375,9 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  		if (mOrientation == HORIZONTAL)  		{  			// enforce minimize size constraint by default -			if (panelp->getRect().getWidth() < (*panel_it)->mMinDim) +			if (panelp->getRect().getWidth() < (*panel_it)->getRelevantMinDim())  			{ -				panelp->reshape((*panel_it)->mMinDim, panelp->getRect().getHeight()); +				panelp->reshape((*panel_it)->getRelevantMinDim(), panelp->getRect().getHeight());  			}          	total_width += llround(panelp->getRect().getWidth() * (*panel_it)->getCollapseFactor(mOrientation));          	// want n-1 panel gaps for n panels @@ -380,9 +389,9 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  		else //VERTICAL  		{  			// enforce minimize size constraint by default -			if (panelp->getRect().getHeight() < (*panel_it)->mMinDim) +			if (panelp->getRect().getHeight() < (*panel_it)->getRelevantMinDim())  			{ -				panelp->reshape(panelp->getRect().getWidth(), (*panel_it)->mMinDim); +				panelp->reshape(panelp->getRect().getWidth(), (*panel_it)->getRelevantMinDim());  			}  			total_height += llround(panelp->getRect().getHeight() * (*panel_it)->getCollapseFactor(mOrientation));  			if (panel_it != mPanels.begin()) @@ -409,28 +418,20 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  			|| (!(*panel_it)->mAutoResize   				&& !force_resize))  		{ -			if (mOrientation == HORIZONTAL) -			{ -				shrink_headroom_total += (*panel_it)->getRect().getWidth() - (*panel_it)->mMinDim; -			} -			else //VERTICAL -			{ -				shrink_headroom_total += (*panel_it)->getRect().getHeight() - (*panel_it)->mMinDim; -			} +			S32 relevant_dimension = (mOrientation == HORIZONTAL) ? (*panel_it)->getRect().getWidth() : (*panel_it)->getRect().getHeight(); +			F32 relevant_min = ((*panel_it)->mCollapsed ? (*panel_it)->getRelevantMinDim() : (*panel_it)->mExpandedMinDim); +			 +			shrink_headroom_total += relevant_dimension - relevant_min;  		}  		else  		{  			num_resizable_panels++; -			if (mOrientation == HORIZONTAL) -			{ -				shrink_headroom_available += (*panel_it)->getRect().getWidth() - (*panel_it)->mMinDim; -				shrink_headroom_total += (*panel_it)->getRect().getWidth() - (*panel_it)->mMinDim; -			} -			else //VERTICAL -			{ -				shrink_headroom_available += (*panel_it)->getRect().getHeight() - (*panel_it)->mMinDim; -				shrink_headroom_total += (*panel_it)->getRect().getHeight() - (*panel_it)->mMinDim; -			} + +			S32 relevant_dimension = (mOrientation == HORIZONTAL) ? (*panel_it)->getRect().getWidth() : (*panel_it)->getRect().getHeight(); +			F32 relevant_min = ((*panel_it)->mCollapsed ? (*panel_it)->getRelevantMinDim() : (*panel_it)->mExpandedMinDim); +			 +			shrink_headroom_available += relevant_dimension - relevant_min; +			shrink_headroom_total += relevant_dimension - relevant_min;  		}  	} @@ -452,27 +453,28 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)  	{ -		LLPanel* panelp = (*panel_it); +		LLLayoutPanel* panelp = (*panel_it);  		S32 cur_width = panelp->getRect().getWidth();  		S32 cur_height = panelp->getRect().getHeight();  		S32 new_width = cur_width; -		S32 new_height = cur_height;  +		S32 new_height = cur_height; +		S32 relevant_min = (S32) panelp->getRelevantMinDim();  		if (mOrientation == HORIZONTAL)  		{ -			new_width = llmax((*panel_it)->mMinDim, new_width); +			new_width = llmax(relevant_min, new_width);  		}  		else  		{ -			new_height = llmax((*panel_it)->mMinDim, new_height); +			new_height = llmax(relevant_min, new_height);  		}  		S32 delta_size = 0;  		// if panel can automatically resize (not animating, and resize flag set)... -		if ((*panel_it)->getCollapseFactor(mOrientation) == 1.f  -			&& (force_resize || (*panel_it)->mAutoResize)  -			&& !(*panel_it)->mResizeBar->hasMouseCapture())  +		if (panelp->getCollapseFactor(mOrientation) == 1.f  +			&& (force_resize || panelp->mAutoResize)  +			&& !panelp->mResizeBar->hasMouseCapture())   		{  			if (mOrientation == HORIZONTAL)  			{ @@ -481,8 +483,8 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  				{  					// shrink proportionally to amount over minimum  					// so we can do this in one pass -					delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_width - (*panel_it)->mMinDim) / (F32)shrink_headroom_available)) : 0; -					shrink_headroom_available -= (cur_width - (*panel_it)->mMinDim); +					delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_width - panelp->getRelevantMinDim()) / (F32)shrink_headroom_available)) : 0; +					shrink_headroom_available -= (cur_width - relevant_min);  				}  				else  				{ @@ -491,7 +493,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  					num_resizable_panels--;  				}  				pixels_to_distribute -= delta_size; -				new_width = llmax((*panel_it)->mMinDim, cur_width + delta_size); +				new_width = llmax(relevant_min, cur_width + delta_size);  			}  			else  			{ @@ -504,8 +506,8 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  				{  					// shrink proportionally to amount over minimum  					// so we can do this in one pass -					delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_height - (*panel_it)->mMinDim) / (F32)shrink_headroom_available)) : 0; -					shrink_headroom_available -= (cur_height - (*panel_it)->mMinDim); +					delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_height - relevant_min) / (F32)shrink_headroom_available)) : 0; +					shrink_headroom_available -= (cur_height - relevant_min);  				}  				else  				{ @@ -513,7 +515,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  					num_resizable_panels--;  				}  				pixels_to_distribute -= delta_size; -				new_height = llmax((*panel_it)->mMinDim, cur_height + delta_size); +				new_height = llmax(relevant_min, cur_height + delta_size);  			}  			else  			{ @@ -566,19 +568,20 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  	LLLayoutPanel* last_resizeable_panel = NULL;  	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)  	{ -		LLPanel* panelp = (*panel_it); +		LLLayoutPanel* panelp = (*panel_it); +		F32 relevant_min = panelp->getRelevantMinDim();  		if (mOrientation == HORIZONTAL)  		{  			(*panel_it)->mResizeBar->setResizeLimits( -				(*panel_it)->mMinDim,  -				(*panel_it)->mMinDim + shrink_headroom_total); +				relevant_min,  +				relevant_min + shrink_headroom_total);  		}  		else //VERTICAL  		{  			(*panel_it)->mResizeBar->setResizeLimits( -				(*panel_it)->mMinDim,  -				(*panel_it)->mMinDim + shrink_headroom_total); +				relevant_min,  +				relevant_min + shrink_headroom_total);  		}  		// toggle resize bars based on panel visibility, resizability, etc @@ -658,7 +661,7 @@ void LLLayoutStack::calcMinExtents()  	{  		if (mOrientation == HORIZONTAL)  		{ -            mMinWidth += (*panel_it)->mMinDim; +            mMinWidth += (*panel_it)->getRelevantMinDim();  			if (panel_it != mPanels.begin())  			{  				mMinWidth += mPanelSpacing; @@ -666,7 +669,7 @@ void LLLayoutStack::calcMinExtents()  		}  		else //VERTICAL  		{ -			mMinHeight += (*panel_it)->mMinDim; +			mMinHeight += (*panel_it)->getRelevantMinDim();  			if (panel_it != mPanels.begin())  			{  				mMinHeight += mPanelSpacing; diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index 2fc2cf3eb4..d8ef0aeaca 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -30,10 +30,10 @@  #include "llpanel.h" -class LLPanel;  class LLLayoutPanel; +  class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack>  {  public: @@ -149,6 +149,7 @@ private:  	F32 mCloseTimeConstant;  }; // end class LLLayoutStack +  class LLLayoutPanel : public LLPanel  {  friend class LLLayoutStack; @@ -156,13 +157,15 @@ friend class LLUICtrlFactory;  public:  	struct Params : public LLInitParam::Block<Params, LLPanel::Params>  	{ -		Optional<S32>			min_dim, +		Optional<S32>			expanded_min_dim, +								min_dim,  								max_dim;  		Optional<bool>			user_resize,  								auto_resize;  		Params() -		:	min_dim("min_dim", 0), +		:	expanded_min_dim("expanded_min_dim", 0), +			min_dim("min_dim", 0),  			max_dim("max_dim", 0),  			user_resize("user_resize", true),  			auto_resize("auto_resize", true) @@ -179,17 +182,34 @@ public:  	void initFromParams(const Params& p);  	S32 getMinDim() const { return mMinDim; } -	S32 getMaxDim() const { return mMaxDim; } +	void setMinDim(S32 value) { mMinDim = value; if (!mExpandedMinDimSpecified) mExpandedMinDim = value; } -	void setMinDim(S32 value) { mMinDim = value; } +	S32 getMaxDim() const { return mMaxDim; }  	void setMaxDim(S32 value) { mMaxDim = value; } -protected: -	LLLayoutPanel(const Params& p)	; +	S32 getExpandedMinDim() const { return mExpandedMinDim; } +	void setExpandedMinDim(S32 value) { mExpandedMinDim = value; mExpandedMinDimSpecified = true; } +	 +	S32 getRelevantMinDim() const +	{ +		S32 min_dim = mMinDim; +		 +		if (!mCollapsed) +		{ +			min_dim = mExpandedMinDim; +		} +		 +		return min_dim; +	} +protected: +	LLLayoutPanel(const Params& p);  	F32 getCollapseFactor(LLLayoutStack::ELayoutOrientation orientation); +	bool mExpandedMinDimSpecified; +	S32 mExpandedMinDim; +	  	S32 mMinDim;  	S32 mMaxDim;  	BOOL mAutoResize; diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index f4670731ad..58579bdf4f 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -783,7 +783,14 @@ BOOL LLInvFVBridge::isCOFFolder() const  BOOL LLInvFVBridge::isInboxFolder() const  { -	return gInventory.isObjectDescendentOf(mUUID, gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX)); +	const LLUUID inbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX, false, false); +	 +	if (inbox_id.isNull()) +	{ +		return FALSE; +	} +	 +	return gInventory.isObjectDescendentOf(mUUID, inbox_id);  }  BOOL LLInvFVBridge::isItemPermissive() const diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 5b47e939a4..ebee1704f0 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -497,7 +497,7 @@ void LLInventoryPanel::initializeViews()  	}  	else  	{ -		mStartFolderID = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null); +		mStartFolderID = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type, false, false) : LLUUID::null);  	}  	rebuildViewsFor(mStartFolderID); diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 19c8ee0123..f9e029be19 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -74,6 +74,8 @@ static const char * const OUTBOX_INVENTORY_PANEL = "inventory_outbox";  static const char * const INVENTORY_LAYOUT_STACK_NAME = "inventory_layout_stack"; +static const char * const MARKETPLACE_INBOX_PANEL = "marketplace_inbox"; +  //  // Helpers  // @@ -104,8 +106,8 @@ LLSidepanelInventory::~LLSidepanelInventory()  }  void handleInventoryDisplayInboxChanged() -{
 -	LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
 +{ +	LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));  	sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));  } @@ -247,6 +249,14 @@ void LLSidepanelInventory::onInboxChanged(const LLUUID& inbox_id)  {  	// Trigger a load of the entire inbox so we always know the contents and their creation dates for sorting  	LLInventoryModelBackgroundFetch::instance().start(inbox_id); +	 +	// Expand the inbox since we have fresh items +	LLPanelMarketplaceInbox * inbox = getChild<LLPanelMarketplaceInbox>(MARKETPLACE_INBOX_PANEL); +	if (inbox && (inbox->getFreshItemCount() > 0)) +	{ +		getChild<LLButton>(INBOX_BUTTON_NAME)->setToggleState(true); +		onToggleInboxBtn(); +	}	  }  void LLSidepanelInventory::onOutboxChanged(const LLUUID& outbox_id) @@ -321,7 +331,7 @@ void LLSidepanelInventory::onOpen(const LLSD& key)  	LLFirstUse::newInventory(false);  	// Expand the inbox if we have fresh items -	LLPanelMarketplaceInbox * inbox = getChild<LLPanelMarketplaceInbox>("marketplace_inbox"); +	LLPanelMarketplaceInbox * inbox = getChild<LLPanelMarketplaceInbox>(MARKETPLACE_INBOX_PANEL);  	if (inbox && (inbox->getFreshItemCount() > 0))  	{  		getChild<LLButton>(INBOX_BUTTON_NAME)->setToggleState(true); @@ -530,8 +540,6 @@ void LLSidepanelInventory::updateVerbs()  bool LLSidepanelInventory::canShare()  { -	bool can_share = false; -  	LLPanelMainInventory* panel_main_inventory =  		mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory"); diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index 1fedd6aab8..00f3135035 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml @@ -52,9 +52,10 @@                   auto_resize="true"                   user_resize="false"                   follows="bottom|left|right" -                 min_dim="35"                   name="inbox_layout_panel" +                 min_dim="35"                   max_dim="200" +				 expanded_min_dim="90"                   height="200">                   <panel                        follows="all" @@ -141,6 +142,7 @@                  name="outbox_layout_panel"                  min_dim="35"                  max_dim="200" +				expanded_min_dim="90"                  height="200">                   <panel                        follows="all"  | 
