diff options
| -rw-r--r-- | indra/llui/lllayoutstack.cpp | 120 | ||||
| -rw-r--r-- | indra/llui/lllayoutstack.h | 12 | ||||
| -rw-r--r-- | indra/llui/llscrollcontainer.cpp | 99 | ||||
| -rw-r--r-- | indra/llui/llwindowshade.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llfloateroutbox.cpp | 55 | ||||
| -rw-r--r-- | indra/newview/llfolderview.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llinventorybridge.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llpanelmarketplaceinbox.cpp | 19 | ||||
| -rw-r--r-- | indra/newview/llpanelmarketplaceinbox.h | 7 | ||||
| -rw-r--r-- | indra/newview/llsidepanelinventory.cpp | 2 | 
10 files changed, 166 insertions, 159 deletions
| diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 34d13610b7..073592b6ec 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -36,6 +36,9 @@  #include "llcriticaldamp.h"  #include "boost/foreach.hpp" +static const F32 MIN_FRACTIONAL_SIZE = 0.0001f; +static const F32 MAX_FRACTIONAL_SIZE = 1.f; +  static LLDefaultChildRegistry::Register<LLLayoutStack> register_layout_stack("layout_stack");  static LLLayoutStack::LayoutStackRegistry::Register<LLLayoutPanel> register_layout_panel("layout_panel"); @@ -60,7 +63,6 @@ LLLayoutPanel::Params::Params()  LLLayoutPanel::LLLayoutPanel(const Params& p)	  :	LLPanel(p), -	mExpandedMinDimSpecified(false),  	mExpandedMinDim(p.min_dim),   	mMinDim(p.min_dim),    	mAutoResize(p.auto_resize), @@ -69,7 +71,7 @@ LLLayoutPanel::LLLayoutPanel(const Params& p)  	mCollapseAmt(0.f),  	mVisibleAmt(1.f), // default to fully visible  	mResizeBar(NULL), -	mFractionalSize(0.f), +	mFractionalSize(MIN_FRACTIONAL_SIZE),  	mTargetDim(0),  	mIgnoreReshape(false),  	mOrientation(LLLayoutStack::HORIZONTAL) @@ -77,7 +79,6 @@ LLLayoutPanel::LLLayoutPanel(const Params& p)  	// 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();  	} @@ -134,18 +135,6 @@ void LLLayoutPanel::setOrientation( LLLayoutStack::ELayoutOrientation orientatio  		? getRect().getWidth()  		: getRect().getHeight())); -	if (mMinDim == -1) -	{ -		if (!mAutoResize) -		{ -			setMinDim(layout_dim); -		} -		else -		{ -			setMinDim(0); -		} -	} -  	mTargetDim = llmax(layout_dim, getMinDim());  } @@ -164,6 +153,8 @@ void LLLayoutPanel::setVisible( BOOL visible )  void LLLayoutPanel::reshape( S32 width, S32 height, BOOL called_from_parent /*= TRUE*/ )  { +	if (width == getRect().getWidth() && height == getRect().getHeight()) return; +  	if (!mIgnoreReshape && !mAutoResize)  	{  		mTargetDim = (mOrientation == LLLayoutStack::HORIZONTAL) ? width : height; @@ -347,6 +338,7 @@ void LLLayoutStack::updateLayout()  	bool animation_in_progress = animatePanels();  	F32 total_visible_fraction = 0.f; +	F32 total_open_fraction = 0.f;  	S32 space_to_distribute = (mOrientation == HORIZONTAL)  							? getRect().getWidth()  							: getRect().getHeight(); @@ -358,9 +350,13 @@ void LLLayoutStack::updateLayout()  		if (panelp->mAutoResize)  		{  			panelp->mTargetDim = panelp->getRelevantMinDim(); +			if (!panelp->mCollapsed && panelp->getVisible()) +			{ +				total_open_fraction += panelp->mFractionalSize; +			}  		}  		space_to_distribute -= panelp->getVisibleDim() + llround((F32)mPanelSpacing * panelp->getVisibleAmount()); -		total_visible_fraction += panelp->mFractionalSize * panelp->getAutoResizeFactor(); +		total_visible_fraction += panelp->mFractionalSize;  	}  	llassert(total_visible_fraction < 1.01f); @@ -368,28 +364,45 @@ void LLLayoutStack::updateLayout()  	// don't need spacing after last panel  	space_to_distribute += panelp ? llround((F32)mPanelSpacing * panelp->getVisibleAmount()) : 0; -	// scale up space to distribute, since some of might will go to an invisible fraction of the auto-resize space -	space_to_distribute = (total_visible_fraction > 0.f) -						? llround((F32)space_to_distribute / total_visible_fraction) -						: space_to_distribute; - -	if (space_to_distribute > 0) -	{	// give space proportionally to auto resize panels, even invisible ones +	F32 fraction_distributed = 0.f; +	if (space_to_distribute > 0 && total_visible_fraction > 0.f) +	{	// give space proportionally to visible auto resize panels  		BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)  		{  			if (panelp->mAutoResize == TRUE)  			{ -				S32 delta = llround((F32)space_to_distribute * panelp->mFractionalSize/* * panelp->getAutoResizeFactor()*/); +				F32 fraction_to_distribute = (panelp->mFractionalSize * panelp->getAutoResizeFactor()) / (total_visible_fraction); +				S32 delta = llround((F32)space_to_distribute * fraction_to_distribute); +				fraction_distributed += fraction_to_distribute;  				panelp->mTargetDim += delta;  			}  		}  	} +	if (fraction_distributed < total_visible_fraction) +	{	// distribute any left over pixels to non-collapsed, visible panels +		F32 fraction_left = total_visible_fraction - fraction_distributed; +		S32 space_left = llround((F32)space_to_distribute * (fraction_left / total_visible_fraction)); + +		BOOST_FOREACH(LLLayoutPanel* panelp, mPanels) +		{ +			if (panelp->mAutoResize  +				&& !panelp->mCollapsed  +				&& panelp->getVisible()) +			{ +				S32 space_for_panel = llmax(0, llround((F32)space_left * (panelp->mFractionalSize / total_open_fraction))); +				panelp->mTargetDim += space_for_panel; +				space_left -= space_for_panel; +				total_open_fraction -= panelp->mFractionalSize; +			} +		} +	} +  	F32 cur_pos = (mOrientation == HORIZONTAL) ? 0.f : (F32)getRect().getHeight();  	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)  	{ -		F32 panel_dim = panelp->mTargetDim; +		F32 panel_dim = llmax(panelp->getExpandedMinDim(), panelp->mTargetDim);  		F32 panel_visible_dim = panelp->getVisibleDim();  		LLRect panel_rect; @@ -403,9 +416,9 @@ void LLLayoutStack::updateLayout()  		else  		{  			panel_rect.setLeftTopAndSize(0, -				llround(cur_pos), -				getRect().getWidth(), -				llround(panel_dim)); +										llround(cur_pos), +										getRect().getWidth(), +										llround(panel_dim));  		}  		panelp->setIgnoreReshape(true);  		panelp->setShape(panel_rect); @@ -531,13 +544,12 @@ void LLLayoutStack::updateFractionalSizes()  	{  		if (panelp->mAutoResize)  		{ -			F32 panel_resizable_dim = llmax(0.f, (F32)(panelp->getLayoutDim() - panelp->getRelevantMinDim())); -			panelp->mFractionalSize = llmin(1.f, (panel_resizable_dim == 0.f) -																	? 0.f -																	: panel_resizable_dim / total_resizable_dim); +			F32 panel_resizable_dim = llmax(MIN_FRACTIONAL_SIZE, (F32)(panelp->getLayoutDim() - panelp->getRelevantMinDim())); +			panelp->mFractionalSize = panel_resizable_dim > 0.f  +										? llclamp(panel_resizable_dim / total_resizable_dim, MIN_FRACTIONAL_SIZE, MAX_FRACTIONAL_SIZE) +										: MIN_FRACTIONAL_SIZE;  			total_fractional_size += panelp->mFractionalSize; -			// check for NaNs -			llassert(panelp->mFractionalSize == panelp->mFractionalSize); +			llassert(!llisnan(panelp->mFractionalSize));  		}  	} @@ -547,7 +559,7 @@ void LLLayoutStack::updateFractionalSizes()  		{  			if (panelp->mAutoResize)  			{ -				panelp->mFractionalSize = 1.f / (F32)num_auto_resize_panels; +				panelp->mFractionalSize = MAX_FRACTIONAL_SIZE / (F32)num_auto_resize_panels;  			}  		}  	} @@ -685,11 +697,6 @@ void LLLayoutStack::updatePanelRect( LLLayoutPanel* resized_panel, const LLRect&  		delta_auto_resize_headroom += delta_dim;  	} - -	//delta_auto_resize_headroom = (total_visible_fraction > 0.f) -	//								? delta_auto_resize_headroom / total_visible_fraction -	//								: 0.f; -  	F32 fraction_given_up = 0.f;  	F32 fraction_remaining = 1.f;  	F32 updated_auto_resize_headroom = total_auto_resize_headroom + delta_auto_resize_headroom; @@ -718,8 +725,8 @@ void LLLayoutStack::updatePanelRect( LLLayoutPanel* resized_panel, const LLRect&  			{	// freeze current size as fraction of overall auto_resize space  				F32 fractional_adjustment_factor = total_auto_resize_headroom / updated_auto_resize_headroom;  				F32 new_fractional_size = llclamp(panelp->mFractionalSize * fractional_adjustment_factor, -													0.f, -													1.f); +													MIN_FRACTIONAL_SIZE, +													MAX_FRACTIONAL_SIZE);  				F32 fraction_delta = (new_fractional_size - panelp->mFractionalSize);  				fraction_given_up -= fraction_delta;  				fraction_remaining -= panelp->mFractionalSize; @@ -735,8 +742,8 @@ void LLLayoutStack::updatePanelRect( LLLayoutPanel* resized_panel, const LLRect&  			if (panelp->mAutoResize)  			{	// freeze new size as fraction  				F32 new_fractional_size = (updated_auto_resize_headroom == 0.f) -					? 1.f -					: llmin(1.f, ((F32)(new_dim - panelp->getRelevantMinDim()) / updated_auto_resize_headroom)); +					? MAX_FRACTIONAL_SIZE +					: llclamp((F32)(new_dim - panelp->getRelevantMinDim()) / updated_auto_resize_headroom, MIN_FRACTIONAL_SIZE, MAX_FRACTIONAL_SIZE);  				fraction_given_up -= new_fractional_size - panelp->mFractionalSize;  				fraction_remaining -= panelp->mFractionalSize;  				panelp->mFractionalSize = new_fractional_size; @@ -755,14 +762,15 @@ void LLLayoutStack::updatePanelRect( LLLayoutPanel* resized_panel, const LLRect&  				fraction_remaining -= panelp->mFractionalSize;  				if (fraction_given_up != 0.f)  				{ -					panelp->mFractionalSize += fraction_given_up; +					panelp->mFractionalSize = llclamp(panelp->mFractionalSize + fraction_given_up, MIN_FRACTIONAL_SIZE, MAX_FRACTIONAL_SIZE);  					fraction_given_up = 0.f;  				}  				else  				{ -					F32 new_fractional_size = llmin(1.f,  -													(F32)(panelp->mTargetDim - panelp->getRelevantMinDim() + delta_auto_resize_headroom)  -														/ updated_auto_resize_headroom); +					F32 new_fractional_size = llclamp((F32)(panelp->mTargetDim - panelp->getRelevantMinDim() + delta_auto_resize_headroom)  +														/ updated_auto_resize_headroom, +													MIN_FRACTIONAL_SIZE, +													MAX_FRACTIONAL_SIZE);  					fraction_given_up -= new_fractional_size - panelp->mFractionalSize;  					panelp->mFractionalSize = new_fractional_size;  				} @@ -776,7 +784,9 @@ void LLLayoutStack::updatePanelRect( LLLayoutPanel* resized_panel, const LLRect&  		case AFTER_RESIZED_PANEL:  			if (panelp->mAutoResize)  			{ -				panelp->mFractionalSize += (panelp->mFractionalSize / fraction_remaining) * fraction_given_up; +				panelp->mFractionalSize = llclamp(panelp->mFractionalSize + (panelp->mFractionalSize / fraction_remaining) * fraction_given_up, +												MIN_FRACTIONAL_SIZE, +												MAX_FRACTIONAL_SIZE);  			}  		default:  			break; @@ -802,15 +812,15 @@ void LLLayoutStack::updateResizeBarLimits()  		}  		// toggle resize bars based on panel visibility, resizability, etc -		if (previous_visible_panelp  -			&& (visible_panelp->mUserResize  -				|| previous_visible_panelp->mUserResize)) +		if (previous_visible_panelp +			&& (visible_panelp->mUserResize || previous_visible_panelp->mUserResize)				// one of the pair is user resizable +			&& (visible_panelp->mAutoResize || visible_panelp->mUserResize)							// current panel is resizable +			&& (previous_visible_panelp->mAutoResize || previous_visible_panelp->mUserResize))		// previous panel is resizable  		{  			visible_panelp->mResizeBar->setVisible(TRUE); +			S32 previous_panel_headroom = previous_visible_panelp->getVisibleDim() - previous_visible_panelp->getRelevantMinDim();  			visible_panelp->mResizeBar->setResizeLimits(visible_panelp->getRelevantMinDim(),  -														visible_panelp->getVisibleDim()  -															+ (previous_visible_panelp->getVisibleDim()  -																- previous_visible_panelp->getRelevantMinDim())); +														visible_panelp->getVisibleDim() + previous_panel_headroom);  		}  		else  		{ diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index f00d5e759b..da63593f7f 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -157,11 +157,11 @@ public:  	void setVisible(BOOL visible);  	S32 getLayoutDim() const; -	S32 getMinDim() const { return mMinDim; } -	void setMinDim(S32 value) { mMinDim = value; if (!mExpandedMinDimSpecified) mExpandedMinDim = value; } +	S32 getMinDim() const { return (mMinDim >= 0 || mAutoResize) ? llmax(0, mMinDim) : getLayoutDim(); } +	void setMinDim(S32 value) { mMinDim = value; } -	S32 getExpandedMinDim() const { return mExpandedMinDim; } -	void setExpandedMinDim(S32 value) { mExpandedMinDim = value; mExpandedMinDimSpecified = true; } +	S32 getExpandedMinDim() const { return mExpandedMinDim >= 0 ? mExpandedMinDim : mMinDim; } +	void setExpandedMinDim(S32 value) { mExpandedMinDim = value; }  	S32 getRelevantMinDim() const  	{ @@ -169,7 +169,7 @@ public:  		if (!mCollapsed)  		{ -			min_dim = mExpandedMinDim; +			min_dim = getExpandedMinDim();  		}  		return min_dim; @@ -187,9 +187,7 @@ public:  protected:  	LLLayoutPanel(const Params& p); -	bool	mExpandedMinDimSpecified;  	S32		mExpandedMinDim; -	  	S32		mMinDim;  	bool	mAutoResize;  	bool	mUserResize; diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp index fe3f688fc5..ad4cc20d9a 100644 --- a/indra/llui/llscrollcontainer.cpp +++ b/indra/llui/llscrollcontainer.cpp @@ -424,63 +424,66 @@ void LLScrollContainer::draw()  		focusFirstItem();  	} -	// Draw background -	if( mIsOpaque ) +	if (getRect().isValid())   	{ -		F32 alpha = getCurrentTransparency(); +		// Draw background +		if( mIsOpaque ) +		{ +			F32 alpha = getCurrentTransparency(); -		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); -		gl_rect_2d(mInnerRect, mBackgroundColor.get() % alpha); -	} +			gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); +			gl_rect_2d(mInnerRect, mBackgroundColor.get() % alpha); +		} -	// Draw mScrolledViews and update scroll bars. -	// get a scissor region ready, and draw the scrolling view. The -	// scissor region ensures that we don't draw outside of the bounds -	// of the rectangle. -	if( mScrolledView ) -	{ -		updateScroll(); - -		// Draw the scrolled area. +		// Draw mScrolledViews and update scroll bars. +		// get a scissor region ready, and draw the scrolling view. The +		// scissor region ensures that we don't draw outside of the bounds +		// of the rectangle. +		if( mScrolledView )  		{ -			S32 visible_width = 0; -			S32 visible_height = 0; -			BOOL show_v_scrollbar = FALSE; -			BOOL show_h_scrollbar = FALSE; -			calcVisibleSize( &visible_width, &visible_height, &show_h_scrollbar, &show_v_scrollbar ); - -			LLLocalClipRect clip(LLRect(mInnerRect.mLeft,  -					mInnerRect.mBottom + (show_h_scrollbar ? scrollbar_size : 0) + visible_height, -					mInnerRect.mRight - (show_v_scrollbar ? scrollbar_size: 0), -					mInnerRect.mBottom + (show_h_scrollbar ? scrollbar_size : 0) -					)); -			drawChild(mScrolledView); -		} -	} - -	// Highlight border if a child of this container has keyboard focus -	if( mBorder->getVisible() ) -	{ -		mBorder->setKeyboardFocusHighlight( gFocusMgr.childHasKeyboardFocus(this) ); -	} +			updateScroll(); -	// Draw all children except mScrolledView -	// Note: scrollbars have been adjusted by above drawing code -	for (child_list_const_reverse_iter_t child_iter = getChildList()->rbegin(); -		 child_iter != getChildList()->rend(); ++child_iter) -	{ -		LLView *viewp = *child_iter; -		if( sDebugRects ) -		{ -			sDepth++; +			// Draw the scrolled area. +			{ +				S32 visible_width = 0; +				S32 visible_height = 0; +				BOOL show_v_scrollbar = FALSE; +				BOOL show_h_scrollbar = FALSE; +				calcVisibleSize( &visible_width, &visible_height, &show_h_scrollbar, &show_v_scrollbar ); + +				LLLocalClipRect clip(LLRect(mInnerRect.mLeft,  +						mInnerRect.mBottom + (show_h_scrollbar ? scrollbar_size : 0) + visible_height, +						mInnerRect.mRight - (show_v_scrollbar ? scrollbar_size: 0), +						mInnerRect.mBottom + (show_h_scrollbar ? scrollbar_size : 0) +						)); +				drawChild(mScrolledView); +			}  		} -		if( (viewp != mScrolledView) && viewp->getVisible() ) + +		// Highlight border if a child of this container has keyboard focus +		if( mBorder->getVisible() )  		{ -			drawChild(viewp); +			mBorder->setKeyboardFocusHighlight( gFocusMgr.childHasKeyboardFocus(this) );  		} -		if( sDebugRects ) + +		// Draw all children except mScrolledView +		// Note: scrollbars have been adjusted by above drawing code +		for (child_list_const_reverse_iter_t child_iter = getChildList()->rbegin(); +			 child_iter != getChildList()->rend(); ++child_iter)  		{ -			sDepth--; +			LLView *viewp = *child_iter; +			if( sDebugRects ) +			{ +				sDepth++; +			} +			if( (viewp != mScrolledView) && viewp->getVisible() ) +			{ +				drawChild(viewp); +			} +			if( sDebugRects ) +			{ +				sDepth--; +			}  		}  	}  } // end draw diff --git a/indra/llui/llwindowshade.cpp b/indra/llui/llwindowshade.cpp index 48a232c33e..f5c463c961 100644 --- a/indra/llui/llwindowshade.cpp +++ b/indra/llui/llwindowshade.cpp @@ -160,7 +160,7 @@ void LLWindowShade::draw()  	notification_area->reshape(notification_area->getRect().getWidth(),   		llclamp(message_rect.getHeight() + 15,  -				llmin(mFormHeight, MAX_NOTIFICATION_AREA_HEIGHT), +				llmax(mFormHeight, MIN_NOTIFICATION_AREA_HEIGHT),  				MAX_NOTIFICATION_AREA_HEIGHT));  	LLUICtrl::draw(); diff --git a/indra/newview/llfloateroutbox.cpp b/indra/newview/llfloateroutbox.cpp index 08cd8082aa..540f977305 100644 --- a/indra/newview/llfloateroutbox.cpp +++ b/indra/newview/llfloateroutbox.cpp @@ -376,44 +376,37 @@ BOOL LLFloaterOutbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,  	LLView * handled_view = childrenHandleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);  	BOOL handled = (handled_view != NULL); + +	// Determine if the mouse is inside the inventory panel itself or just within the floater +	bool pointInInventoryPanel = false; +	bool pointInInventoryPanelChild = false; +	LLFolderView * root_folder = mOutboxInventoryPanel->getRootFolder(); +	if (mOutboxInventoryPanel->getVisible()) +	{ +		S32 inv_x, inv_y; +		localPointToOtherView(x, y, &inv_x, &inv_y, mOutboxInventoryPanel); + +		pointInInventoryPanel = mOutboxInventoryPanel->getRect().pointInRect(inv_x, inv_y); + +		LLView * inventory_panel_child_at_point = mOutboxInventoryPanel->childFromPoint(inv_x, inv_y, true); +		pointInInventoryPanelChild = (inventory_panel_child_at_point != root_folder); +	}  	// Pass all drag and drop for this floater to the outbox inventory control  	if (!handled || !isAccepted(*accept))  	{ -		// Always assume we are going to move the drag and drop operation to the outbox root folder -		bool move_to_root = true; -		 -		// If the inventory panel is visible, then only override it to the outbox root if we're outside the inventory panel +		// Handle the drag and drop directly to the root of the outbox if we're not in the inventory panel  		// (otherwise the inventory panel itself will handle the drag and drop operation, without any override) -		if (mOutboxInventoryPanel->getVisible()) -		{ -			S32 inv_x, inv_y; -			localPointToOtherView(x, y, &inv_x, &inv_y, mOutboxInventoryPanel); -			 -			const LLRect& inv_rect = mOutboxInventoryPanel->getRect(); - -			move_to_root = !inv_rect.pointInRect(inv_x, inv_y); -		} -		 -		// Handle the drag and drop directly to the root of the outbox -		if (move_to_root) +		if (!pointInInventoryPanel)  		{ -			LLFolderView * root_folder = mOutboxInventoryPanel->getRootFolder(); -			  			handled = root_folder->handleDragAndDropToThisFolder(mask, drop, cargo_type, cargo_data, accept, tooltip_msg);  		} -		if (mOutboxTopLevelDropZone) -		{ -			mOutboxTopLevelDropZone->setBackgroundVisible(handled && !drop && isAccepted(*accept)); -		} +		mOutboxTopLevelDropZone->setBackgroundVisible(handled && !drop && isAccepted(*accept));  	}  	else  	{ -		if (mOutboxTopLevelDropZone) -		{ -			mOutboxTopLevelDropZone->setBackgroundVisible(FALSE); -		} +		mOutboxTopLevelDropZone->setBackgroundVisible(!pointInInventoryPanelChild);  	}  	return handled; @@ -421,20 +414,14 @@ BOOL LLFloaterOutbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,  BOOL LLFloaterOutbox::handleHover(S32 x, S32 y, MASK mask)  { -	if (mOutboxTopLevelDropZone) -	{ -		mOutboxTopLevelDropZone->setBackgroundVisible(FALSE); -	} +	mOutboxTopLevelDropZone->setBackgroundVisible(FALSE);  	return LLFloater::handleHover(x, y, mask);  }  void LLFloaterOutbox::onMouseLeave(S32 x, S32 y, MASK mask)  { -	if (mOutboxTopLevelDropZone) -	{ -		mOutboxTopLevelDropZone->setBackgroundVisible(FALSE); -	} +	mOutboxTopLevelDropZone->setBackgroundVisible(FALSE);  	LLFloater::onMouseLeave(x, y, mask);  } diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 6bf0f09747..e0d7d67f7d 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -1199,7 +1199,9 @@ void LLFolderView::changeType(LLInventoryModel *model, LLFolderType::EType new_f  void LLFolderView::autoOpenItem( LLFolderViewFolder* item )  { -	if (mAutoOpenItems.check() == item || mAutoOpenItems.getDepth() >= (U32)AUTO_OPEN_STACK_DEPTH) +	if ((mAutoOpenItems.check() == item) ||  +		(mAutoOpenItems.getDepth() >= (U32)AUTO_OPEN_STACK_DEPTH) || +		item->isOpen())  	{  		return;  	} diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 3929183be2..12322b2921 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -471,7 +471,7 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const  void hide_context_entries(LLMenuGL& menu,   						  const menuentry_vec_t &entries_to_show, -						  const menuentry_vec_t &disabled_entries) // If append is TRUE, then new enabled entries  +						  const menuentry_vec_t &disabled_entries)  {  	const LLView::child_list_t *list = menu.getChildList(); @@ -493,7 +493,6 @@ void hide_context_entries(LLMenuGL& menu,  			hide_context_entries(*branchp->getBranch(), entries_to_show, disabled_entries);  		} -  		bool found = false;  		menuentry_vec_t::const_iterator itor2;  		for (itor2 = entries_to_show.begin(); itor2 != entries_to_show.end(); ++itor2) @@ -529,7 +528,7 @@ void hide_context_entries(LLMenuGL& menu,  			// so that some other UI element from multi-select doesn't later set this invisible.  			menu_item->pushVisible(TRUE); -			BOOL enabled = TRUE; +			BOOL enabled = menu_item->getEnabled();  			for (itor2 = disabled_entries.begin(); itor2 != disabled_entries.end(); ++itor2)  			{  				if (*itor2 == name) diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp index a5e964f563..66c9c323cb 100644 --- a/indra/newview/llpanelmarketplaceinbox.cpp +++ b/indra/newview/llpanelmarketplaceinbox.cpp @@ -48,6 +48,8 @@ const LLPanelMarketplaceInbox::Params& LLPanelMarketplaceInbox::getDefaultParams  // protected  LLPanelMarketplaceInbox::LLPanelMarketplaceInbox(const Params& p)  	: LLPanel(p) +	, mFreshCountCtrl(NULL) +	, mInboxButton(NULL)  	, mInventoryPanel(NULL)  {  } @@ -60,6 +62,9 @@ LLPanelMarketplaceInbox::~LLPanelMarketplaceInbox()  BOOL LLPanelMarketplaceInbox::postBuild()  {  	LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLPanelMarketplaceInbox::onFocusReceived, this)); + +	mFreshCountCtrl = getChild<LLUICtrl>("inbox_fresh_new_count"); +	mInboxButton = getChild<LLButton>("inbox_btn");  	return TRUE;  } @@ -216,7 +221,7 @@ void LLPanelMarketplaceInbox::draw()  {  	U32 item_count = getTotalItemCount(); -	LLView * fresh_new_count_view = getChildView("inbox_fresh_new_count"); +	llassert(mFreshCountCtrl != NULL);  	if (item_count > 0)  	{ @@ -224,26 +229,26 @@ void LLPanelMarketplaceInbox::draw()  		LLStringUtil::format_map_t args;  		args["[NUM]"] = item_count_str; -		getChild<LLButton>("inbox_btn")->setLabel(getString("InboxLabelWithArg", args)); +		mInboxButton->setLabel(getString("InboxLabelWithArg", args));  #if SUPPORTING_FRESH_ITEM_COUNT  		// set green text to fresh item count  		U32 fresh_item_count = getFreshItemCount(); -		fresh_new_count_view->setVisible((fresh_item_count > 0)); +		mFreshCountCtrl->setVisible((fresh_item_count > 0));  		if (fresh_item_count > 0)  		{ -			getChild<LLUICtrl>("inbox_fresh_new_count")->setTextArg("[NUM]", llformat("%d", fresh_item_count)); +			mFreshCountCtrl->setTextArg("[NUM]", llformat("%d", fresh_item_count));  		}  #else -		fresh_new_count_view->setVisible(FALSE); +		mFreshCountCtrl->setVisible(FALSE);  #endif  	}  	else  	{ -		getChild<LLButton>("inbox_btn")->setLabel(getString("InboxLabelNoArg")); +		mInboxButton->setLabel(getString("InboxLabelNoArg")); -		fresh_new_count_view->setVisible(FALSE); +		mFreshCountCtrl->setVisible(FALSE);  	}  	LLPanel::draw(); diff --git a/indra/newview/llpanelmarketplaceinbox.h b/indra/newview/llpanelmarketplaceinbox.h index 3531518e51..9eb74581a2 100644 --- a/indra/newview/llpanelmarketplaceinbox.h +++ b/indra/newview/llpanelmarketplaceinbox.h @@ -29,7 +29,9 @@  #include "llpanel.h" +class LLButton;  class LLInventoryPanel; +class LLUICtrl;  class LLPanelMarketplaceInbox : public LLPanel  { @@ -66,9 +68,10 @@ private:  	void onFocusReceived();  private: -	LLInventoryPanel* mInventoryPanel; +	LLUICtrl *			mFreshCountCtrl; +	LLButton *			mInboxButton; +	LLInventoryPanel *	mInventoryPanel;  };  #endif //LL_LLPANELMARKETPLACEINBOX_H - diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index e1043c34c7..b337eaf6be 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -371,7 +371,7 @@ void LLSidepanelInventory::onToggleInboxBtn()  	const bool inbox_expanded = inboxButton->getToggleState();  	// Enable user_resize on main inventory panel only when inbox is expanded -	inv_stack->setPanelUserResize(MAIN_INVENTORY_LAYOUT_PANEL_NAME, inbox_expanded); +	//inv_stack->setPanelUserResize(MAIN_INVENTORY_LAYOUT_PANEL_NAME, inbox_expanded);  	// Expand/collapse the indicated panel  	inv_stack->collapsePanel(inboxPanel, !inbox_expanded); | 
