Browse Source

Merge branch 'master' into fix-default-font

pull/2032/head
Jumar Macato 8 years ago
committed by GitHub
parent
commit
09f96cb3d9
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 66
      azure-pipelines.yml
  2. 22
      build.cake
  3. 6
      parameters.cake
  4. 7
      src/Avalonia.Input/AccessKeyHandler.cs
  5. 39
      src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs
  6. 4
      src/Avalonia.Visuals/Media/Fonts/FontFamilyLoader.cs

66
azure-pipelines.yml

@ -4,20 +4,31 @@ jobs:
vmImage: 'ubuntu-16.04' vmImage: 'ubuntu-16.04'
steps: steps:
- task: CmdLine@2 - task: CmdLine@2
displayName: 'Install CastXML'
inputs: inputs:
script: | script: |
sudo apt-get update sudo apt-get update
sudo apt-get install castxml sudo apt-get install castxml
- task: CmdLine@2 - task: CmdLine@2
displayName: 'Install Cake'
inputs: inputs:
script: | script: |
dotnet tool install -g Cake.Tool --version 0.30.0 dotnet tool install -g Cake.Tool --version 0.30.0
- script: | - task: CmdLine@2
export PATH="$PATH:$HOME/.dotnet/tools" displayName: 'Run Cake'
dotnet --info inputs:
printenv script: |
dotnet cake build.cake -target="Azure-Linux" -configuration="Release" export PATH="$PATH:$HOME/.dotnet/tools"
dotnet --info
printenv
dotnet cake build.cake -target="Azure-Linux" -configuration="Release"
- task: PublishTestResults@2
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
- job: macOS - job: macOS
pool: pool:
@ -26,6 +37,7 @@ jobs:
- task: DotNetCoreInstaller@0 - task: DotNetCoreInstaller@0
inputs: inputs:
version: '2.1.403' version: '2.1.403'
- task: Xcode@5 - task: Xcode@5
inputs: inputs:
actions: 'build' actions: 'build'
@ -35,29 +47,43 @@ jobs:
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace' xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
xcodeVersion: 'default' # Options: 8, 9, default, specifyPath xcodeVersion: 'default' # Options: 8, 9, default, specifyPath
args: '-derivedDataPath ./' args: '-derivedDataPath ./'
- task: CmdLine@2 - task: CmdLine@2
displayName: 'Install CastXML'
inputs: inputs:
script: brew install castxml script: brew install castxml
- task: CmdLine@2 - task: CmdLine@2
displayName: 'Install Cake'
inputs: inputs:
script: | script: |
dotnet tool install -g Cake.Tool --version 0.30.0 dotnet tool install -g Cake.Tool --version 0.30.0
- script: |
export COREHOST_TRACE=0 - task: CmdLine@2
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 displayName: 'Run Cake'
export DOTNET_CLI_TELEMETRY_OPTOUT=1 inputs:
which dotnet script: |
dotnet --info export COREHOST_TRACE=0
export PATH="$PATH:$HOME/.dotnet/tools" export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
dotnet --info export DOTNET_CLI_TELEMETRY_OPTOUT=1
printenv which dotnet
dotnet cake build.cake -target="Azure-OSX" -configuration="Release" dotnet --info
export PATH="$PATH:$HOME/.dotnet/tools"
dotnet --info
printenv
dotnet cake build.cake -target="Azure-OSX" -configuration="Release"
- task: PublishTestResults@2
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
- task: PublishBuildArtifacts@1 - task: PublishBuildArtifacts@1
inputs: inputs:
pathToPublish: '$(Build.SourcesDirectory)/Build/Products/Release/' pathToPublish: '$(Build.SourcesDirectory)/Build/Products/Release/'
artifactName: 'Avalonia.Native.OSX' artifactName: 'Avalonia.Native.OSX'
condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false)) condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false))
- task: PublishBuildArtifacts@1 - task: PublishBuildArtifacts@1
inputs: inputs:
pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget' pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget'
@ -69,19 +95,29 @@ jobs:
vmImage: 'vs2017-win2016' vmImage: 'vs2017-win2016'
steps: steps:
- task: CmdLine@2 - task: CmdLine@2
displayName: 'Install Cake'
inputs: inputs:
script: | script: |
dotnet tool install -g Cake.Tool --version 0.30.0 dotnet tool install -g Cake.Tool --version 0.30.0
- task: CmdLine@2 - task: CmdLine@2
displayName: 'Run Cake'
inputs: inputs:
script: | script: |
set PATH=%PATH%;%USERPROFILE%\.dotnet\tools set PATH=%PATH%;%USERPROFILE%\.dotnet\tools
dotnet cake build.cake -target="Azure-Windows" -configuration="Release" dotnet cake build.cake -target="Azure-Windows" -configuration="Release"
- task: PublishTestResults@2
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
- task: PublishBuildArtifacts@1 - task: PublishBuildArtifacts@1
inputs: inputs:
pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget' pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget'
artifactName: 'NuGet' artifactName: 'NuGet'
condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false)) condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false))
- task: PublishBuildArtifacts@1 - task: PublishBuildArtifacts@1
inputs: inputs:
pathToPublish: '$(Build.SourcesDirectory)/artifacts/zip' pathToPublish: '$(Build.SourcesDirectory)/artifacts/zip'

