From d083249aa53e637855c0f9bc8cf866adca381176 Mon Sep 17 00:00:00 2001 From: ziree Date: Mon, 26 Mar 2012 02:51:38 +0200 Subject: [PATCH] Added Middle Mouse control to scale manipulator to invert uniform scaling. --- indra/newview/llmanipscale.cpp | 21 ++++++++++++++++++++- indra/newview/llmanipscale.h | 9 +++++++++ indra/newview/lltoolcomp.cpp | 14 ++++++++++++++ indra/newview/lltoolcomp.h | 5 +++++ 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index fdd122c2dc..61ddde8e09 100644 --- a/indra/newview/llmanipscale.cpp +++ b/indra/newview/llmanipscale.cpp @@ -69,6 +69,8 @@ const F32 SELECTED_MANIPULATOR_SCALE = 1.2f; const F32 MANIPULATOR_SCALE_HALF_LIFE = 0.07f; const S32 NUM_MANIPULATORS = 14; +BOOL LLManipScale::mInvertUniform=FALSE; // Add middle mouse control for switching uniform scaling on the fly + const LLManip::EManipPart MANIPULATOR_IDS[NUM_MANIPULATORS] = { LLManip::LL_CORNER_NNN, @@ -130,7 +132,10 @@ void LLManipScale::setStretchTextures(BOOL b) // static BOOL LLManipScale::getUniform() { - return gSavedSettings.getBOOL("ScaleUniform"); + // Add middle mouse control for switching uniform scaling on the fly + // return gSavedSettings.getBOOL("ScaleUniform"); + return (gSavedSettings.getBOOL("ScaleUniform") ^ mInvertUniform); + // } // static @@ -2082,3 +2087,17 @@ BOOL LLManipScale::canAffectSelection() } return can_scale; } + +// Add middle mouse control for switching uniform scaling on the fly +BOOL LLManipScale::handleMiddleMouseDown(S32 x, S32 y, MASK mask) +{ + LLManipScale::mInvertUniform=TRUE; + return handleMouseDown(x,y,mask); +} + +BOOL LLManipScale::handleMiddleMouseUp(S32 x, S32 y, MASK mask) +{ + LLManipScale::mInvertUniform=FALSE; + return handleMouseUp(x, y, mask); +} +// diff --git a/indra/newview/llmanipscale.h b/indra/newview/llmanipscale.h index 5cb8898fd0..cfbb1483f9 100644 --- a/indra/newview/llmanipscale.h +++ b/indra/newview/llmanipscale.h @@ -163,6 +163,15 @@ private: F32 mScaleSnapValue; BOOL mInSnapRegime; F32* mManipulatorScales; + +// Add middle mouse control for switching uniform scaling on the fly +public: + virtual BOOL handleMiddleMouseDown( S32 x, S32 y, MASK mask ); + virtual BOOL handleMiddleMouseUp( S32 x, S32 y, MASK mask ); + +private: + static BOOL mInvertUniform; +// }; #endif // LL_MANIPSCALE_H diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index 203ed5ba0e..7ea6ebd96e 100644 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -435,6 +435,20 @@ void LLToolCompScale::render() } } +// Add middle mouse control for switching uniform scaling on the fly +BOOL LLToolCompScale::handleMiddleMouseDown(S32 x, S32 y, MASK mask) +{ + LLToolCompScale::getInstance()->mManip->handleMiddleMouseDown(x,y,mask); + return handleMouseDown(x,y,mask); +} + +BOOL LLToolCompScale::handleMiddleMouseUp(S32 x, S32 y, MASK mask) +{ + LLToolCompScale::getInstance()->mManip->handleMiddleMouseUp(x,y,mask); + return handleMouseUp(x,y,mask); +} +// + //----------------------------------------------------------------------- // LLToolCompCreate diff --git a/indra/newview/lltoolcomp.h b/indra/newview/lltoolcomp.h index 3721d9086c..9f8a0bb599 100644 --- a/indra/newview/lltoolcomp.h +++ b/indra/newview/lltoolcomp.h @@ -156,6 +156,11 @@ public: virtual LLTool* getOverrideTool(MASK mask); static void pickCallback(const LLPickInfo& pick_info); + + // Add middle mouse control for switching uniform scaling on the fly + virtual BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask); + virtual BOOL handleMiddleMouseUp(S32 x, S32 y, MASK mask); + // };