301 Commits

Author SHA1 Message Date
Julien Lebosquain 0fb64d65cc Enable warnings as errors (#20504) 2026-01-21 08:16:46 +00:00
Benedikt Stebner e8424283fe Universal GlyphTypeface implementation (#19852)
* Introduce a universal IGlyphTypeface implementation that does not rely on any platform implementation

* Revert changes

* Fix Android

* Make the test happy

* Fix build

* Update baseline

* Fix naming

* Fix headless

* Move interfaces to dedicated files
Make GlyphTypeface.GlyphCount an integer

* Fix GlyphCount

* Make IGlyphTypeface NotClientImplementable

* Make sure we cache platform typefaces by their desired name, style, weight and stretch

* Update baseline

* Only use IGlyphTypeface

* Fix Android

* Try to clear the buffer before we encode somethimg

* Add needed test font

* Add more unit tests

* Reduce allocations

* Remove Direct2D1 test files

* More tests

* More complete table implementations

* More adjustments

* Use batch APIs

* Handle invalid timestamps

* Update baseline

* Introduce a CharacterToGlyphMap struct for faster access

* Remove AggressiveInlining

* Remove AggressiveInlining

* Make the head table optional for legacy fonts

* Remove Load method. Fix TextBlockTests

* Fix nullables

* Remove redundant folder

* Update Api baseline

* revert diff helper changes

* revert changes

* Use bare minimum font for Headless platform and introduce a test font manager that uses the Inter font for testing.

* Add missing font file for Headless platform

---------

Co-authored-by: Gillibald <stebner@avaloniaui.net>
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
2026-01-09 15:07:28 +00:00
Julien Lebosquain 4b071000a4 Split analyzers and code fixes into separate projects (#20312)
* Split analyzers and code fixes

* Split C# and VB analyzers

* Merge all analyzer packages

* Add Analyzers.VisualBasic to .slnf
2026-01-07 13:22:46 +00:00
Julien Lebosquain 71ce62ae32 Remove legacy Diagnostics project (#20332)
* Remove legacy Diagnostics project

* Remove DataGrid submodule
2026-01-07 01:24:28 +00:00
Julien Lebosquain 884051ed10 Fix several issues with ExtendClientAreaToDecorationsHint on Windows (#20217)
* Add extended client area Win32 integration tests

* Fix Win32 extended client areas

* Run Win32 integration tests in pipelines

* Add extra tests and fixes when CanResize=false

* Use WM_GETMINMAXINFO to maximize captionless windows

* Use dotnet run on CI for IntegrationTests.Win32

* Address review
2025-12-06 09:48:58 +00:00
Julien Lebosquain 0f8f70437c Rewrite leak tests without dotMemory Unit (#20095)
* Remove dotMemory Unit from LeakTests

* Nuke: run leak tests normally
2025-12-03 10:06:04 +00:00
Julien Lebosquain 246cbfc566 Remove Direct2D1 (#20132) 2025-11-24 11:50:03 +00:00
Julien Lebosquain 40a3af4aa5 Remove netstandard2.0 from almost all projects (#20111)
* Remove netstandard2.0 from almost all projects

* Fix duplicated target frameworks in unit tests

* Fix DesignerSupport tests

* Fix Designer.HostApp packaging

* Build ControlCatalog.Desktop on CI

* Fix another bad auto merge

* Fix LeakTests duplicated target frameworks

* Don't hardcode target framework in DesignerSupportTests
2025-11-21 09:59:39 +00:00
Max Katz 12741e861b Remove Avalonia.Browser.Blazor (#20105) 2025-11-20 09:57:34 +00:00
Julien Lebosquain 70ebc1e226 Remove ReactiveUI (#20101) 2025-11-19 21:05:12 +00:00
Max Katz a4bfae1c29 Headless AvaloniaTestIsolationLevel (#20000)
* Remove Unstable from HeadlessUnitTestSession

* Implement headless AvaloniaTestIsolationLevel

* Duplicate headless unit tests with different levels of isolation

* Fix accidental ABI breaking change

* Adjust docs

* Add IsolationTests

* Fix RunCoreLibsTests nukebuild target

* Headless: reuse sync context, instead of always forcing avalonia context
2025-11-10 01:03:46 -08:00
Julien Lebosquain 467063b54b Remove Tizen (#19722)
* Remove Tizen

* Address review
2025-10-06 07:31:20 +00:00
Julien Lebosquain 1f404646fa Clipboard rework (#19347)
* New clipboard with IDataTransfer

* Move legacy format handling to DataObject wrappers

* macOS clipboard rework

* Browser clipboard rework

* Android clipboard rework

* iOS new clipboard

* X11 clipboard rework

* Simplify IDataTransfer API

* Simplify IClipboardImpl API

* Add DataFormat documentation

* Make DataFormat.SystemName platform specific

* Fix clipboard/DnD samples

* Fix native clipboard UTI conversion

* Adjust IDataTransfer namespaces

* Add Obsolete attributes to IDataObject related methods

* Better API for DataTransferItem

* Tizen clipboard rework

* Add missing clipboard extension methods

* Split IDataTransferItem into IAsyncDataTransferItem and ISyncDataTransferItem

* Rename back ISyncDataTransfer to IDataTransfer

* Added IClipboard API suppressions

* Make IPlatformDragSource NotClientImplementable

* Rename DataFormatKinds

* Added DataTransferItem.CreateText/File

* Implemented typed DataFormat<T>

* Fix X11 text/uri-list encoding

* Add API suppressions

* Adjust ClipboardUriListHelper stream ownership

* Fix legacy clipboard BinaryFormatter deserialization

* Fix macOS build
2025-10-01 11:47:09 +00:00
Julien Lebosquain d7f417017d Move ControlCatalog.MacCatalyst/tvOS to their own folders (#19709)
* Move ControlCatalog.MacCatalyst/tvOS to their own folders

* Exclude tvOS/MacCatalyst from CI builds
2025-09-30 08:36:46 +00:00
Max Katz fca45c1c16 Migrate AvaloniaNameSourceGenerator to IIncrementalGenerator (#19216)
* Add AnalyzerProject.targets targets

* PrivateAssets on Workspaces.Common

* Migrate AvaloniaNameSourceGenerator to IIncrementalGenerator

* Remove outdated lins in the generator readme

* Add GlobPattern.ToString

* Fix tests

* Formatting

* Redo pipeline, make steps more independent from each other, compilation should be reused between dependency changes

* Split XAML parsing and type resolution into separated steps

* Restore CompilationReferencesComparer usage

* Revert "Restore CompilationReferencesComparer usage"

This reverts commit c51341990b8030bb2594ee66e8819b903383bcc1.

* Split ResolvedNamesProvider pipeline step, process files in parallel

* Add comment

* Switch back to EquatableList

* Add cancellation to the incremenetal source gen

* Rethrow cancellation exception
2025-08-13 20:22:14 +00:00
Jan Kučera 21b5812746 Text API sample app (#19455)
* xml documentatation for paragraph properties

* TextTestApp

* text test files renamed parameter

* glyph ink bounds

* shaped buffer make selected row visible

* text test app force light theme

* text test app distinguish start and end distance marks

---------

Co-authored-by: Jan Kučera <miloush@users.noreply.github.com>
Co-authored-by: Benedikt Stebner <Gillibald@users.noreply.github.com>
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
2025-08-13 13:33:33 +00:00
Tim Miller dd8a2693ea [v12] Enable Mac Catalyst in Avalonia.iOS (#19415)
* [v12] Enable Mac Catalyst in Avalonia.iOS

* Consolidate UIKit ControlCatalog csproj files

* Fix the plist

* Split csproj files again

* Update .gitignore

* Desktop Mode

* Storage

* Add maccatalyst as workload target

* Revert .gitignore
2025-08-07 09:12:15 +00:00
Simon Cropp 581ece3711 remove Settings.StyleCop from sln (#19140) 2025-06-27 07:38:07 +00:00
Emmanuel Hansen cecc928dcc Feature - Container Queries (#16846)
* add container queries

* make visual query provider SetSize virtual

* fix container name matching

* add tests

* move border container implementation up to decorator

* move container query demo to ControlCatalog

* make QueryProvider internal

* update container behavior in toplevelRename Query to StyleQuery and make IContainer internal

* fix comment typos

* remove unused usings

* isolate container tests

* update api

* fix tests

* fix no-selector styles in containers being applied all the time

* simplify container search

* add docs to container properties

* addressed api review

* remove weird unmerge cooments

* remove width and height event container subscriptions when visual is detached
2025-04-03 09:02:01 +00:00
Julien Lebosquain 07a76145f4 Remove DataGrid from the main repository (#18401) 2025-03-12 09:31:38 +00:00
Maxwell Katz acd4653411 Add diagnostic metrics/activities (#18314)
* Add System.Diagnostics.DiagnosticSource nuget package for pre-.NET 8 targets

* Move System.Memory reference to Base.props

* Add CompositorRenderPass and CompositorUpdatePass metrics

* Layout measure/arrange pass metrics

* Add UI render pass and input pass meters

* Add observable metrics

* Add RaisingRoutedEvent activity

* Add FindingResourceActivity activity

* Add AttachingStyleActivity and EvaluatingStyleActivator activities

* Add PerformingHitTest activity

* Add MeasuingLayoutable/ArrangingLayoutable activities

* Missed RaisingRoutedEvent definition

* Missed tag definitions

* Start FindingResourceActivity on static resources too

* Fix compilation

* Naming

* Add Avalonia.Diagnostics.Diagnostic.IsEnabled runtime switch

* Maybe make it more trimmable as well
2025-03-06 11:34:10 +00:00
Nikita Tsukanov 0efe89e063 Implemented XEmbed client support with GtkSharp usage example (#17446) 2024-12-16 10:45:32 +03:00
Max Katz af0f73de93 [GeneratedComInterface] based Windows automation (#16543)
* Move automation interfaces to the Avalonia.Win32.Automation with DisableRuntimeMarshalling and use [GeneratedComInterface] marshalling

* Various fixes for the new windows accessibility

* Numerge Avalonia.Win32.Automation into Avalonia.Win32

* Suppress Avalonia.Win32 API warnings, these interfaces never were part of the public API

* Fix IRawElementProviderSimple2 definition on legacy COM interop

* Some changes after review

* More consistent COM method names

* Fix folder hierarchy

* Rewrite SafeArrayMarshaller to use arrays as managed type

* Add ManagedObjectWrapper where's possible

* Throw an exception for unsupported SafeArrayRef scenario

---------

Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
2024-10-31 11:03:29 +00:00
Benedikt Stebner 143399f65a Avalonia.Native TopLevel embedding (#15932)
* Introduce Avalonia.Native TopLevelImpl

* Update Avalonia.Native.csproj

Revert change
2024-06-19 19:55:59 -04:00
Nikita Tsukanov 3a1a69b145 Vulkan backend (#12737)
* Ported the old Vulkan PR

* chop-chop

* Support for external objects in vulkan backend

* Fixed structure type

* Removed debug code

* sln fix

* Don't force vulkan on windows
2024-04-29 09:47:49 +00:00
Max Katz 8a036140db Add AvsEnableDevWarningsNotAsErrors prop (#15106)
* Add AvsEnableDevWarningsNotAsErrors prop

* Begone StyleCop
2024-04-19 17:29:47 -07:00
Max Katz 6f7a003c31 Rename MobileSandbox to Avalonia.SingleProjectSandbox (#15330)
* Define SupportedOSVersion variables shared between projects

* Rename MobileSandbox to Avalonia.SingleProjectSandbox
2024-04-11 20:51:17 -04:00
MakesYT 299c16da55 Enhancement Allow unload AssemblyLoadContext which contains Avalonia content #13935 (#13974)
* Try fix #13935

* Fix

* Fix

* add sample

* Fix

* try load Style by reflection

* try

* Fixed an error when registering properties when uninstalling assemblies

* Allowed to delete the IAssemblyDescriptorResolver StandardAssetLoader _assemblyNameCache

* Resolving merge conflicts

* Fix

* Add exegesis

* optimize

* fix

* Resolving merge conflicts

* nuke
2024-04-05 16:28:28 -07:00
Nikita Tsukanov ba7405aead Initial support for cross-testing against WPF (#15150)
* Initial support for cross-testing against WPF

* More cross-tests
2024-03-29 17:03:49 -07:00
Max Katz 4b1ca3811e Avalonia single project support (#9613)
* MVP SingleProject support for all supported platforms

* Convert MobileSandbox to be a single project

* WASM fixes

* Fix SDK CI version

* Use .NET 8 in build project as well

* Add EnableUnsafeBinaryFormatterSerialization

* Add macos workload, remove wasm-experimental

* And ios

* Specify TFM for single-project projects in dirs.proj

* Return deleted line

* Set PrivateAssets=all on MobileSandbox

* Add ios target only on non-linux in MobileSandbox

* Update after merges

* Update browser sub-project from the templates

* Don't build MobileSandbox on CI

* Couple of improvements

* Add android hack to run without manifest

* Add tvOS support and rearrange some properties

* Delete unusable Packages.targets file + related

* Add global Condition for AvaloniaSingleProject.targets
2024-03-28 09:46:28 +00:00
Max Katz 5537e97aa5 Remove ItemsRepeater from the main repostiory (#14989)
See https://github.com/AvaloniaUI/Avalonia.Controls.ItemsRepeater
2024-03-15 17:36:21 +00:00
affederaffe 4f844b1915 Bump Tmds.DBus.SourceGenerator (#14548)
Co-authored-by: Jumar Macato <16554748+jmacato@users.noreply.github.com>
2024-03-06 10:31:01 +00:00
Max Katz 326ef7c9fd Add .NET 8 target (Avalonia 11.1) (#14535)
* Add .NET 8 target to packable projects

* Update test projects

* Update sample projects to target .NET 8

* Update main Avalonia package to target .NET 8 as well

* Remove MSBuildEnableWorkloadResolver hack and some minor change

* Use net8.0 in nuke build as well

* Pin 8.0.0 SDK

* Adjust API validation

* Pin a valid version

* Remove net461 target from Avalonia package

* Remove unused net6.0 target from Avalonia.Designer.HostApp

* Adjust API diff

* Update ControlCatalog.Android.csproj

* Remove MSBuildEnableWorkloadResolver

* Fix Browser issues on .NET 8

* Fix .NET 8 error

* Fix merge conflicts

* Replace explicit TFMs in .csproj files with a centralized registry

* Fix merge conflict

* Fix AvsLegacyWindowsTargetFrameworks and add hacks for the tests

* Update XCode project CommandLineArgument

---------

Co-authored-by: Nikita Tsukanov <keks9n@gmail.com>
2024-03-05 13:37:26 -08:00
Nikita Tsukanov 254652f908 Use Tmds.DBus.SourceGenerator fork (#14362)
* Use Tmds.DBus.SourceGenerator fork

* submodule url

---------

Co-authored-by: Tim <47110241+timunie@users.noreply.github.com>
2024-01-26 23:15:51 +08:00
Max Katz 02ddfad245 Implement helper OutputApiDiff target (#13818) 2023-12-22 09:44:07 +00:00
Nikita Tsukanov 74110ab267 Removed dependency on System.Drawing.Common (#13431) 2023-10-30 21:44:44 +00:00
workgroupengineering af254d50e4 perf: Micro optimization EndsWith using (#13084)
* perf: Micro optimization EndsWith using

* fix: Address reviews

* fix: Address reviews

---------

Co-authored-by: Max Katz <maxkatz6@outlook.com>
2023-10-02 03:43:35 +00:00
Omid Mafakher 3687cb9ecc Samsung Tizen (#12151)
* implement tizen platform, resolve #6110

* Fix enum types of touch event

* Fix issue of touch tracking.

* #6110 fix ui thread lock

* #6110 send keypad from tizen window

* #6110 fix touch update

* #6110 add text editor for input fields

* #6110 Hide text field

* #6110 Fix issue of text selection and backspace

* #6110 support multi and single line for input

* #6110 temporary set multiline true by default.

* #6110 fix issue of build with latest version and make it compatible

* #6110 by pass double input when softkeyboard showing.

* #6110 adding support for clipboard.

* #6110 add permission helper to tizen platform

* #6110 Implementation of storage provider for tizen

* #6110 send text for key character from hard keyboard

* #6110 Complete the input implementation. soft and hard keyboard

* #6110 remove ElmSharp

* Update Permissions.cs

* #6110 remove open folder for tizen

* #6110 fix the issue of keyboard frezee for tizen

* #6110 add workload to build tizen

* #6110 try to setup tizen workloads for windows

* #6110 change tizen workload install to powershell

* #6110 skip api diff check when package not exists

* #6110 try to fix linux pipeline

* #6110 implement tizen native view

* #6110 add dev analyzer and trimming

* #6110 Migrate to GLES and remove framebuffer

* #6110 Temporary solution to make GL work

* #6110 WIP and add comments

* #6110 optimise gles rendering and timing.

* #6110 fix dependency issue of tizen HarfBuzzSharp

* #6110 patch a fix for clipboard issue

* #6110 Support tizen sdk for old proj type, WIP

* #6110 wip setup app

* #6110 support only net6 for tizen

* #6110 resolve comments

---------

Co-authored-by: Kangho Hur <rookiejava+github@gmail.com>
Co-authored-by: Max Katz <maxkatz6@outlook.com>
2023-09-22 01:19:04 +00:00
workgroupengineering 1cb271fb37 fix: Xaml Compiler error when code-behind class contains a DllImport method (#12882)
* fix: Avalonia.Generators not found

if you put SourceGenerators.props in a project with path are like this:"C:\GitHub\Avalonia\sample\mobile\android\ANoteSample\ANoteSample.csproj", the Compiler is not able to found `Avalonia.Generators`

* test: Add test #10046 Xaml Compiler error when code-behind class contains a DllImport method

* fix: Xaml Compiler error when code-behind class contains a DllImport method

* fix: Address Review

* fix: ValidateApiDiff has thrown an exception
2023-09-18 03:04:03 +00:00
Dan Walmsley 839de5966b remove all traces of old api diff. 2023-08-16 16:48:30 +01:00
Nikita Tsukanov 8680c612fd OSX rendering refactoring 2023-06-30 15:42:12 +06:00
Benedikt Stebner a7886d64e5 Add MobileSandbox for Browser target 2023-06-07 07:11:50 +02:00
Max Katz 4be09e3063 Move to Avalonia.Win32.Interoperability project for correctness 2023-05-22 21:44:54 -04:00
Max Katz 13c98937b3 Merge branch 'master' into fixes/DevTools/WithoutApplicationLifetime 2023-05-10 01:50:05 -04:00
Max Katz dbaffc8206 Remove Solution usage from the nuke tests to avoid random CI errors 2023-05-09 22:08:38 -04:00
Max Katz 6b51f00a4a Minor adjustments to changes in master + fix failing test (need to tick the timer manually) + add some comments 2023-05-09 20:51:11 -04:00
Max Katz 78529a7479 Merge branch 'freeze-ios-android-target-versions' into nunit-headless-intergration 2023-05-09 18:59:04 -04:00
Max Katz 3c1dfde252 Merge branch 'master' into fixes/DevTools/WithoutApplicationLifetime 2023-05-04 20:26:24 -04:00
Max Katz 506d05bac2 Merge branch 'master' into fixes/DevTools/WithoutApplicationLifetime 2023-05-04 18:01:05 -04:00
Benedikt Stebner 4782e1bc11 Merge 2023-05-04 15:07:13 +02:00