Add new type files from decompiled source

- FlexDirection, FlexWrap, FlexJustify, FlexAlignItems, FlexAlignContent, FlexAlignSelf enums
- FlexBasis struct for flex layout
- ContextMenuItem class for context menus
- ISkiaQueryAttributable interface for shell navigation
- SkiaTextSpan class for formatted text

These types support FlexLayout, context menus, and text formatting.
Other types (event args, enums, etc.) were already defined inline in View files.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-01 10:07:57 -05:00
parent 1e84c6168a
commit d0d8e92dad
11 changed files with 549 additions and 0 deletions

397
MERGE_TRACKING.md Normal file
View File

@@ -0,0 +1,397 @@
# OpenMaui Linux - Recovery Merge Tracking
## Executive Summary
| Category | In Main | In Decompiled | New to Add | To Compare | Completed |
|----------|---------|---------------|------------|------------|-----------|
| Handlers | 44 | 48 | 13 | 35 | 0 |
| Views/Types | 41 | 118 | 77 | 41 | 0 |
| Services | 33 | 103 | 70 | 33 | 0 |
| Hosting | 5 | 12 | 7 | 5 | 0 |
| Dispatching | 0 | 3 | 3 | 0 | 0 |
| Native | 0 | 5 | 5 | 0 | 0 |
| **TOTAL** | **123** | **289** | **175** | **114** | **0** |
**Branch:** `final`
**Base:** Clean main (builds with 0 errors)
**Status:** Ready to begin
---
## HANDLERS
### New Handlers (13 files) - TO ADD
- [ ] ContentPageHandler.cs
- [ ] FlexLayoutHandler.cs
- [ ] GestureManager.cs
- [ ] GridHandler.cs
- [ ] GtkWebViewHandler.cs
- [ ] GtkWebViewManager.cs
- [ ] GtkWebViewPlatformView.cs
- [ ] GtkWebViewProxy.cs
- [ ] LayoutHandlerUpdate.cs
- [ ] LinuxApplicationContext.cs
- [ ] RelayCommand.cs
- [ ] SizeChangedEventArgs.cs
- [ ] SkiaWindow.cs
- [ ] StackLayoutHandler.cs
- [ ] TextButtonHandler.cs
### Existing Handlers (35 files) - TO COMPARE
- [ ] ActivityIndicatorHandler.cs
- [ ] ActivityIndicatorHandler.Linux.cs
- [ ] ApplicationHandler.cs
- [ ] BorderHandler.cs
- [ ] BoxViewHandler.cs
- [ ] ButtonHandler.cs
- [ ] ButtonHandler.Linux.cs
- [ ] CheckBoxHandler.cs
- [ ] CheckBoxHandler.Linux.cs
- [ ] CollectionViewHandler.cs
- [ ] DatePickerHandler.cs
- [ ] EditorHandler.cs
- [ ] EntryHandler.cs
- [ ] EntryHandler.Linux.cs
- [ ] FlyoutPageHandler.cs
- [ ] FrameHandler.cs
- [ ] GraphicsViewHandler.cs
- [ ] ImageButtonHandler.cs
- [ ] ImageHandler.cs
- [ ] ItemsViewHandler.cs
- [ ] LabelHandler.cs
- [ ] LabelHandler.Linux.cs
- [ ] LayoutHandler.cs
- [ ] LayoutHandler.Linux.cs
- [ ] NavigationPageHandler.cs
- [ ] PageHandler.cs
- [ ] PickerHandler.cs
- [ ] ProgressBarHandler.cs
- [ ] ProgressBarHandler.Linux.cs
- [ ] RadioButtonHandler.cs
- [ ] ScrollViewHandler.cs
- [ ] SearchBarHandler.cs
- [ ] SearchBarHandler.Linux.cs
- [ ] ShellHandler.cs
- [ ] SliderHandler.cs
- [ ] SliderHandler.Linux.cs
- [ ] StepperHandler.cs
- [ ] SwitchHandler.cs
- [ ] SwitchHandler.Linux.cs
- [ ] TabbedPageHandler.cs
- [ ] TimePickerHandler.cs
- [ ] WebViewHandler.cs
- [ ] WebViewHandler.Linux.cs
- [ ] WindowHandler.cs
---
## VIEWS & TYPES
### New Types (77 files) - TO ADD
- [ ] AbsoluteLayoutBounds.cs
- [ ] AbsoluteLayoutFlags.cs
- [ ] CheckedChangedEventArgs.cs
- [ ] CollectionSelectionChangedEventArgs.cs
- [ ] ColorExtensions.cs
- [ ] ContextMenuItem.cs
- [ ] FlexAlignContent.cs
- [ ] FlexAlignItems.cs
- [ ] FlexAlignSelf.cs
- [ ] FlexBasis.cs
- [ ] FlexDirection.cs
- [ ] FlexJustify.cs
- [ ] FlexWrap.cs
- [ ] FlyoutLayoutBehavior.cs
- [ ] FontExtensions.cs
- [ ] GridLength.cs
- [ ] GridPosition.cs
- [ ] GridUnitType.cs
- [ ] ImageLoadingErrorEventArgs.cs
- [ ] IndicatorShape.cs
- [ ] ISkiaQueryAttributable.cs
- [ ] ItemsLayoutOrientation.cs
- [ ] ItemsScrolledEventArgs.cs
- [ ] ItemsViewItemTappedEventArgs.cs
- [ ] Key.cs
- [ ] KeyEventArgs.cs
- [ ] KeyModifiers.cs
- [ ] LayoutAlignment.cs
- [ ] LineBreakMode.cs
- [ ] LinuxDialogService.cs
- [ ] MenuBarItem.cs
- [ ] MenuItem.cs
- [ ] MenuItemClickedEventArgs.cs
- [ ] NavigationEventArgs.cs
- [ ] PointerButton.cs
- [ ] PointerEventArgs.cs
- [ ] PositionChangedEventArgs.cs
- [ ] ProgressChangedEventArgs.cs
- [ ] ScrollBarVisibility.cs
- [ ] ScrolledEventArgs.cs
- [ ] ScrollEventArgs.cs
- [ ] ScrollOrientation.cs
- [ ] ShellContent.cs
- [ ] ShellFlyoutBehavior.cs
- [ ] ShellNavigationEventArgs.cs
- [ ] ShellSection.cs
- [ ] SkiaAbsoluteLayout.cs
- [ ] SkiaContentPage.cs
- [ ] SkiaContextMenu.cs
- [ ] SkiaFlexLayout.cs
- [ ] SkiaFrame.cs
- [ ] SkiaGrid.cs
- [ ] SkiaMenuFlyout.cs
- [ ] SkiaSelectionMode.cs
- [ ] SkiaStackLayout.cs
- [ ] SkiaTextAlignment.cs
- [ ] SkiaTextSpan.cs
- [ ] SkiaToolbarItem.cs
- [ ] SkiaToolbarItemOrder.cs
- [ ] SkiaVerticalAlignment.cs
- [ ] SkiaVisualState.cs
- [ ] SkiaVisualStateGroup.cs
- [ ] SkiaVisualStateGroupList.cs
- [ ] SkiaVisualStateSetter.cs
- [ ] SliderValueChangedEventArgs.cs
- [ ] StackOrientation.cs
- [ ] SwipeDirection.cs
- [ ] SwipeEndedEventArgs.cs
- [ ] SwipeItem.cs
- [ ] SwipeMode.cs
- [ ] SwipeStartedEventArgs.cs
- [ ] SystemClipboard.cs
- [ ] TabItem.cs
- [ ] TextAlignment.cs
- [ ] TextChangedEventArgs.cs
- [ ] TextInputEventArgs.cs
- [ ] ThicknessExtensions.cs
- [ ] ToggledEventArgs.cs
- [ ] WebNavigatedEventArgs.cs
- [ ] WebNavigatingEventArgs.cs
### Existing Views (41 files) - TO COMPARE
- [ ] LinuxWebView.cs
- [ ] SkiaActivityIndicator.cs
- [ ] SkiaAlertDialog.cs
- [ ] SkiaBorder.cs
- [ ] SkiaBoxView.cs
- [ ] SkiaButton.cs
- [ ] SkiaCarouselView.cs
- [ ] SkiaCheckBox.cs
- [ ] SkiaCollectionView.cs
- [ ] SkiaContentPresenter.cs
- [ ] SkiaDatePicker.cs
- [ ] SkiaEditor.cs
- [ ] SkiaEntry.cs
- [ ] SkiaFlyoutPage.cs
- [ ] SkiaGraphicsView.cs
- [ ] SkiaImage.cs
- [ ] SkiaImageButton.cs
- [ ] SkiaIndicatorView.cs
- [ ] SkiaItemsView.cs
- [ ] SkiaLabel.cs
- [ ] SkiaLayoutView.cs
- [ ] SkiaMenuBar.cs
- [ ] SkiaNavigationPage.cs
- [ ] SkiaPage.cs
- [ ] SkiaPicker.cs
- [ ] SkiaProgressBar.cs
- [ ] SkiaRadioButton.cs
- [ ] SkiaRefreshView.cs
- [ ] SkiaScrollView.cs
- [ ] SkiaSearchBar.cs
- [ ] SkiaShell.cs
- [ ] SkiaSlider.cs
- [ ] SkiaStepper.cs
- [ ] SkiaSwipeView.cs
- [ ] SkiaSwitch.cs
- [ ] SkiaTabbedPage.cs
- [ ] SkiaTemplatedView.cs
- [ ] SkiaTimePicker.cs
- [ ] SkiaView.cs
- [ ] SkiaVisualStateManager.cs
- [ ] SkiaWebView.cs
---
## SERVICES
### New Services (70 files) - TO ADD
- [ ] AccessibilityServiceFactory.cs
- [ ] AccessibleAction.cs
- [ ] AccessibleProperty.cs
- [ ] AccessibleRect.cs
- [ ] AccessibleRole.cs
- [ ] AccessibleState.cs
- [ ] AccessibleStates.cs
- [ ] AnnouncementPriority.cs
- [ ] AppInfoService.cs
- [ ] ColorDialogResult.cs
- [ ] ConnectivityService.cs
- [ ] DesktopEnvironment.cs
- [ ] DeviceDisplayService.cs
- [ ] DeviceInfoService.cs
- [ ] DisplayServerType.cs
- [ ] DragAction.cs
- [ ] DragData.cs
- [ ] DragEventArgs.cs
- [ ] DropEventArgs.cs
- [ ] FileDialogResult.cs
- [ ] FolderPickerOptions.cs
- [ ] FolderPickerResult.cs
- [ ] FolderResult.cs
- [ ] GtkButtonsType.cs
- [ ] GtkContextMenuService.cs
- [ ] GtkFileChooserAction.cs
- [ ] GtkHostService.cs
- [ ] GtkMenuItem.cs
- [ ] GtkMessageType.cs
- [ ] GtkResponseType.cs
- [ ] HighContrastChangedEventArgs.cs
- [ ] HighContrastColors.cs
- [ ] HighContrastTheme.cs
- [ ] HotkeyEventArgs.cs
- [ ] HotkeyKey.cs
- [ ] HotkeyModifiers.cs
- [ ] IAccessible.cs
- [ ] IAccessibleEditableText.cs
- [ ] IAccessibleText.cs
- [ ] IDisplayWindow.cs
- [ ] IInputContext.cs
- [ ] KeyModifiers.cs
- [ ] LinuxFileResult.cs
- [ ] MauiIconGenerator.cs
- [ ] NotificationAction.cs
- [ ] NotificationActionEventArgs.cs
- [ ] NotificationClosedEventArgs.cs
- [ ] NotificationCloseReason.cs
- [ ] NotificationContext.cs
- [ ] NotificationOptions.cs
- [ ] NotificationUrgency.cs
- [ ] NullAccessibilityService.cs
- [ ] NullInputMethodService.cs
- [ ] PortalFolderPickerService.cs
- [ ] PreEditAttribute.cs
- [ ] PreEditAttributeType.cs
- [ ] PreEditChangedEventArgs.cs
- [ ] ScaleChangedEventArgs.cs
- [ ] SystemColors.cs
- [ ] SystemTheme.cs
- [ ] TextCommittedEventArgs.cs
- [ ] TextRun.cs
- [ ] ThemeChangedEventArgs.cs
- [ ] TrayMenuItem.cs
- [ ] VideoAccelerationApi.cs
- [ ] VideoFrame.cs
- [ ] VideoProfile.cs
- [ ] VirtualizationExtensions.cs
- [ ] WaylandDisplayWindow.cs
- [ ] X11DisplayWindow.cs
### Existing Services (33 files) - TO COMPARE
- [ ] AppActionsService.cs
- [ ] AtSpi2AccessibilityService.cs
- [ ] BrowserService.cs
- [ ] ClipboardService.cs
- [ ] DisplayServerFactory.cs
- [ ] DragDropService.cs
- [ ] EmailService.cs
- [ ] Fcitx5InputMethodService.cs
- [ ] FilePickerService.cs
- [ ] FolderPickerService.cs
- [ ] FontFallbackManager.cs
- [ ] GlobalHotkeyService.cs
- [ ] Gtk4InteropService.cs
- [ ] HardwareVideoService.cs
- [ ] HiDpiService.cs
- [ ] HighContrastService.cs
- [ ] IAccessibilityService.cs
- [ ] IBusInputMethodService.cs
- [ ] IInputMethodService.cs
- [ ] InputMethodServiceFactory.cs
- [ ] LauncherService.cs
- [ ] LinuxResourcesProvider.cs
- [ ] NotificationService.cs
- [ ] PortalFilePickerService.cs
- [ ] PreferencesService.cs
- [ ] SecureStorageService.cs
- [ ] ShareService.cs
- [ ] SystemClipboard.cs
- [ ] SystemThemeService.cs
- [ ] SystemTrayService.cs
- [ ] VersionTrackingService.cs
- [ ] VirtualizationManager.cs
- [ ] X11InputMethodService.cs
---
## HOSTING
### New Hosting (7 files) - TO ADD
- [ ] GtkMauiContext.cs
- [ ] HandlerMappingExtensions.cs
- [ ] LinuxAnimationManager.cs
- [ ] LinuxDispatcher.cs
- [ ] LinuxDispatcherTimer.cs
- [ ] LinuxTicker.cs
- [ ] MauiHandlerExtensions.cs
- [ ] ScopedLinuxMauiContext.cs
### Existing Hosting (5 files) - TO COMPARE
- [ ] LinuxMauiAppBuilderExtensions.cs
- [ ] LinuxMauiContext.cs
- [ ] LinuxProgramHost.cs
- [ ] LinuxViewRenderer.cs
- [ ] MauiAppBuilderExtensions.cs
---
## NEW FOLDERS
### Dispatching (3 files) - TO ADD
- [ ] LinuxDispatcher.cs
- [ ] LinuxDispatcherProvider.cs
- [ ] LinuxDispatcherTimer.cs
### Native (5 files) - TO ADD
- [ ] CairoNative.cs
- [ ] GdkNative.cs
- [ ] GLibNative.cs
- [ ] GtkNative.cs
- [ ] WebKitNative.cs
---
## CORE FILES
### Core (2 files) - TO COMPARE
- [ ] LinuxApplication.cs
- [ ] LinuxApplicationOptions.cs
---
## Progress Log
| Date | Files Completed | Notes |
|------|-----------------|-------|
| - | 0 | Awaiting approval to begin |
---
## Process
1. **For NEW files:** Read decompiled → Write clean version → Add to project → Commit
2. **For EXISTING files:** Compare main vs decompiled → Apply only NEW changes cleanly → Commit
3. **Update this document** after each file
4. **Build frequently** to catch errors early

