From 178e11972491206e496a8b6bbd971474dbdc0812 Mon Sep 17 00:00:00 2001
From: pavelkproductengine <pavelkproductengine@lindenlab.com>
Date: Wed, 4 Jan 2017 20:27:32 +0200
Subject: [PATCH] MAINT-7014  [MAINT-RC] Edit arrows are too small with 4k
 monitor

---
 indra/newview/llmaniprotate.cpp    | 5 +++++
 indra/newview/llmanipscale.cpp     | 5 +++++
 indra/newview/llmaniptranslate.cpp | 3 +++
 3 files changed, 13 insertions(+)

diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp
index 3a0f96cd37d..7bd5e4cba21 100644
--- a/indra/newview/llmaniprotate.cpp
+++ b/indra/newview/llmaniprotate.cpp
@@ -1157,6 +1157,9 @@ BOOL LLManipRotate::updateVisiblity()
 
 	BOOL visible = FALSE;
 
+	//Assume that UI scale factor is equivalent for X and Y axis
+	F32 ui_scale_factor = LLUI::getScaleFactor().mV[VX];
+
 	LLVector3 center = gAgent.getPosAgentFromGlobal( mRotationCenter );
 	if (mObjectSelection->getSelectType() == SELECT_TYPE_HUD)
 	{
@@ -1166,6 +1169,7 @@ BOOL LLManipRotate::updateVisiblity()
 
 		mRadiusMeters = RADIUS_PIXELS / (F32) LLViewerCamera::getInstance()->getViewHeightInPixels();
 		mRadiusMeters /= gAgentCamera.mHUDCurZoom;
+		mRadiusMeters *= ui_scale_factor;
 
 		mCenterToProfilePlaneMag = mRadiusMeters * mRadiusMeters / mCenterToCamMag;
 		mCenterToProfilePlane = -mCenterToProfilePlaneMag * mCenterToCamNorm;
@@ -1205,6 +1209,7 @@ BOOL LLManipRotate::updateVisiblity()
 				F32 fraction_of_fov = RADIUS_PIXELS / (F32) LLViewerCamera::getInstance()->getViewHeightInPixels();
 				F32 apparent_angle = fraction_of_fov * LLViewerCamera::getInstance()->getView();  // radians
 				mRadiusMeters = z_dist * tan(apparent_angle);
+				mRadiusMeters *= ui_scale_factor;
 
 				mCenterToProfilePlaneMag = mRadiusMeters * mRadiusMeters / mCenterToCamMag;
 				mCenterToProfilePlane = -mCenterToProfilePlaneMag * mCenterToCamNorm;
diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp
index 3cbe742e3ca..8b2ac4f303e 100644
--- a/indra/newview/llmanipscale.cpp
+++ b/indra/newview/llmanipscale.cpp
@@ -228,12 +228,16 @@ void LLManipScale::render()
 		const F32 BOX_HANDLE_BASE_SIZE		= 50.0f;   // box size in pixels = BOX_HANDLE_BASE_SIZE * BOX_HANDLE_BASE_FACTOR
 		const F32 BOX_HANDLE_BASE_FACTOR	= 0.2f;
 
+		//Assume that UI scale factor is equivalent for X and Y axis
+		F32 ui_scale_factor = LLUI::getScaleFactor().mV[VX];
+
 		if (mObjectSelection->getSelectType() == SELECT_TYPE_HUD)
 		{
 			for (S32 i = 0; i < NUM_MANIPULATORS; i++)
 			{
 				mBoxHandleSize[i] = BOX_HANDLE_BASE_SIZE * BOX_HANDLE_BASE_FACTOR / (F32) LLViewerCamera::getInstance()->getViewHeightInPixels();
 				mBoxHandleSize[i] /= gAgentCamera.mHUDCurZoom;
+				mBoxHandleSize[i] *= ui_scale_factor;
 			}
 		}
 		else
@@ -266,6 +270,7 @@ void LLManipScale::render()
 					// range == zero
 					mBoxHandleSize[i] = BOX_HANDLE_BASE_FACTOR;
 				}
+				mBoxHandleSize[i] *= ui_scale_factor;
 			}
 		}
 
diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp
index 3975d3980b1..785022792bb 100644
--- a/indra/newview/llmaniptranslate.cpp
+++ b/indra/newview/llmaniptranslate.cpp
@@ -1857,6 +1857,9 @@ void LLManipTranslate::renderTranslationHandles()
 			mArrowLengthMeters = 1.0f;
 		}
 	}
+	//Assume that UI scale factor is equivalent for X and Y axis
+	F32 ui_scale_factor = LLUI::getScaleFactor().mV[VX];
+	mArrowLengthMeters *= ui_scale_factor;
 
 	mPlaneManipOffsetMeters = mArrowLengthMeters * 1.8f;
 	mGridSizeMeters = gSavedSettings.getF32("GridDrawSize");
-- 
GitLab