diff options
| author | richard <none@none> | 2010-02-18 13:32:15 -0800 | 
|---|---|---|
| committer | richard <none@none> | 2010-02-18 13:32:15 -0800 | 
| commit | 9c2559924c21a9cdef1aa160bc0518c210e41333 (patch) | |
| tree | c4b066017873b3db7e23ebc4010d52c446265f95 | |
| parent | d742b3e91182860d411fb18f1041150442766189 (diff) | |
| parent | 3af609b55c591ecc572c0872ba1b3013885d8ac9 (diff) | |
merge
| -rw-r--r-- | indra/llui/llfloater.cpp | 17 | ||||
| -rw-r--r-- | indra/llui/llresizehandle.cpp | 81 | ||||
| -rw-r--r-- | indra/newview/llbottomtray.cpp | 2 | 
3 files changed, 55 insertions, 45 deletions
| diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index a55915af35..53296fc7a1 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2373,13 +2373,20 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out  			new_width = llmax(new_width, min_width);  			new_height = llmax(new_height, min_height); -			LLRect new_rect; -			new_rect.setLeftTopAndSize(view_rect.mLeft,view_rect.mTop,new_width, new_height); +			LLRect new_rect;
 +			new_rect.setLeftTopAndSize(view_rect.mLeft,view_rect.mTop,new_width, new_height);
 -			floater->reshape( new_width, new_height, TRUE ); -			floater->setRect(new_rect); +			floater->setShape(new_rect); -			floater->translateIntoRect( getLocalRect(), false ); +			if (floater->followsRight()) +			{ +				floater->translate(old_width - new_width, 0); +			} + +			if (floater->followsTop()) +			{ +				floater->translate(0, old_height - new_height); +			}  		}  	} diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp index 367666efbd..00214d451c 100644 --- a/indra/llui/llresizehandle.cpp +++ b/indra/llui/llresizehandle.cpp @@ -124,7 +124,7 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)  	{  		// Make sure the mouse in still over the application.  We don't want to make the parent  		// so big that we can't see the resize handle any more. - +	  		S32 screen_x;  		S32 screen_y;  		localPointToScreen(x, y, &screen_x, &screen_y); @@ -147,61 +147,68 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)  			LLRect scaled_rect = orig_rect;  			S32 delta_x = screen_x - mDragLastScreenX;  			S32 delta_y = screen_y - mDragLastScreenY; - -			if(delta_x == 0 && delta_y == 0) -				return FALSE; -  			LLCoordGL mouse_dir;  			// use hysteresis on mouse motion to preserve user intent when mouse stops moving  			mouse_dir.mX = (screen_x == mLastMouseScreenX) ? mLastMouseDir.mX : screen_x - mLastMouseScreenX;  			mouse_dir.mY = (screen_y == mLastMouseScreenY) ? mLastMouseDir.mY : screen_y - mLastMouseScreenY; -			  			mLastMouseScreenX = screen_x;  			mLastMouseScreenY = screen_y;  			mLastMouseDir = mouse_dir; -			S32 new_width = orig_rect.getWidth(); -			S32 new_height = orig_rect.getHeight(); +			S32 x_multiple = 1; +			S32 y_multiple = 1; +			switch( mCorner ) +			{ +			case LEFT_TOP: +				x_multiple = -1;  +				y_multiple =  1;	 +				break; +			case LEFT_BOTTOM:	 +				x_multiple = -1;  +				y_multiple = -1;	 +				break; +			case RIGHT_TOP:		 +				x_multiple =  1;  +				y_multiple =  1;	 +				break; +			case RIGHT_BOTTOM:	 +				x_multiple =  1;  +				y_multiple = -1;	 +				break; +			} -			S32 new_pos_x = orig_rect.mLeft; -			S32 new_pos_y = orig_rect.mTop; +			S32 new_width = orig_rect.getWidth() + x_multiple * delta_x; +			if( new_width < mMinWidth ) +			{ +				new_width = mMinWidth; +				delta_x = x_multiple * (mMinWidth - orig_rect.getWidth()); +			} + +			S32 new_height = orig_rect.getHeight() + y_multiple * delta_y; +			if( new_height < mMinHeight ) +			{ +				new_height = mMinHeight; +				delta_y = y_multiple * (mMinHeight - orig_rect.getHeight()); +			}  			switch( mCorner )  			{ -			case LEFT_TOP: -				new_width-=delta_x; -				new_height+=delta_y; -				new_pos_x+=delta_x; -				new_pos_y+=delta_y; +			case LEFT_TOP:		 +				scaled_rect.translate(delta_x, 0);			  				break;  			case LEFT_BOTTOM:	 -				new_width-=delta_x; -				new_height-=delta_y; -				new_pos_x+=delta_x; +				scaled_rect.translate(delta_x, delta_y);	  				break;  			case RIGHT_TOP:		 -				new_width+=delta_x; -				new_height+=delta_y; -				new_pos_y+=delta_y;  				break;  			case RIGHT_BOTTOM:	 -				new_width+=delta_x; -				new_height-=delta_y; +				scaled_rect.translate(0, delta_y);			  				break;  			} -			new_width = llmax(new_width,mMinWidth); -			new_height = llmax(new_height,mMinHeight); -			 -			LLRect::tCoordType screen_width = resizing_view->getParent()->getSnapRect().getWidth(); -			LLRect::tCoordType screen_height = resizing_view->getParent()->getSnapRect().getHeight(); -			 -			new_width = llmin(new_width, screen_width); -			new_height = llmin(new_height, screen_height); -			  			// temporarily set new parent rect -			scaled_rect.setLeftTopAndSize(new_pos_x,new_pos_y,new_width,new_height); -				 +			scaled_rect.mRight = scaled_rect.mLeft + new_width; +			scaled_rect.mTop = scaled_rect.mBottom + new_height;  			resizing_view->setRect(scaled_rect);  			LLView* snap_view = NULL; @@ -252,11 +259,7 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)  			resizing_view->setRect(orig_rect);  			// translate and scale to new shape -			resizing_view->reshape(scaled_rect.getWidth(),scaled_rect.getHeight()); -			resizing_view->setRect(scaled_rect); -			//set shape to handle dependent floaters... -			resizing_view->handleReshape(scaled_rect, false); -			 +			resizing_view->setShape(scaled_rect, true);  			// update last valid mouse cursor position based on resized view's actual size  			LLRect new_rect = resizing_view->getRect(); diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 95a946cee8..459a61dec3 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -350,7 +350,7 @@ void LLBottomTray::setVisible(BOOL visible)  	{  		mBottomTrayLite->setVisible(visible);  	} -	else +	else   	{  		LLPanel::setVisible(visible);  	} | 