22
build.cake

@ -78,6 +78,7 @@ Task("Clean-Impl")
CleanDirectory(data.ArtifactsDir); CleanDirectory(data.ArtifactsDir);
CleanDirectory(data.NugetRoot); CleanDirectory(data.NugetRoot);
CleanDirectory(data.ZipRoot); CleanDirectory(data.ZipRoot);
CleanDirectory(data.TestResultsRoot);
}); });
void DotNetCoreBuild(Parameters parameters) void DotNetCoreBuild(Parameters parameters)
@ -129,13 +130,20 @@ void RunCoreTest(string project, Parameters parameters, bool coreOnly = false)
continue; continue;
Information("Running for " + fw); Information("Running for " + fw);
DotNetCoreTest(project, var settings = new DotNetCoreTestSettings {
new DotNetCoreTestSettings { Configuration = parameters.Configuration,
Configuration = parameters.Configuration, Framework = fw,
Framework = fw, NoBuild = true,
NoBuild = true, NoRestore = true
NoRestore = true };
});
if (parameters.PublishTestResults)
{
settings.Logger = "trx";
settings.ResultsDirectory = parameters.TestResultsRoot;
}
DotNetCoreTest(project, settings);
} }
} }

6
parameters.cake

@ -22,11 +22,13 @@ public class Parameters
public bool IsReleasable { get; private set; } public bool IsReleasable { get; private set; }
public bool IsMyGetRelease { get; private set; } public bool IsMyGetRelease { get; private set; }
public bool IsNuGetRelease { get; private set; } public bool IsNuGetRelease { get; private set; }
public bool PublishTestResults { get; private set; }
public string Version { get; private set; } public string Version { get; private set; }
public DirectoryPath ArtifactsDir { get; private set; } public DirectoryPath ArtifactsDir { get; private set; }
public DirectoryPath NugetRoot { get; private set; } public DirectoryPath NugetRoot { get; private set; }
public DirectoryPath ZipRoot { get; private set; } public DirectoryPath ZipRoot { get; private set; }
public DirectoryPath BinRoot { get; private set; } public DirectoryPath BinRoot { get; private set; }
public DirectoryPath TestResultsRoot { get; private set; }
public string DirSuffix { get; private set; } public string DirSuffix { get; private set; }
public DirectoryPathCollection BuildDirs { get; private set; } public DirectoryPathCollection BuildDirs { get; private set; }
public string FileZipSuffix { get; private set; } public string FileZipSuffix { get; private set; }
@ -91,7 +93,8 @@ public class Parameters
else if (IsRunningOnAzure) else if (IsRunningOnAzure)
{ {
// Use AssemblyVersion with Build as version // Use AssemblyVersion with Build as version
Version += "-build" + context.EnvironmentVariable("BUILD_BUILDID") + "-beta"; Version += "-build" + context.EnvironmentVariable("BUILD_BUILDID") + "-beta";
PublishTestResults = true;
} }
// DIRECTORIES // DIRECTORIES
@ -99,6 +102,7 @@ public class Parameters
NugetRoot = ArtifactsDir.Combine("nuget"); NugetRoot = ArtifactsDir.Combine("nuget");
ZipRoot = ArtifactsDir.Combine("zip"); ZipRoot = ArtifactsDir.Combine("zip");
BinRoot = ArtifactsDir.Combine("bin"); BinRoot = ArtifactsDir.Combine("bin");
TestResultsRoot = ArtifactsDir.Combine("test-results");
BuildDirs = context.GetDirectories("**/bin") + context.GetDirectories("**/obj"); BuildDirs = context.GetDirectories("**/bin") + context.GetDirectories("**/obj");
DirSuffix = Configuration; DirSuffix = Configuration;
FileZipSuffix = Version + ".zip"; FileZipSuffix = Version + ".zip";

