Made SwitchPresenter inherit from ContentPresenter directly
Updated ColorPicker to use ListBox+SwitchPresenter vs. Pivot
Split out Styles
Removed conditional CornerRadius
TODO:
- [ ] See if 'Parent' can be removed from SwitchPresenter
- [ ] Add margins/padding back to content within SwitchPresenter for each 'tab' of the Color Picker
# Conflicts:
# Microsoft.Toolkit.Uwp.Input.GazeInteraction/Microsoft.Toolkit.UWP.Input.GazeInteraction.vcxproj
# UnitTests/UnitTests.XamlIslands/UnitTests.XamlIslands.csproj
# Windows Community Toolkit.sln
* Initial guard APIs added
* Added EqualTo and NotEqualTo APIs
* Added more Guard APIs
* New interval Guard APIs added
* Added Guard APIs for IEnumerable<T> values
* Renamed APIs
* Added Guard APIs for Stream values
* Added Guard APIs for ReadOnlySpan<T> values
* Added Guard APIs for ReadOnlyMemory<T> values
* Code refactoring
* Minor code refactoring
* Added Guard.IsBitwiseEqualTo<T> API
* Added Guard.IsNull API
* Code refactoring and optimizations
* Code refactoring
* Added Guard.HasSizeNotEqualTo<T> API
* Added Guard size API overloads for the string type
* Added Guard size API overloads for T[] arrays
* Code refactoring
* Removed unnecessary using directives
* Added Guard reference check APIs
* Added new Guaard APIs for string values
* Improved Guard.IsBitwiseEqualTo<T> API
* Improved Guard.IsNull APIs
* Added new size APIs for copy operations
* Added new type test APIs, minor code tweaks
* Minor bug fixes
* Added Guard APIs for Task values
* Minor code tweak
* Added new Guard.IsEmpty APIs
* Refactored code to remove unsafe requirement
* Added Guard.IsInRange<T> APIs
* Added missing type checks in Guard.IsBitwiseEqualTo API
* Added ValueTypeExtensions.ToHexString API
* Code refactoring
* Added ValueTypeExtensions tests
* Added general Guard tests
* Bug fixes in the Guard class
* Minor speed improvements
* Code refactoring
* Removed unnecessary using directives
* More speed improvements and API refactoring
* Refactored/fixed some Guard APIs
* More bug fixes
* Added Guard tests for array APIs
* Fixed the Guard.IsNotEmpty<T> array API
* Moved exception throwers to separate class
* Moved general Guard throwers to separate class
* Disabled warning for XML overload resolution
* Moved array Guard throwers to separate class
* Moved stream Guard throwers to separate class
* Fixed some XML docs
* Moved enumerable Guard throwers to separate class
* Moved task Guard throwers to separate class
* Added new Guard APIs for tasks
* Moved string Guard throwers to separate class
* Moved ReadOnlySpan<T> Guard throwers to separate class
* Added Span<T> APIs to the Guard class
* Moved ReadOnlyMemory<T> Guard throwers to separate class
* Added Memory<T> APIs to the Guard class
* Minor code refactoring
* Update file headers
* Removed unnecessary methods
* Added TypeExtensions.ToTypeString extension
* Improved error messages for general Guard APIs
* Improved error messages for Enumerable Guard APIs
* Improved error messages for stream Guard APIs
* Improved error messages for array Guard APIs
* Improved error messages for string Guard APIs
* Improved error messages for task Guard APIs
* Improved error messages for span Guard APIs
* Improved error messages for memory Guard APIs
* Improved type string for nullable types
* Improved type string for value tuple types
* Minor performance improvement
* Added numeric comparison T4 file
* Updated .gitignore to skip generated files
* Moved comparison Guard APIs to separate file
* Renamed template file, fixed incorrect XML doc
* Fixed missing blank line
* Removed unnecessary type parameters
* Moved enumerable Guard APIs to separate file
* Code refactoring in the enumerable T4 template
* Renamed a file
* Added empty template for ThrowHelper.Collection
* Code refactoring in the T4 templates
* Switched collection throw helpers to T4 generation
* Code refactoring
* Removed incorrect file header
* Added new Guard.IsInRangeFor API
* Updated .gitignore, added generated files to source control
* Added tests for Guard.IsInRangeFor
* Improved formatting of values in error messages
* Improved error messages
* More improvements to the error messages
* Minor code tweaks
* Added Guard.IsNotOfType APIs
* Added Guard.IsNotAssignableToType APIs
* Added Guard.IsDefault<T> APIs
* Fixed some XML docs
* Added missing [Pure] attribute
* Fixed typo in a comment
* Removed unnecessary comment after code changes
* Added XML comment for the T4 service
* Added more comments to ToHexString
* Suppressed an incorrect code style warning
* Added more tests for Guard.IsInRange
* Added Guard.IsNotInRangeFor APIs
* Added readme file for the T4 templates
* Changed generated files extension to .g.cs to avoid conflicts
* Added Guard.IsCloseTo and Guard.IsNotCloseTo APIs
* Added tests for IsCloseTo
* Updated ".g.cs" extension for generated files
Co-Authored-By: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
* Removed extra space (typo)
Co-Authored-By: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
* More tweakes to the Guard.md file
* Excluded TypeInfo.g.cs file from .ttinclude from checkout
* Added more info about target ranges for some APIs
* Added IsCloseTo overloads for long type
* Minor code tweaks
* Added comment to describe (uint) cast range check trick
* Added a nore about the .g.cs files being checked in
* Added .NET Standard 2.1 target, adjusted imported packages
* Added [NotNull] attributes when needed
* Added flow attributes to bool Guard APIs
* Added missing Guard APIs for the string type
* Added shared main unit test project
* Removed duplicate files from UWP unit test project
* Refactored UWP unit tests project (can't be in same folder as .shproj)
* Moved markdown tests back into UWP project
* Added UnitTests.NetCore project
* Fixed some styling issues in test projects
* Added .editorconfig file to UniTests.NetCore project too
* Moved .editorconfig file to Shared project folder
* Removed NetCore Tests compilation for Native Configuration.
* Update Windows Community Toolkit.sln
* Updated multiline comments style
* Renamed some Guard APIs
* Fixed collections tests, moved to shared project
* Removed unnecessary [SuppressMessage] attributes
* Added internal [NotNull] and [DoesNotReturnIf] attributes
* Removed build warnings
* Removed leftover compiler directives
* Added Guard.IsTrue/False overloads with custom message
* Fixed test file location after merge
* Fixed Span<T> and Unsafe package references
Co-authored-by: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
Co-authored-by: Alexandre Zollinger Chohfi <alzollin@microsoft.com>
Co-authored-by: Alexandre Zollinger Chohfi <chohfi@outlook.com>
Co-authored-by: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com>
* Update dev/7.0.0 branch version number
* Add a new project for layout controls
* First port of the StaggeredPanel to the new StaggeredLayout
* Create a new class that will hold layout information
* Early exit if we don't have any items
* Early exit for no realization area to render to
* Don't work with the UIElement directly within the measure method. Instead use a new StaggeredItem to track the size of the element
* Stop measuring elements when we are outside the realization rect
* Track the top of the element on the StaggeredItem
* Track the column layout and use that to arrange the items after measure
* Make sure the top of the elemet accounts for the spacing between items
* Move the column width to the state
* Remove horizontal alignment calculations. I don't believe this should be part of a layout. The ItemsRepeater will handle that
* No need to arrange anything if there is no realization bounds
* No need to keep arranging if we are outside the bounds
* Return the column for the given index
* Return the final size always
* Get the item in the column layout, not the index
* Stop measuring after we have measured all columns that fit the bounds
* If the column width is different from what was previously there then clear the items because we will need to recalculate the size of the items
* Manually recycle elements that fall outside of the bounds
* since we are staying within one column we do not need to track the height and number of items in each column
* Make sure we remove the state
* Rename method to clear all the things
* When the width of the panel changes we could get more columns to use. In that case clear out the cache of columns
* We ALWAYS want to measure an item that will be in the bounds
* Calculate the height based on the number of average number of items we have or, if we have all of the items use the total height
* Remove manual recycling logic
* Remove padding property to be in line with the WinUI layouts
* Little code Clean up
* Add some comments
* Remove method not used anymore
* We've already calculated the top. Use that value for placement
* Remove items from the layout state when an item is removed from the layout itself
* Clear the columns after the removal item
* We don't need to clear any of the cache if the an item was added/removed where we haven't cached
* Clear cached items when an item is added
* Clear the entire cache when the collection has been reset
* No need to calculate the number of columns. We have it in our layout state
* First port of the WrapPanel to be a Layout
* Stop measuring items when we are outside the bounds
* Only arrange items within the bounds
* The bottom of the items needs to be within the top bounds.
* Keep track of the element measure and only get the element when we need to
* break out of the arrange when we have passed the realization bounds
* Always measure items that are within the bounds
* Add the <inheritdoc /> tag
* Clear items when the collection changes
* When the Orientation changes, clear the cache
* No need to clear the entire collection. We can just switch the values
* Only check if we're past the bounds when we move to the next row
* Remove Padding to be in line with the WinUI Layouts
* Add debugger info
* Store the position of items instead of calculating each time
* Reset the position of items whenever a layout property changes
* Clear positions whenever the available U value changes
* Clear the available U whenever orientation changes
* Remove property not used
* Make sure to null the position when orientation changes
* Remove the attached property and store the spacing in the state
* Calculate the height of the items
* Don't average items that haven't had their position calculated yet
* Fix type in variable
* Make sure elements get recycled when they are outside the scope of the bounds. Move getting the elements to the layout
* Ignore row spacing for determining which column an items goes to
* This array holds ints, not doubles
* Add height to the debugger display
* We need to recalculate the height when the RowSpacing changes
* Revert the change to not account for row spacing when finding the column. Items will jump around when playing with RowSpacing but that's not a common use case and items were not placed in the right column
* Use the laest version of WinUI
* Make sure elements that are above the bounds are recycled
* Recycle an element if it is below the bounds
* Make method static
* Add case handling for items being replaced
* Switch to a switch statement
* Add a comment as to what is happening when the height is zero
* Add required space after brace
* Handle moving of items
* Recycle elements when they are replaced or moved to ensure the correct context
* Switch to a swtich statement for the items changing
* Add support for moving an item in the wrap layout
* Do not clear the items from the collection. zero out their measure values so they get recalculated
* Add handling for an item being replaced in the wrap layout
* A move could effect the position of items after it. So just clear them out
* Add header to file
* Remove unused usings
* Add summary comment for the class
* Add a simple WrapLayout sample
* Add a simple sample for the new staggered layout
* Put the property on different lines
* Remove trailing white space
* Remove empty Item group
* recycle elements that are below the bounds
* Rename local method
* Only measure an item if it wasn't already measured. This helps speed up items when first being measured
* Increae the size of the items
* Add the location for code and documentation
* Track the elements that are used and make sure they recycled when they are outside of the bounds of the realization area
* Change the category for the layouts
* When an item changes size we need to set a new height for the item and reset everything after it
* If the current measure of the item does not match then the size of the item changed. We need to recalculate layout for everything after it
* Need to check changes in V also
* Just use the handy Equals method!
* No need to remove items that are above index
* Move items to a new row if the size makes them larger than the given space
Co-authored-by: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
Co-authored-by: Kyaa-dost <35208324+Kyaa-dost@users.noreply.github.com>
* Code refactoring
* Added StringExtensions tests
* Fixed test method names
* Added ArrayExtensions tests
* Removed MemoryPool<T>.Resize extension
* Added ArrayPoolExtensions tests
* Added SpinLockExtensions tests
* Moved HashCode<T> class to Helpers namespace
* Added ByReference<T> tests
* Changed visibility of one constructor
* Improved ByReference<T> tests
* Added ReadOnlyByReference<T> tests
* Fixed a small build error
* Added new List<T> extensions
* Added List<T> extensions tests
* Fixed a parameter name
* Fixed incorrect XML docs
* Added missing List<T> extension APIs
* Disabled warning
* Removed unnecessary type constraint
* Bug fixes to some List<T> extensions
* Improved some XML docs
* Added List<T>.DangerousAsSpan extension
* Added more unit tests
* Fixed a bug in the List<T>.DangerousAsSpan extension
* Minor tweaks to some docs
* Removed List<T> extensions (too hacky)
* Minor code tweaks (just in case)
* Fixed incorrect API visibility
* Added tests for the HashCode<T> type
* Added .NET Core 3.0 tests for HashCode<T>
* Added ParallelHelper.For tests
* Code refactoring
* Added ParallelHelper.For2D tests
* Fixed empty condition check for 2D loops
* Added ParallelHelper.ForEach in tests
* Added ParallelHelper.ForEach ref tests
* Fixed ParallelHelper.For2D tests
* Improved ParallelHelper.For/2D tests
* Switched HighPerformance tests to shared project
* Renamed HighPerformance.NetCore project
* Moved HighPerformance tests to subfolder
* Fixed incorrect namespaces
* Added empty HighPerformance.UWP test project
* Fixed shared project for UWP test project
* Added missing Unsafe NuGet package to UWP project
* Switched compile tile directives in HighPerformance project
* Added missing file headers
* Minor code refactoring to HashCode<T>
* Minor performance improvements
* Fixed HashCode<T>.Combine API for > int.MaxValue byte sizes
* Improved HashCode<T>.Combine performance on small spans
* Speed improvements in the GetDjb2HashCode<T> API
* Refactored HashCode<T> to facilitate extensions
* Fixed incorrect namespace
* Added HashCodeExtensions class
* Added HashCodeExtensions tests
* Minor code style tweaks
* Added SpanEnumerable<T> type
* Updated T[] and Span<T> Enumerate extensions
* Added SpanExtensions tests
* Fixed an issue in the DJB2 hash method
* Minor code refactoring
* Added EditorBrowsable attributes to enumerator types
* Added MemoryOwner<T> type
* Minor code refactoring
* More code refactoring
* Added MemoryOwner<T> Empty and Length properties
* Added missing header text
* Fixed a refactoring typo
* Added MemoryOwner<T> tests
* Minor code refactoring
* Fixed MemoryOwner<T> XML docs
* Minor optimization to GetDjb2HashCode
* Minor optimization to HashCode<T>.CombineValues
* Minor optimization to Count extension with managed types
* Added a Count test for the managed path
* Added BoolExtensions.ToInt API
* Removed automatically added rules
* Fixed incorrect XML docs
* Added MemoryOwner<T>.DangerousGetReference API
* Added extensions for some MemoryMarshal APIs
* Minor code tweaks
* Added MemoryOwner<T> method
* Added more XML comments
* Fixed an incorrect method prototype
* Code refactoring, added AllocationMode enum
* Added SpanOwner<T> type
* Added SpanOwner<T> tests
* Removed unnecessary check
* Removed unnecessary package reference on .NET Standard 2.1
* Improved tests for ReadOnlySpan<T>.Count
* Fixed a bug in ReadOnlySpan<T>.Count with managed types
* Updated two type constraints
* Minor optimizations to ParallelHelper
* Minor code tweaks
* Removed unnecessary APIs
* Added UInt32Extensions class
* Added unit tests for the UInt32Extensions class
* Fixed some comments
* Added some remarks to the new uint APIs
* Minor optimization
* Added UInt64Extensions class
* Added unit tests for UInt64Extensions type
* Fixed some typos and comments
* Fixed a unit test
* Minor performance improvements
* Added ToString() override and debug display to MemoryOwner<T>
* Added ToString() override and debug display to SpanOwner<T>
* Added MemoryOwner<T> debug proxy type
* Added SpanOwner<T> debug proxy type
* Added missing using directive
* Added info to the .csproj file
* Removed two APIs, for additional safety
* Refactored bit helpers into a separate class, added by ref overloads
* Minor code tweaks
* Added Box<T> type
* Added tests for the Box<T> type
* Added Box<T> object schema
* Added Box<T>.GetFrom(object) API
* Added more Box<T> tests, added more comments
* Fixed a copy paste fail
* Added ValueTypeExtensions type
* Added ValueTypeExtensions tests
* Added missing GC.SuppressFinalize call in MemoryOwner<T>
* Initial implementation of MemoryStream
* Implemented MemoryStream.Seek method
* Implemented ReadByte and WriteByte methods
* Added Memory<T> extension to create a Stream
* Implemented MemoryStream.Dispose method
* Fixed typos in a test class
* Added ReadAsync overrides
* Added WriteAsync overrides
* Code refactoring
* Added more .NET Standard 2.1 overrides
* Moved CopyToAsync method to .NET Standard 2.0
* Moved FlushAsync, reordered methods
* Added [ReadOnly]Memory<T> extension tests
* Added initial stream tests
* Fixed a bug in MemoryStream.Read
* Added unit tests for the MemoryStream type
* Added MemoryStream.[Read|Write]Byte tests, minor tweaks
* Updated .sln file
* Added IMemoryOwnerStream type
* Added IMemoryOwnerExtensions.AsStream type
* Minor tweaks to some XML comments
* Added IMemoryOwner extensions and stream tests
* Fixed an incorrect namespace
* Aadded ArrayPoolBufferWriter<T> type
* Minor code refactoring
* Added debug view and ToString override for ArrayPoolBufferWriter<T>
* Minor code refactoring
* Added destructor to ArrayPoolBufferWriter<T> type
* Added tests for ArrayPoolBufferWriter<T>
* Fixed some copy-paste fails
* Added IMemoryOwner<T> interface to ArrayPoolBufferWriter<T>
* Updated .csproj description
* Fixed some comments
* Updated sln
* Minor code style tweak
* Minor optimization, code style tweaks
* Fixed some tests not running on .NET Core 3.0
* Added initial Array2DExtensions type
* Added T[,].AsSpan extension
* Added Count<T> and Djb2 hashcode extensions for T[,] arrays
* Added tests for the 2D array extensions
* Code refactoring
* Added NullableByReference<T> type
* Minor code refactoring
* Added NullableReadOnlyByReference<T> type
* Added unit tests for new Nullable[ReadOnly]ByReference<T> types
* Fixed an XML comment
* Added T[,] array GetRow and GetColumn extensions
* Added Array2DColumnEnumerable<T>.ToArray() helper method
* Code refactoring
* Added T[,].GetRow support on .NET Standard 2.0
* Added and optimized T[,].Fill extension
* Added T[,].Fill tests
* Added tests for T[,].GetRow extension
* Bug fixes in the 2D array enumerators
* Added tests for T[,].GetColumn extension
* Fixed a typo
* Fixed duplicate using directives
* Fixed an XML comment
* Inverted precompiler conditional directive for clarity
* Fixed error in an XML comment
* Removed unnecessary using directive
* Fixed publisher name in UWP test project
* Added StyleCop.Analyzers package to UWP test project
* Resolved StyleCop warnings in unit tests
* Added StyleCop.Analyzers package to .NET Core test project
* Resolved .NET Core specific StyleCop warnings
* Updated Test SDK and packages in .NET Core unit test project
* Fixed object name in MemoryStream.ThrowObjectDisposedException()
* Minor code style tweak and optimization
* Added test for the argument name in ParallelHelper exceptions
* Fixed visibility modifiers
* Fixed Box<T> type on ARM devices
* Added MemoryStream tests for argument names in exceptions
* Minor improvements to some unit tests
* Removed duplicate System.Runtime.CompilerServices.Unsafe reference
* Removed unnecessary StyleCop reference and .ruleset file
* Resolved StyleCop warnings in unit tests
* Minor performance improvements in ByReference<T> types on x64
* Minor style tweaks
* Fixed missed refactoring
* Code refactoring
* Added missing readonly struct modifiers
* Enabgled running HighPerformance tests on build.
(cherry picked from commit c5524125391ca208586d0de09fffb89e3a01264d)
* Bug fixes in the Box<T> type on some runtimes
* Added missing "Pack" target in UWP test project
* Code refactoring, moved Box<T> extensions to same file for clarity
* Bumped System.Runtime.CompilerServices.Unsafe to 5.0.0-preview.2.20160.6
* Fixed Box<T>.ToString/GetHashCode issues on .NET Core 2.1 Release
* Updated comments on the Box<T>.GetReference() method
Also pushing this commit just to re-trigger the CI build, since GitHub went offline and caused the previous one to fail/half midway through
* Fixed package downgrade in UWP test project
* Aligned ref returns for ReadOnlySpan<T>/string to MemoryMarsha.GetReference
* Renamed ByReference<T> APIs
* Removed unnecessary preview package
Co-authored-by: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
Co-authored-by: Alexandre Zollinger Chohfi <alzollin@microsoft.com>