Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
f446289
Use DynamicResource for SortIcon setter
wieslawsoltes Jan 9, 2025
4bc9549
When using Auto sized columns dont cause layout cycles due to columns…
Jan 29, 2025
a731b8a
add a comment to explain the fix and why its important.
Jan 29, 2025
e77f859
Merge pull request #337 from AvaloniaUI/fixes/layout-cycle-with-autoc…
grokys Jan 29, 2025
e589a97
Merge branch 'master' into SortIconFix
wieslawsoltes Jan 31, 2025
59288c9
Update readme.md
maxkatz6 Mar 7, 2025
fad7a15
Merge branch 'master' into SortIconFix
wieslawsoltes Mar 7, 2025
2313902
Create tests for `TypedBinding` using binding.Write for updates
Al12rs Mar 28, 2025
9aaa295
Add more TypedBinding tests to cover more failure cases
Al12rs Mar 28, 2025
0bd4fb8
Add XML documentation for Build method in ExpressionChainVisitor deta…
Al12rs Mar 29, 2025
500fa81
Fix incorrect link index in TypedBinding to set property value correctly
Al12rs Mar 29, 2025
86440f4
Fix chain property changed handling in TypedBindingExpression
Al12rs Mar 29, 2025
dfd34d4
Clarify TypedBindingExpression ChainPropertyChanged behaviour with c…
Al12rs Mar 29, 2025
a1a78ce
Replace Xunit [Fact] attributes with AvaloniaFact in TypedBindingTests
Al12rs Mar 29, 2025
57309ec
fix memory leak caused by event handler subscriptions.
Apr 1, 2025
885ee79
Fix memory leaks caused by holding reference to the ColumnList
Apr 1, 2025
29a93fc
add comment explaining EffectiveViewPortChanged event.
Apr 2, 2025
55b9e56
Merge pull request #351 from AvaloniaUI/fix/memory-leaks
maxkatz6 Apr 2, 2025
4fdac3d
Merge branch 'master' into fix/typed-binding-indices
maxkatz6 Apr 2, 2025
8fbb619
Merge pull request #350 from Al12rs/fix/typed-binding-indices
maxkatz6 Apr 2, 2025
44982af
This change enables support for custom event handlers in scenarios wh…
pasoma2015 Apr 22, 2025
c22f77c
Merge pull request #355 from ITDancer13/allow-drop-to-empty-treedatagrid
maxkatz6 May 1, 2025
8e9ca02
Merge pull request #333 from wieslawsoltes/SortIconFix
maxkatz6 May 1, 2025
15541f6
Fix wikipedia page
maxkatz6 May 1, 2025
e7daf1b
Add AvaloniaSamplesVersion
maxkatz6 May 1, 2025
528a3f7
Allow pen secondary button drag
maxkatz6 May 1, 2025
32f742b
Allow pen secondary button selection on press
maxkatz6 May 1, 2025
5118be6
Rename field
maxkatz6 May 1, 2025
e14f3b9
Update Avalonia.Controls.TreeDataGrid.Tests.csproj
maxkatz6 May 2, 2025
1df7cce
Update TreeDataGridDemo.csproj
maxkatz6 May 2, 2025
c803034
Update MainWindow.axaml.cs
maxkatz6 May 2, 2025
8b74adf
Update azure-pipelines.yml
maxkatz6 May 2, 2025
fcc961e
Update build-and-test.yml
maxkatz6 May 2, 2025
cc4b76c
Update _build.csproj
maxkatz6 May 2, 2025
9753a48
Merge branch 'master' into pen-input-improvement
maxkatz6 May 2, 2025
835d495
Update nukebuild
maxkatz6 May 2, 2025
3ac6c27
Merge branch 'master' into pen-input-improvement
maxkatz6 May 2, 2025
49d673e
Merge pull request #357 from AvaloniaUI/pen-input-improvement
maxkatz6 May 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@ jobs:

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Setup .NET Core SDK ${{ matrix.dotnet-version }}
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.0.x
8.0.x
- name: Install dependencies
run: dotnet restore
Expand Down
153 changes: 79 additions & 74 deletions .nuke/build.schema.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,53 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Build Schema",
"$ref": "#/definitions/build",
"definitions": {
"build": {
"type": "object",
"Host": {
"type": "string",
"enum": [
"AppVeyor",
"AzurePipelines",
"Bamboo",
"Bitbucket",
"Bitrise",
"GitHubActions",
"GitLab",
"Jenkins",
"Rider",
"SpaceAutomation",
"TeamCity",
"Terminal",
"TravisCI",
"VisualStudio",
"VSCode"
]
},
"ExecutableTarget": {
"type": "string",
"enum": [
"CiAzureLinux",
"CiAzureOSX",
"CiAzureWindows",
"Clean",
"Compile",
"CreateNugetPackages",
"Package",
"RunCoreLibsTests",
"RunTests",
"ZipFiles"
]
},
"Verbosity": {
"type": "string",
"description": "",
"enum": [
"Verbose",
"Normal",
"Minimal",
"Quiet"
]
},
"NukeBuild": {
"properties": {
"Configuration": {
"type": "string",
"description": "configuration"
},
"Continue": {
"type": "boolean",
"description": "Indicates to continue a previously failed build attempt"
Expand All @@ -19,24 +57,8 @@
"description": "Shows the help text for this build assembly"
},
"Host": {
"type": "string",
"description": "Host for execution. Default is 'automatic'",
"enum": [
"AppVeyor",
"AzurePipelines",
"Bamboo",
"Bitrise",
"GitHubActions",
"GitLab",
"Jenkins",
"Rider",
"SpaceAutomation",
"TeamCity",
"Terminal",
"TravisCI",
"VisualStudio",
"VSCode"
]
"$ref": "#/definitions/Host"
},
"NoLogo": {
"type": "boolean",
Expand All @@ -57,22 +79,6 @@
"type": "string"
}
},
"PublishFramework": {
"type": "string",
"description": "publish-framework"
},
"PublishProject": {
"type": "string",
"description": "publish-project"
},
"PublishRuntime": {
"type": "string",
"description": "publish-runtime"
},
"PublishSelfContained": {
"type": "boolean",
"description": "publish-self-contained"
},
"Root": {
"type": "string",
"description": "Root directory during build execution"
Expand All @@ -81,51 +87,50 @@
"type": "array",
"description": "List of targets to be skipped. Empty list skips all dependencies",
"items": {
"type": "string",
"enum": [
"Clean",
"Compile",
"Pack",
"Publish",
"Restore",
"Test"
]
"$ref": "#/definitions/ExecutableTarget"
}
},
"Solution": {
"type": "string",
"description": "Path to a solution file that is automatically loaded"
},
"Target": {
"type": "array",
"description": "List of targets to be invoked. Default is '{default_target}'",
"items": {
"type": "string",
"enum": [
"Clean",
"Compile",
"Pack",
"Publish",
"Restore",
"Test"
]
"$ref": "#/definitions/ExecutableTarget"
}
},
"Verbosity": {
"type": "string",
"description": "Logging verbosity during build execution. Default is 'Normal'",
"enum": [
"Minimal",
"Normal",
"Quiet",
"Verbose"
]
"$ref": "#/definitions/Verbosity"
}
}
}
},
"allOf": [
{
"properties": {
"Configuration": {
"type": "string",
"description": "configuration"
},
"VersionSuffix": {
"ForceNugetVersion": {
"type": "string",
"description": "force-nuget-version"
},
"SkipPreviewer": {
"type": "boolean",
"description": "skip-previewer"
},
"SkipTests": {
"type": "boolean",
"description": "skip-tests"
},
"Solution": {
"type": "string",
"description": "version-suffix"
"description": "Path to a solution file that is automatically loaded. Default is Avalonia.Controls.TreeDataGrid.sln"
}
}
},
{
"$ref": "#/definitions/NukeBuild"
}
}
}
]
}
1 change: 1 addition & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@
</PropertyGroup>
<PropertyGroup>
<AvaloniaVersion>11.0.0</AvaloniaVersion>
<AvaloniaSamplesVersion>11.2.8</AvaloniaSamplesVersion>
</PropertyGroup>
</Project>
6 changes: 6 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ pool:
vmImage: ubuntu-latest