32
Types/ContextMenuItem.cs Normal file
View File

@@ -0,0 +1,32 @@
using System;
namespace Microsoft.Maui.Platform;
public class ContextMenuItem
{
public string Text { get; }
public Action? Action { get; }
public bool IsEnabled { get; }
public bool IsSeparator { get; }
public static ContextMenuItem Separator => new ContextMenuItem();
public ContextMenuItem(string text, Action? action, bool isEnabled = true)
{
Text = text;
Action = action;
IsEnabled = isEnabled;
IsSeparator = false;
}
private ContextMenuItem()
{
Text = "";
Action = null;
IsEnabled = false;
IsSeparator = true;
}
}

11
Types/FlexAlignContent.cs Normal file
View File

@@ -0,0 +1,11 @@
namespace Microsoft.Maui.Platform;
public enum FlexAlignContent
{
Start,
Center,
End,
Stretch,
SpaceBetween,
SpaceAround
}

9
Types/FlexAlignItems.cs Normal file
View File

@@ -0,0 +1,9 @@
namespace Microsoft.Maui.Platform;
public enum FlexAlignItems
{
Start,
Center,
End,
Stretch
}

10
Types/FlexAlignSelf.cs Normal file
View File

@@ -0,0 +1,10 @@
namespace Microsoft.Maui.Platform;
public enum FlexAlignSelf
{
Auto,
Start,
Center,
End,
Stretch
}

