From 457df9cd6724c23fff9a88fb7db44b6b04a7769c Mon Sep 17 00:00:00 2001
From: AndreyL ProductEngine <alihatskiy@productengine.com>
Date: Sat, 6 Apr 2019 10:12:27 +0300
Subject: [PATCH] SL-10891 Reset UI scale factor on first run if OS's display
 scaling is not 100%

---
 doc/contributions.txt                   |  1 +
 indra/newview/app_settings/settings.xml | 13 +++++++++++++
 indra/newview/llviewerwindow.cpp        | 10 ++++++++++
 3 files changed, 24 insertions(+)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index 24909e6c40..a73bd10295 100755
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -222,6 +222,7 @@ Ansariel Hiller
 	MAINT-8085
 	MAINT-8723
 	SL-10385
+	SL-10891
 Aralara Rajal
 Arare Chantilly
 	CHUIBUG-191
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 09d7845567..916781e85b 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -16310,6 +16310,19 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>ResetUIScaleOnFirstRun</key>
+    <map>
+      <key>Comment</key>
+      <string>Resets the UI scale factor on first run due to changed display scaling behavior</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+      <key>Backup</key>
+      <integer>0</integer>        
+    </map>
 </map>
 </llsd>
 
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index cc10d08f3a..bc4a78e143 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1763,6 +1763,16 @@ LLViewerWindow::LLViewerWindow(const Params& p)
 	LLCoordScreen scr;
     mWindow->getSize(&scr);
 
+    // Reset UI scale factor on first run if OS's display scaling is not 100%
+    if (gSavedSettings.getBOOL("FSResetUIScaleOnFirstRun"))
+    {
+        if (mWindow->getSystemUISize() != 1.f)
+        {
+            gSavedSettings.setF32("UIScaleFactor", 1.f);
+        }
+        gSavedSettings.setBOOL("ResetUIScaleOnFirstRun", FALSE);
+    }
+
 	// Get the real window rect the window was created with (since there are various OS-dependent reasons why
 	// the size of a window or fullscreen context may have been adjusted slightly...)
 	F32 ui_scale_factor = llclamp(gSavedSettings.getF32("UIScaleFactor"), MIN_UI_SCALE, MAX_UI_SCALE) * mWindow->getSystemUISize();
-- 
GitLab