[pob2-port] Add setting to override Windows scaling from PoB (#9048)

* Apply changes from https://github.com/PathOfBuildingCommunity/PathOfBuilding-PoE2/pull/1512

* Fix merge issues

* Fix missing commas

---------

Co-authored-by: LocalIdentity <LocalIdentity@users.noreply.github.com>
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
This commit is contained in:
github-actions[bot]
2025-10-31 00:36:03 +11:00
committed by GitHub
parent a43735af1e
commit 5f4bdd1328

View File

@@ -104,6 +104,7 @@ function main:Init()
self.decimalSeparator = "."
self.defaultItemAffixQuality = 0.5
self.showTitlebarName = true
self.dpiScaleOverridePercent = GetDPIScaleOverridePercent and GetDPIScaleOverridePercent() or 0
self.showWarnings = true
self.slotOnlyTooltips = true
self.notSupportedModTooltips = true
@@ -638,6 +639,10 @@ function main:LoadSettings(ignoreBuild)
if node.attrib.showPublicBuilds then
self.showPublicBuilds = node.attrib.showPublicBuilds == "true"
end
if node.attrib.dpiScaleOverridePercent then
self.dpiScaleOverridePercent = tonumber(node.attrib.dpiScaleOverridePercent) or 0
SetDPIScaleOverridePercent(self.dpiScaleOverridePercent)
end
end
end
end
@@ -754,7 +759,8 @@ function main:SaveSettings()
POESESSID = self.POESESSID,
invertSliderScrollDirection = tostring(self.invertSliderScrollDirection),
disableDevAutoSave = tostring(self.disableDevAutoSave),
showPublicBuilds = tostring(self.showPublicBuilds)
showPublicBuilds = tostring(self.showPublicBuilds),
dpiScaleOverridePercent = tostring(self.dpiScaleOverridePercent),
} })
local res, errMsg = common.xml.SaveXMLFile(setXML, self.userPath.."Settings.xml")
if not res then
@@ -862,6 +868,24 @@ function main:OpenOptionsPopup()
controls.proxyURL:SetText(url)
end
nextRow()
controls.dpiScaleOverride = new("DropDownControl", { "TOPLEFT", nil, "TOPLEFT" }, { defaultLabelPlacementX, currentY, 150, 18 }, {
{ label = "Use system default", percent = 0 },
{ label = "100%", percent = 100 },
{ label = "125%", percent = 125 },
{ label = "150%", percent = 150 },
{ label = "175%", percent = 175 },
{ label = "200%", percent = 200 },
{ label = "225%", percent = 225 },
{ label = "250%", percent = 250 },
}, function(index, value)
self.dpiScaleOverridePercent = value.percent
SetDPIScaleOverridePercent(value.percent)
end)
controls.dpiScaleOverrideLabel = new("LabelControl", { "RIGHT", controls.dpiScaleOverride, "LEFT" }, { defaultLabelSpacingPx, 0, 0, 16 }, "^7UI scaling override:")
controls.dpiScaleOverride.tooltipText = "Overrides Windows DPI scaling inside Path of Building.\nChoose a percentage between 100% and 250% or revert to the system default."
controls.dpiScaleOverride:SelByValue(self.dpiScaleOverridePercent, "percent")
nextRow()
controls.buildPath = new("EditControl", { "TOPLEFT", nil, "TOPLEFT" }, { defaultLabelPlacementX, currentY, 290, 18 })
controls.buildPathLabel = new("LabelControl", { "RIGHT", controls.buildPath, "LEFT" }, { defaultLabelSpacingPx, 0, 0, 16 }, "^7Build save path:")
@@ -1041,6 +1065,7 @@ function main:OpenOptionsPopup()
local initialInvertSliderScrollDirection = self.invertSliderScrollDirection
local initialDisableDevAutoSave = self.disableDevAutoSave
local initialShowPublicBuilds = self.showPublicBuilds
local initialDpiScaleOverridePercent = self.dpiScaleOverridePercent
-- last line with buttons has more spacing
nextRow(1.5)
@@ -1066,6 +1091,7 @@ function main:OpenOptionsPopup()
if not launch.devMode then
main:SetManifestBranch(self.betaTest and "beta" or "master")
end
SetDPIScaleOverridePercent(self.dpiScaleOverridePercent)
main:ClosePopup()
main:SaveSettings()
end)
@@ -1092,6 +1118,8 @@ function main:OpenOptionsPopup()
self.invertSliderScrollDirection = initialInvertSliderScrollDirection
self.disableDevAutoSave = initialDisableDevAutoSave
self.showPublicBuilds = initialShowPublicBuilds
self.dpiScaleOverridePercent = initialDpiScaleOverridePercent
+ SetDPIScaleOverridePercent(self.dpiScaleOverridePercent)
main:ClosePopup()
end)
nextRow(1.5)