26
Types/FlexBasis.cs Normal file
View File

@@ -0,0 +1,26 @@
namespace Microsoft.Maui.Platform;
public struct FlexBasis
{
public bool IsAuto { get; }
public float Length { get; }
public static FlexBasis Auto => new FlexBasis(isAuto: true, 0f);
private FlexBasis(bool isAuto, float length)
{
IsAuto = isAuto;
Length = length;
}
public static FlexBasis FromLength(float length)
{
return new FlexBasis(isAuto: false, length);
}
public static implicit operator FlexBasis(float length)
{
return FromLength(length);
}
}

9
Types/FlexDirection.cs Normal file
View File

@@ -0,0 +1,9 @@
namespace Microsoft.Maui.Platform;
public enum FlexDirection
{
Row,
RowReverse,
Column,
ColumnReverse
}

11
Types/FlexJustify.cs Normal file
View File

@@ -0,0 +1,11 @@
namespace Microsoft.Maui.Platform;
public enum FlexJustify
{
Start,
Center,
End,
SpaceBetween,
SpaceAround,
SpaceEvenly
}

8
Types/FlexWrap.cs Normal file
View File

@@ -0,0 +1,8 @@
namespace Microsoft.Maui.Platform;
public enum FlexWrap
{
NoWrap,
Wrap,
WrapReverse
}

View File

@@ -0,0 +1,8 @@
using System.Collections.Generic;
namespace Microsoft.Maui.Platform;
public interface ISkiaQueryAttributable
{
void ApplyQueryAttributes(IDictionary<string, object> query);
}

28
Types/SkiaTextSpan.cs Normal file
View File

@@ -0,0 +1,28 @@
using SkiaSharp;
namespace Microsoft.Maui.Platform;
public class SkiaTextSpan
{
public string Text { get; set; } = "";
public SKColor? TextColor { get; set; }
public SKColor? BackgroundColor { get; set; }
public string? FontFamily { get; set; }
public float FontSize { get; set; }
public bool IsBold { get; set; }
public bool IsItalic { get; set; }
public bool IsUnderline { get; set; }
public bool IsStrikethrough { get; set; }
public float CharacterSpacing { get; set; }
public float LineHeight { get; set; } = 1f;
}