7
src/Avalonia.Input/AccessKeyHandler.cs

@ -234,8 +234,11 @@ namespace Avalonia.Input
case Key.F10: case Key.F10:
_owner.ShowAccessKeys = _showingAccessKeys = true; _owner.ShowAccessKeys = _showingAccessKeys = true;
MainMenu.Open(); if (MainMenu != null)
e.Handled = true; {
MainMenu.Open();
e.Handled = true;
}
break; break;
} }
} }

39
src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs

@ -17,7 +17,10 @@ namespace Avalonia.Media.Fonts
/// <param name="source"></param> /// <param name="source"></param>
public FontFamilyKey(Uri source) public FontFamilyKey(Uri source)
{ {
if (source == null) throw new ArgumentNullException(nameof(source)); if (source == null)
{
throw new ArgumentNullException(nameof(source));
}
if (source.AbsolutePath.Contains(".ttf")) if (source.AbsolutePath.Contains(".ttf"))
{ {
@ -28,7 +31,17 @@ namespace Avalonia.Media.Fonts
} }
else else
{ {
Location = source; if (source.AbsolutePath.Contains(".otf"))
{
var filePathWithoutExtension = source.AbsolutePath.Replace(".otf", string.Empty);
var fileNameWithoutExtension = filePathWithoutExtension.Split('.').Last();
FileName = fileNameWithoutExtension + ".otf";
Location = new Uri(source.OriginalString.Replace("." + FileName, string.Empty), UriKind.RelativeOrAbsolute);
}
else
{
Location = source;
}
} }
} }
@ -77,11 +90,20 @@ namespace Avalonia.Media.Fonts
/// </returns> /// </returns>
public override bool Equals(object obj) public override bool Equals(object obj)
{ {
if (!(obj is FontFamilyKey other)) return false; if (!(obj is FontFamilyKey other))
{
return false;
}
if (Location != other.Location) return false; if (Location != other.Location)
{
return false;
}
if (FileName != other.FileName) return false; if (FileName != other.FileName)
{
return false;
}
return true; return true;
} }
@ -94,7 +116,10 @@ namespace Avalonia.Media.Fonts
/// </returns> /// </returns>
public override string ToString() public override string ToString()
{ {
if (FileName == null) return Location.PathAndQuery; if (FileName == null)
{
return Location.PathAndQuery;
}
var builder = new UriBuilder(Location); var builder = new UriBuilder(Location);
@ -103,4 +128,4 @@ namespace Avalonia.Media.Fonts
return builder.ToString(); return builder.ToString();
} }
} }
} }

4
src/Avalonia.Visuals/Media/Fonts/FontFamilyLoader.cs

@ -34,7 +34,7 @@ namespace Avalonia.Media.Fonts
{ {
var availableAssets = s_assetLoader.GetAssets(location); var availableAssets = s_assetLoader.GetAssets(location);
var matchingAssets = availableAssets.Where(x => x.absolutePath.EndsWith(".ttf")); var matchingAssets = availableAssets.Where(x => x.absolutePath.EndsWith(".ttf") || x.absolutePath.EndsWith(".otf"));
return matchingAssets.Select(x => GetAssetUri(x.absolutePath, x.assembly)); return matchingAssets.Select(x => GetAssetUri(x.absolutePath, x.assembly));
} }
@ -53,7 +53,7 @@ namespace Avalonia.Media.Fonts
var compareTo = location.AbsolutePath + "." + fileName.Split('*').First(); var compareTo = location.AbsolutePath + "." + fileName.Split('*').First();
var matchingResources = var matchingResources =
availableResources.Where(x => x.absolutePath.Contains(compareTo) && x.absolutePath.EndsWith(".ttf")); availableResources.Where(x => x.absolutePath.Contains(compareTo) && (x.absolutePath.EndsWith(".ttf") || x.absolutePath.EndsWith(".otf")));
return matchingResources.Select(x => GetAssetUri(x.absolutePath, x.assembly)); return matchingResources.Select(x => GetAssetUri(x.absolutePath, x.assembly));
} }

Loading…
Cancel
Save