Merge pull request #949 from LORgames/ssurtees/DPIAwareness

Added DPI awareness support to VS2010+ projects
This commit is contained in:
Tom van Dijck 2017-11-28 09:23:27 -08:00 committed by GitHub
commit e768d4ab40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 91 additions and 12 deletions

View File

@ -52,3 +52,37 @@
prepare()
test.isemptycapture()
end
--
-- Check that DPI Awareness emits correctly
--
function suite.dpiAwareness_None()
dpiawareness "None"
prepare()
test.capture [[
<Manifest>
<EnableDpiAwareness>false</EnableDpiAwareness>
</Manifest>
]]
end
function suite.dpiAwareness_High()
dpiawareness "High"
prepare()
test.capture [[
<Manifest>
<EnableDpiAwareness>true</EnableDpiAwareness>
</Manifest>
]]
end
function suite.dpiAwareness_HighPerMonitor()
dpiawareness "HighPerMonitor"
prepare()
test.capture [[
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
]]
end

View File

@ -482,22 +482,26 @@
-- Write the manifest section.
--
m.elements.manifest = function(cfg)
return {
m.enableDpiAwareness,
m.additionalManifestFiles,
}
end
function m.manifest(cfg)
if cfg.kind ~= p.STATICLIB then
-- get the manifests files
local manifests = {}
for _, fname in ipairs(cfg.files) do
if path.getextension(fname) == ".manifest" then
table.insert(manifests, project.getrelative(cfg.project, fname))
local contents = p.capture(function ()
p.push()
p.callArray(m.elements.manifest, cfg)
p.pop()
end)
if #contents > 0 then
p.push('<Manifest>')
p.outln(contents)
p.pop('</Manifest>')
end
end
if #manifests > 0 then
p.push('<Manifest>')
m.element("AdditionalManifestFiles", nil, "%s;%%(AdditionalManifestFiles)", table.concat(manifests, ";"))
p.pop('</Manifest>')
end
end
end
@ -1216,6 +1220,21 @@
end
function m.additionalManifestFiles(cfg)
-- get the manifests files
local manifests = {}
for _, fname in ipairs(cfg.files) do
if path.getextension(fname) == ".manifest" then
table.insert(manifests, project.getrelative(cfg.project, fname))
end
end
if #manifests > 0 then
m.element("AdditionalManifestFiles", nil, "%s;%%(AdditionalManifestFiles)", table.concat(manifests, ";"))
end
end
function m.additionalUsingDirectories(cfg)
if #cfg.usingdirs > 0 then
local dirs = vstudio.path(cfg, cfg.usingdirs)
@ -1462,6 +1481,20 @@
end
function m.enableDpiAwareness(cfg)
local awareness = {
None = "false",
High = "true",
HighPerMonitor = "PerMonitorHighDPIAware",
}
local value = awareness[cfg.dpiawareness]
if value then
m.element("EnableDpiAwareness", nil, value)
end
end
function m.enableEnhancedInstructionSet(cfg, condition)
local v
local x = cfg.vectorextensions

View File

@ -389,6 +389,18 @@
kind = "string",
}
api.register {
name = "dpiawareness",
scope = "config",
kind = "string",
allowed = {
"Default",
"None",
"High",
"HighPerMonitor",
}
}
api.register {
name = "editandcontinue",
scope = "config",