AlterNET UI 0.9.735 beta

What’s New in 0.9.720 - 0.9.735

:rocket: Important Improvements

  • VirtualListBox: Fully implemented inside the library using C#.
  • ListView: Fixed scrollbar rendering on Windows.
  • Fixed modal dialog behavior.
  • ListView: HasBorder property now works correctly.

:pushpin: New Classes

  • Added VirtualTreeControl, a tree control that inherits from VirtualListBox.
  • Added WindowWithMemoAndButton form.
  • Added AssemblyMetaData, providing methods for loading assembly metadata.
  • Added BaseObservableCollection and inherited BaseCollection from it.
  • Added ProgressDialog, WindowFilePreview, and TreeControlSeparatorItem.
  • Added ProcessRunnerWithNotification.

:globe_with_meridians: MAUI Platform

  • Added VirtualListBoxView and VirtualTreeControlView, fast list box and tree view controls for MAUI with customizable item rendering.
  • MAUI: Fixed IsVisible behavior for SimpleToolBarView items.
  • MAUI: SimpleToolBarView buttons are now rectangular.
  • MAUI: Introduced the InsertButton method for SimpleToolBarView.
  • MAUI: Added customizable button paddings in SimpleToolBarView.
  • SimpleDialogTitleView: Added optional Gear button (method and click event).
  • SimpleDialogTitleView: Can now be initialized without a Close button.
  • MAUI: Various improvements in SimplePopupDialog and its descendants.
  • MAUI: Introduced SvgImage property in SimpleToolBarView items.
  • MAUI: Created SimpleTwoFieldInputDialog and SimpleSearchDialog.
  • MAUI: Implemented alignment origin for internal dialogs.
  • MAUI: Fixed mouse position issues in child control events.
  • MAUI: Enhanced mouse double-click event handling.
  • MAUI: SimpleInputDialog.DisplayPromptAsync.
  • SimpleToolBarView: Disabled tab stop on buttons.
  • MAUI: Fixed BaseEntry.EscapeClicked event handling in some cases.
  • MAUI: ScrollBars are now hidden when not needed.
  • MAUI: ControlView.TrySetFocusWithTimeout.
  • MAUI: Fixed ImageSet and ImageList behavior.
  • MAUI: Improved ScrollBar rendering on High-DPI displays.
  • MAUI: Enhanced mouse handling for child controls.
  • MAUI: Updated colors when themes change.
  • MAUI: Implemented App.AddIdleTask (fixing multiple issues as many methods now use it).
  • MAUI: Fixed control painting when bounds are empty.
  • MAUI: Enhanced MauiDialogFactoryHandler.ShowMessageBox for single and two-button dialogs.
  • MAUI: Implemented ControlView.SetFocusIfPossible.

:wrench: Fixes

  • AbstractControl: Fixed IsDarkBackground.
  • Color: Fixed IsDark.
  • Fixed Window.Close (previously did not ask CanClose properly).
  • Window: Fixed ShowAndFocus for minimized windows.
  • Control: Fixed SetFocus, added check for minimized windows.
  • Window: Fixed incorrect modal dialog behavior in some cases.
  • AbstractControl: Prevented unnecessary realign when a child control with IgnoreLayout=true is added or removed.
  • Label: Fixed WrapToParent and MaxTextWidth.
  • Fixed SystemSettings.Reset stack overflow in some cases.
  • GenericLabel: Fixed GetPreferredSize.
  • Downgraded SkiaSharp due to compatibility issues with ARM64 Linux.
  • PlessSystemColors: Fixed ControlText initialization.
  • AbstractControl: Fixed ForeColor and BackColor setters to support Color.Empty as in WinForms.
  • VirtualListBox: Fixed EnsureVisible for partially visible last item.
  • VirtualListBox: Fixed vertical text alignment in items.
  • Fixed AbstractControl.HoveredControl related issues.
  • Control: Fixed incorrect ClientSize values.
  • Control: Fixed InteriorWidth and InteriorHeight.
  • Fixed missing borders in multiple controls (issue introduced in the previous build).
  • VirtualListBox: Fixed checkbox painting when horizontally scrolled.
  • Window: Fixed MinimumSize and MaximumSize setters.
  • DataObject: Fixed DeserializeDataObject.
  • VirtualListControl: Improved RangeAdditionController.
  • Fixed possible Assembly.Location exception.
  • ImageDrawable: Fixed unused SvgColor.
  • Fixed Color.Gray100 and other Gray* fields.
  • Fixed Linux-related issues in Window and ListBox.
  • ScrollViewer: Improved mouse wheel scrolling.
  • Control: Fixed incorrect Visible property after native control recreation.
  • PropertyGrid: Fixed focus exception in some cases.
  • FileListBox: Improved “Go to up folder” action.
  • Control.cpp: Fixed BeginUpdate/EndUpdate issues.
  • VirtualListBox: Fixed color rendering for SVG checkboxes in selected state.
  • VirtualListBox: Adjusted SVG check size to fit within items.
  • Caret: Fixed internal C++ exceptions in some cases.

:sparkles: New Features

  • VirtualListBox: Item text can now be multiline (requires DrawLabelFlags.TextHasNewLineChars).
  • FileListBox: Added new members; folders now use color SVG icons.
  • FindReplaceControl: Find, Replace, and Scope editors now have borders for better cross-platform consistency.
  • PreviewTextFile: Now loads files using a background thread.

:artist_palette: Drawing Improvements

  • SkiaGraphics: Implemented various clipping methods.
  • Graphics: DrawElements now supports empty rectangles.
  • Graphics: DrawLabel can render multiline text when a relevant flag is set.
  • Graphics: Added DrawStrings, enabling text rendering with adjustable line spacing and alignment.
  • SkiaGraphics: Implemented FillPolygon, Polygon, and improved RoundedRectangle, Rectangle, Ellipse, Circle.
  • Image: Fixed FromSkia under MAUI.
  • SkiaGraphics: Fixed DrawImage with rect parameter.
  • SkiaUtils: Added GrayscaleColorFilter, ImageToBitmap, and ConvertToGrayscale.
  • Image: ToGrayScale() now uses SkiaSharp.
  • Added constants for system colors when the dark theme is active.
  • DrawingUtils: Fixed wrap text methods.

:counterclockwise_arrows_button: API Changes

  • MessageBox: Adjusted all member signatures to return void and include an onClose parameter, enabling full library implementation and MAUI compatibility.
  • AnimationPlayer: LoadFromUrl now gracefully handles missing files instead of throwing exceptions.
  • GenericImage: Load now returns false instead of throwing an exception when no image is found.
  • IconSet: No longer raises exceptions when icons are missing; constructors support nullable parameters.
  • ResourceLoader: Most methods now return null instead of throwing exceptions when no resource is found.
  • EnumImages: Prevents exceptions when missing SVG assets.