steps:

- task: UseDotNet@2
displayName: 'Use .NET SDK'
inputs:
version: 8.0.x

- task: CmdLine@2
displayName: 'Install Nuke'
inputs:
Expand Down
6 changes: 0 additions & 6 deletions global.json

This file was deleted.

63 changes: 22 additions & 41 deletions nukebuild/Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
using System.Linq;
using System.Runtime.InteropServices;
using Nuke.Common;
using Nuke.Common.IO;
using Nuke.Common.ProjectModel;
using Nuke.Common.Tooling;
using Nuke.Common.Tools.DotNet;
using Nuke.Common.Tools.MSBuild;
using static Nuke.Common.EnvironmentInfo;
using static Nuke.Common.IO.FileSystemTasks;
using static Nuke.Common.Tools.MSBuild.MSBuildTasks;
using static Nuke.Common.Tools.DotNet.DotNetTasks;
using static Nuke.Common.Tools.VSWhere.VSWhereTasks;
Expand Down Expand Up @@ -82,8 +82,7 @@ IReadOnlyCollection<Output> MsBuildCommon(
return MSBuild(c => c
.SetProjectFile(projectFile)
// This is required for VS2019 image on Azure Pipelines
.When(Parameters.IsRunningOnWindows &&
Parameters.IsRunningOnAzure, _ => _
.When(_ => Parameters.IsRunningOnWindows && Parameters.IsRunningOnAzure, _ => _
.AddProperty("JavaSdkDirectory", GetVariable<string>("JAVA_HOME_11_X64")))
.AddProperty("PackageVersion", Parameters.Version)
.AddProperty("iOSRoslynPathHackRequired", true)
Expand All @@ -95,13 +94,13 @@ IReadOnlyCollection<Output> MsBuildCommon(

Target Clean => _ => _.Executes(() =>
{
Parameters.BuildDirs.ForEach(DeleteDirectory);
Parameters.BuildDirs.ForEach(EnsureCleanDirectory);
EnsureCleanDirectory(Parameters.ArtifactsDir);
EnsureCleanDirectory(Parameters.NugetIntermediateRoot);
EnsureCleanDirectory(Parameters.NugetRoot);
EnsureCleanDirectory(Parameters.ZipRoot);
EnsureCleanDirectory(Parameters.TestResultsRoot);
Parameters.BuildDirs.ForEach(p => p.DeleteDirectory());
Parameters.BuildDirs.ForEach(p => p.CreateOrCleanDirectory());
Parameters.ArtifactsDir.CreateOrCleanDirectory();
Parameters.NugetIntermediateRoot.CreateOrCleanDirectory();
Parameters.NugetRoot.CreateOrCleanDirectory();
Parameters.ZipRoot.CreateOrCleanDirectory();
Parameters.TestResultsRoot.CreateOrCleanDirectory();
});

Target Compile => _ => _
Expand All @@ -110,7 +109,7 @@ IReadOnlyCollection<Output> MsBuildCommon(
{
if (Parameters.IsRunningOnWindows)
MsBuildCommon(Parameters.MSBuildSolution, c => c
.SetProcessArgumentConfigurator(a => a.Add("/r"))
.SetProcessAdditionalArguments("/r")
.AddTargets("Build")
);

Expand All @@ -122,41 +121,23 @@ IReadOnlyCollection<Output> MsBuildCommon(
);
});

void RunCoreTest(string projectName)
{
Information($"Running tests from {projectName}");
var project = Solution.GetProject(projectName).NotNull("project != null");

foreach (var fw in project.GetTargetFrameworks())
{
if (fw.StartsWith("net4")
&& RuntimeInformation.IsOSPlatform(OSPlatform.Linux)
&& Environment.GetEnvironmentVariable("FORCE_LINUX_TESTS") != "1")
{
Information($"Skipping {projectName} ({fw}) tests on Linux - https://github.com/mono/mono/issues/13969");
continue;
}

Information($"Running for {projectName} ({fw}) ...");

DotNetTest(c => c
.SetProjectFile(project)
.SetConfiguration(Parameters.Configuration)
.SetFramework(fw)
.EnableNoBuild()
.EnableNoRestore()
.When(Parameters.PublishTestResults, _ => _
.SetLoggers("trx")
.SetResultsDirectory(Parameters.TestResultsRoot)));
}
}

Target RunCoreLibsTests => _ => _
.OnlyWhenStatic(() => !Parameters.SkipTests)
.DependsOn(Compile)
.Executes(() =>
{
RunCoreTest("Avalonia.Controls.TreeDataGrid.Tests");
foreach (var testProject in (RootDirectory / "tests").GlobFiles("**/*.csproj"))
{
Information($"Running tests from {testProject}");
DotNetTest(c => c
.SetProjectFile(testProject)
.SetConfiguration(Parameters.Configuration)
.EnableNoBuild()
.EnableNoRestore()
.When(_ => Parameters.PublishTestResults, _ => _
.SetLoggers("trx")
.SetResultsDirectory(Parameters.TestResultsRoot)));
}
});

Target ZipFiles => _ => _
Expand Down
4 changes: 2 additions & 2 deletions nukebuild/BuildParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public class BuildParameters
public AbsolutePath BinRoot { get; }
public AbsolutePath TestResultsRoot { get; }
public string DirSuffix { get; }
public List<string> BuildDirs { get; }
public List<AbsolutePath> BuildDirs { get; }
public string FileZipSuffix { get; }
public AbsolutePath ZipCoreArtifacts { get; }
public AbsolutePath ZipNuGetArtifacts { get; }
Expand Down Expand Up @@ -125,7 +125,7 @@ public BuildParameters(Build b)
ZipRoot = ArtifactsDir / "zip";
BinRoot = ArtifactsDir / "bin";
TestResultsRoot = ArtifactsDir / "test-results";
BuildDirs = GlobDirectories(RootDirectory, "**bin").Concat(GlobDirectories(RootDirectory, "**obj")).ToList();
BuildDirs = RootDirectory.GlobDirectories("**bin").Concat(RootDirectory.GlobDirectories("**obj")).ToList();
DirSuffix = Configuration;
FileZipSuffix = Version + ".zip";
ZipCoreArtifacts = ZipRoot / ("Avalonia-" + FileZipSuffix);
Expand Down
8 changes: 4 additions & 4 deletions nukebuild/_build.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<RootNamespace></RootNamespace>
<IsPackable>False</IsPackable>
<NoWarn>CS0649;CS0169</NoWarn>
<NukeTelemetryVersion>1</NukeTelemetryVersion>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Nuke.Common" Version="6.0.3" />
<PackageReference Include="xunit.runner.console" Version="2.3.1" />
<PackageReference Include="vswhere" Version="2.6.7" Condition=" '$(OS)' == 'Windows_NT' " />
<PackageReference Include="Nuke.Common" Version="9.0.4" />
<PackageReference Include="vswhere" Version="3.1.7" Condition=" '$(OS)' == 'Windows_NT' " />
</ItemGroup>

<ItemGroup>
Expand Down
4 changes: 0 additions & 4 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ An example of `TreeDataGrid` displaying flat data:

## Current Status

The control is currently in *early beta*. As such there will be bugs, missing features and lacking docs, but the control should be generally usable and performant.

**Note**:

We accept issues and pull requests but we answer and review only pull requests and issues that are created by our customers. It's a quite big project and servicing all issues and pull requests will require more time than we have. But feel free to open issues and pull requests because they may be useful for us!

## Getting Started
Expand Down
Loading