diff options
| author | Richard Linden <none@none> | 2012-08-23 15:48:27 -0700 | 
|---|---|---|
| committer | Richard Linden <none@none> | 2012-08-23 15:48:27 -0700 | 
| commit | 13dee7ee295cdf607c599863d1164662e96a8e3a (patch) | |
| tree | d8d351bc4a885a58025a4d4bfa3286b2754e4bc6 | |
| parent | 632618be6540c7e9cc0022f01badda8b989866ed (diff) | |
| parent | 141dbef088187368268f9eeddbc107802c14e085 (diff) | |
Automated merge with http://bitbucket.org/lindenlab/viewer-cat
| -rw-r--r-- | indra/llui/llfloater.cpp | 23 | ||||
| -rw-r--r-- | indra/llui/llresizebar.cpp | 48 | ||||
| -rw-r--r-- | indra/llui/llresizehandle.cpp | 58 | 
3 files changed, 111 insertions, 18 deletions
| diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index ad64a9a5e5..dea746db60 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -1101,21 +1101,26 @@ void LLFloater::handleReshape(const LLRect& new_rect, bool by_user)  	const LLRect old_rect = getRect();  	LLView::handleReshape(new_rect, by_user); -	if (by_user && !isMinimized()) +	if (by_user && !getHost())  	{ -		if (isDocked()) -		{ -			setDocked( false, false); -		} -		storeRectControl(); -		mPositioning = LLFloaterEnums::POSITIONING_RELATIVE; -		LLRect screen_rect = calcScreenRect(); -		mPosition = LLCoordGL(screen_rect.getCenterX(), screen_rect.getCenterY()).convert(); +		static_cast<LLFloaterView*>(getParent())->adjustToFitScreen(this, !isMinimized());  	}  	// if not minimized, adjust all snapped dependents to new shape  	if (!isMinimized())  	{ +		if (by_user) +		{ +			if (isDocked()) +			{ +				setDocked( false, false); +			} +			storeRectControl(); +			mPositioning = LLFloaterEnums::POSITIONING_RELATIVE; +			LLRect screen_rect = calcScreenRect(); +			mPosition = LLCoordGL(screen_rect.getCenterX(), screen_rect.getCenterY()).convert(); +		} +  		// gather all snapped dependents  		for(handle_set_iter_t dependent_it = mDependents.begin();  			dependent_it != mDependents.end(); ++dependent_it) diff --git a/indra/llui/llresizebar.cpp b/indra/llui/llresizebar.cpp index 85e0aba824..ba90fa5e0c 100644 --- a/indra/llui/llresizebar.cpp +++ b/indra/llui/llresizebar.cpp @@ -212,20 +212,66 @@ BOOL LLResizeBar::handleHover(S32 x, S32 y, MASK mask)  			// update last valid mouse cursor position based on resized view's actual size  			LLRect new_rect = mResizingView->getRect(); +  			switch(mSide)  			{  			case LEFT: -				mDragLastScreenX += new_rect.mLeft - orig_rect.mLeft; +			{ +				S32 actual_delta_x = new_rect.mLeft - orig_rect.mLeft; +				if (actual_delta_x != delta_x) +				{ +					// restore everything by left +					new_rect.mBottom = orig_rect.mBottom; +					new_rect.mTop = orig_rect.mTop; +					new_rect.mRight = orig_rect.mRight; +					mResizingView->setShape(new_rect, true); +				} +				mDragLastScreenX += actual_delta_x; +  				break; +			}  			case RIGHT: +			{ +				S32 actual_delta_x = new_rect.mRight - orig_rect.mRight; +				if (actual_delta_x != delta_x) +				{ +					// restore everything by left +					new_rect.mBottom = orig_rect.mBottom; +					new_rect.mTop = orig_rect.mTop; +					new_rect.mLeft = orig_rect.mLeft; +					mResizingView->setShape(new_rect, true); +				}  				mDragLastScreenX += new_rect.mRight - orig_rect.mRight;  				break; +			}  			case TOP: +			{ +				S32 actual_delta_y = new_rect.mTop - orig_rect.mTop; +				if (actual_delta_y != delta_y) +				{ +					// restore everything by left +					new_rect.mBottom = orig_rect.mBottom; +					new_rect.mLeft = orig_rect.mLeft; +					new_rect.mRight = orig_rect.mRight; +					mResizingView->setShape(new_rect, true); +				}  				mDragLastScreenY += new_rect.mTop - orig_rect.mTop;  				break; +			}  			case BOTTOM: +			{ +				S32 actual_delta_y = new_rect.mBottom - orig_rect.mBottom; +				if (actual_delta_y != delta_y) +				{ +					// restore everything by left +					new_rect.mTop = orig_rect.mTop; +					new_rect.mLeft = orig_rect.mLeft; +					new_rect.mRight = orig_rect.mRight; +					mResizingView->setShape(new_rect, true); +				}  				mDragLastScreenY += new_rect.mBottom- orig_rect.mBottom;  				break; +			}  			default:  				break;  			} diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp index c3a51c36c9..24794305ac 100644 --- a/indra/llui/llresizehandle.cpp +++ b/indra/llui/llresizehandle.cpp @@ -257,23 +257,65 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)  			// update last valid mouse cursor position based on resized view's actual size  			LLRect new_rect = resizing_view->getRect(); +			S32 actual_delta_x = 0; +			S32 actual_delta_y = 0;  			switch(mCorner)  			{  			case LEFT_TOP: -				mDragLastScreenX += new_rect.mLeft - orig_rect.mLeft; -				mDragLastScreenY += new_rect.mTop - orig_rect.mTop; +				actual_delta_x = new_rect.mLeft - orig_rect.mLeft; +				actual_delta_y = new_rect.mTop - orig_rect.mTop; +				if (actual_delta_x != delta_x +					|| actual_delta_y != delta_y) +				{ +					new_rect.mRight = orig_rect.mRight; +					new_rect.mBottom = orig_rect.mBottom; +					resizing_view->setShape(new_rect, true); +				} + +				mDragLastScreenX += actual_delta_x; +				mDragLastScreenY += actual_delta_y;  				break;  			case LEFT_BOTTOM: -				mDragLastScreenX += new_rect.mLeft - orig_rect.mLeft; -				mDragLastScreenY += new_rect.mBottom- orig_rect.mBottom; +				actual_delta_x = new_rect.mLeft - orig_rect.mLeft; +				actual_delta_y = new_rect.mBottom - orig_rect.mBottom; +				if (actual_delta_x != delta_x +					|| actual_delta_y != delta_y) +				{ +					new_rect.mRight = orig_rect.mRight; +					new_rect.mTop = orig_rect.mTop; +					resizing_view->setShape(new_rect, true); +				} + +				mDragLastScreenX += actual_delta_x; +				mDragLastScreenY += actual_delta_y;  				break;  			case RIGHT_TOP: -				mDragLastScreenX += new_rect.mRight - orig_rect.mRight; -				mDragLastScreenY += new_rect.mTop - orig_rect.mTop; +				actual_delta_x = new_rect.mRight - orig_rect.mRight; +				actual_delta_y = new_rect.mTop - orig_rect.mTop; +				if (actual_delta_x != delta_x +					|| actual_delta_y != delta_y) +				{ +					new_rect.mLeft = orig_rect.mLeft; +					new_rect.mBottom = orig_rect.mBottom; +					resizing_view->setShape(new_rect, true); +				} + +				mDragLastScreenX += actual_delta_x; +				mDragLastScreenY += actual_delta_y;  				break;  			case RIGHT_BOTTOM: -				mDragLastScreenX += new_rect.mRight - orig_rect.mRight; -				mDragLastScreenY += new_rect.mBottom- orig_rect.mBottom; +				actual_delta_x = new_rect.mRight - orig_rect.mRight; +				actual_delta_y = new_rect.mBottom - orig_rect.mBottom; +				if (actual_delta_x != delta_x +					|| actual_delta_y != delta_y) +				{ +					new_rect.mLeft = orig_rect.mLeft; +					new_rect.mTop = orig_rect.mTop; +					resizing_view->setShape(new_rect, true); +				} + +				mDragLastScreenX += actual_delta_x; +				mDragLastScreenY += actual_delta_y;  				break;  			default:  				break; | 
