Core Infrastructure: - Add Dispatching folder with LinuxDispatcher, LinuxDispatcherProvider, LinuxDispatcherTimer - Add Native folder with P/Invoke wrappers (GTK, GLib, GDK, Cairo, WebKit) - Add GTK host window system with GtkHostWindow and GtkSkiaSurfaceWidget - Update LinuxApplication with GTK mode, theme handling, and icon support - Fix duplicate LinuxDispatcher in LinuxMauiContext Handlers: - Add GtkWebViewManager and GtkWebViewPlatformView for GTK WebView - Add FlexLayoutHandler and GestureManager - Update multiple handlers with ToViewHandler fix and missing mappers - Add MauiHandlerExtensions with ToViewHandler extension method Views: - Add SkiaContextMenu with hover, keyboard, and dark theme support - Add LinuxDialogService with context menu management - Add SkiaFlexLayout for flex container support - Update SkiaShell with RefreshTheme, MauiShell, ContentRenderer - Update SkiaWebView with SetMainWindow, ProcessGtkEvents - Update SkiaImage with LoadFromBitmap method Services: - Add AppInfoService, ConnectivityService, DeviceDisplayService, DeviceInfoService - Add GtkHostService, GtkContextMenuService, MauiIconGenerator Window: - Add CursorType enum and GtkHostWindow - Update X11Window with SetIcon, SetCursor methods Build: SUCCESS (0 errors) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
13 KiB
13 KiB
OpenMaui Linux - Recovery Merge Tracking
Executive Summary
| Category | In Main | In Decompiled | New to Add | To Compare | Completed |
|---|---|---|---|---|---|
| Handlers | 44 | 48 | 13 | 35 | 23 |
| Views/Types | 41 | 118 | 77 | 41 | 10 |
| Services | 33 | 103 | 70 | 33 | 7 |
| Hosting | 5 | 12 | 7 | 5 | 2 |
| Dispatching | 0 | 3 | 3 | 0 | 3 |
| Native | 0 | 5 | 5 | 0 | 5 |
| Window | 2 | 3 | 1 | 2 | 3 |
| Rendering | 1 | 2 | 1 | 1 | 1 |
| TOTAL | 123 | 289 | 175 | 114 | 54 |
Branch: main
Base: Clean main (builds with 0 errors)
Status: In progress - BUILD SUCCEEDS
Last Updated: 2026-01-01
HANDLERS
New Handlers (13 files) - TO ADD
- ContentPageHandler.cs - EXISTS IN PageHandler.cs, needs comparison
- FlexLayoutHandler.cs - ADDED
- GestureManager.cs - ADDED (tap, pan, swipe, pointer gesture processing)
- GridHandler.cs - EXISTS IN LayoutHandler.cs, needs comparison
- GtkWebViewHandler.cs
- GtkWebViewManager.cs - ADDED
- GtkWebViewPlatformView.cs - ADDED
- GtkWebViewProxy.cs
- LayoutHandlerUpdate.cs - EXISTS IN LayoutHandler.cs
- LinuxApplicationContext.cs
- RelayCommand.cs - EXISTS IN NavigationPageHandler.cs
- SizeChangedEventArgs.cs
- SkiaWindow.cs
- StackLayoutHandler.cs - EXISTS IN LayoutHandler.cs, needs comparison
- TextButtonHandler.cs - EXISTS IN ButtonHandler.cs
Existing Handlers (35 files) - TO COMPARE
- ActivityIndicatorHandler.cs
- ActivityIndicatorHandler.Linux.cs
- ApplicationHandler.cs
- BorderHandler.cs - Updated to use ToViewHandler
- BoxViewHandler.cs
- ButtonHandler.cs
- ButtonHandler.Linux.cs
- CheckBoxHandler.cs - Updated with missing mappers
- CheckBoxHandler.Linux.cs
- CollectionViewHandler.cs - Updated to use ToViewHandler
- DatePickerHandler.cs - Updated with missing mappers
- EditorHandler.cs
- EntryHandler.cs - Updated with missing mappers
- EntryHandler.Linux.cs
- FlyoutPageHandler.cs
- FrameHandler.cs - Updated to use ToViewHandler
- GraphicsViewHandler.cs
- ImageButtonHandler.cs
- ImageHandler.cs - Updated with LoadFromBitmap support
- ItemsViewHandler.cs
- LabelHandler.cs - Added ConnectHandler, DisconnectHandler, OnPlatformViewTapped, MapFormattedText
- LabelHandler.Linux.cs
- LayoutHandler.cs - Updated to use ToViewHandler
- LayoutHandler.Linux.cs - Updated to use ToViewHandler
- NavigationPageHandler.cs - Updated to use ToViewHandler
- PageHandler.cs - Updated to use ToViewHandler
- PickerHandler.cs - Updated with missing mappers
- ProgressBarHandler.cs - Updated with missing mappers
- ProgressBarHandler.Linux.cs
- RadioButtonHandler.cs
- ScrollViewHandler.cs - Updated to use ToViewHandler
- SearchBarHandler.cs
- SearchBarHandler.Linux.cs
- ShellHandler.cs
- SliderHandler.cs
- SliderHandler.Linux.cs
- StepperHandler.cs
- SwitchHandler.cs - Updated with missing mappers
- SwitchHandler.Linux.cs
- TabbedPageHandler.cs
- TimePickerHandler.cs
- WebViewHandler.cs
- WebViewHandler.Linux.cs
- WindowHandler.cs
VIEWS & TYPES
New Types (77 files) - TO ADD
- AbsoluteLayoutBounds.cs - EXISTS IN SkiaLayoutView.cs
- AbsoluteLayoutFlags.cs - EXISTS IN SkiaLayoutView.cs
- CheckedChangedEventArgs.cs
- CollectionSelectionChangedEventArgs.cs
- ColorExtensions.cs
- ContextMenuItem.cs - EXISTS IN Types/
- FlexAlignContent.cs - EXISTS IN Types/
- FlexAlignItems.cs - EXISTS IN Types/
- FlexAlignSelf.cs - EXISTS IN Types/
- FlexBasis.cs - EXISTS IN Types/
- FlexDirection.cs - EXISTS IN Types/
- FlexJustify.cs - EXISTS IN Types/
- FlexWrap.cs - EXISTS IN Types/
- FlyoutLayoutBehavior.cs
- FontExtensions.cs
- GridLength.cs - EXISTS IN SkiaLayoutView.cs
- GridPosition.cs - EXISTS IN SkiaLayoutView.cs
- GridUnitType.cs - EXISTS IN SkiaLayoutView.cs
- ImageLoadingErrorEventArgs.cs
- IndicatorShape.cs
- ISkiaQueryAttributable.cs - EXISTS IN Types/
- ItemsLayoutOrientation.cs
- ItemsScrolledEventArgs.cs
- ItemsViewItemTappedEventArgs.cs
- Key.cs - EXISTS IN SkiaView.cs
- KeyEventArgs.cs - EXISTS IN SkiaView.cs
- KeyModifiers.cs - EXISTS IN SkiaView.cs
- LayoutAlignment.cs
- LineBreakMode.cs
- LinuxDialogService.cs
- MenuBarItem.cs - EXISTS IN SkiaMenuBar.cs
- MenuItem.cs - EXISTS IN SkiaMenuBar.cs
- MenuItemClickedEventArgs.cs - EXISTS IN SkiaMenuBar.cs
- NavigationEventArgs.cs - EXISTS IN SkiaNavigationPage.cs
- PointerButton.cs - EXISTS IN SkiaView.cs
- PointerEventArgs.cs - EXISTS IN SkiaView.cs
- PositionChangedEventArgs.cs
- ProgressChangedEventArgs.cs
- ScrollBarVisibility.cs - EXISTS IN SkiaScrollView.cs
- ScrolledEventArgs.cs - EXISTS IN SkiaScrollView.cs
- ScrollEventArgs.cs - EXISTS IN SkiaView.cs
- ScrollOrientation.cs - EXISTS IN SkiaScrollView.cs
- ShellContent.cs - EXISTS IN SkiaShell.cs
- ShellFlyoutBehavior.cs - EXISTS IN SkiaShell.cs
- ShellNavigationEventArgs.cs - EXISTS IN SkiaShell.cs
- ShellSection.cs - EXISTS IN SkiaShell.cs
- SkiaAbsoluteLayout.cs - EXISTS IN SkiaLayoutView.cs
- SkiaContentPage.cs - EXISTS IN SkiaPage.cs
- SkiaContextMenu.cs
- SkiaFlexLayout.cs - ADDED
- SkiaFrame.cs - EXISTS IN SkiaBorder.cs
- SkiaGrid.cs - EXISTS IN SkiaLayoutView.cs
- SkiaMenuFlyout.cs
- SkiaSelectionMode.cs
- SkiaStackLayout.cs - EXISTS IN SkiaLayoutView.cs
- SkiaTextAlignment.cs
- SkiaTextSpan.cs - EXISTS IN Types/
- SkiaToolbarItem.cs - EXISTS IN SkiaPage.cs
- SkiaToolbarItemOrder.cs - EXISTS IN SkiaPage.cs
- SkiaVerticalAlignment.cs
- SkiaVisualState.cs
- SkiaVisualStateGroup.cs
- SkiaVisualStateGroupList.cs
- SkiaVisualStateSetter.cs
- SliderValueChangedEventArgs.cs
- StackOrientation.cs - EXISTS IN SkiaLayoutView.cs
- SwipeDirection.cs
- SwipeEndedEventArgs.cs
- SwipeItem.cs
- SwipeMode.cs
- SwipeStartedEventArgs.cs
- SystemClipboard.cs
- TabItem.cs
- TextAlignment.cs
- TextChangedEventArgs.cs
- TextInputEventArgs.cs - EXISTS IN SkiaView.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 - Added context menu support
- SkiaFlyoutPage.cs
- SkiaGraphicsView.cs
- SkiaImage.cs - Added LoadFromBitmap method
- SkiaImageButton.cs
- SkiaIndicatorView.cs
- SkiaItemsView.cs
- SkiaLabel.cs - Added FormattedSpans, Tapped event, formatted text rendering
- SkiaLayoutView.cs
- SkiaMenuBar.cs
- SkiaNavigationPage.cs
- SkiaPage.cs
- SkiaPicker.cs
- SkiaProgressBar.cs
- SkiaRadioButton.cs
- SkiaRefreshView.cs
- SkiaScrollView.cs
- SkiaSearchBar.cs
- SkiaShell.cs - Added MauiShell, ContentRenderer, ColorRefresher, RefreshTheme()
- SkiaSlider.cs
- SkiaStepper.cs
- SkiaSwipeView.cs
- SkiaSwitch.cs
- SkiaTabbedPage.cs
- SkiaTemplatedView.cs
- SkiaTimePicker.cs
- SkiaView.cs - Added MauiView, CursorType, transforms (Scale/Rotation/Translation/Anchor), GestureManager integration, enhanced Invalidate/Draw
- SkiaVisualStateManager.cs
- SkiaWebView.cs - Added SetMainWindow, ProcessGtkEvents static methods
New Views Added This Session
- SkiaContextMenu.cs - ADDED (context menu with hover, keyboard, dark theme support)
- LinuxDialogService.cs - ADDED (dialog and context menu management)
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 - ADDED
- ColorDialogResult.cs
- ConnectivityService.cs - ADDED
- DesktopEnvironment.cs - EXISTS IN SystemThemeService.cs
- DeviceDisplayService.cs - ADDED
- DeviceInfoService.cs - ADDED
- DisplayServerType.cs - EXISTS IN LinuxApplication.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 - ADDED
- 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 - ADDED (PNG icon generator, no Svg.Skia dependency)
- 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 - EXISTS IN LinuxMauiContext.cs
- LinuxDispatcher.cs - EXISTS IN LinuxMauiContext.cs
- LinuxDispatcherTimer.cs - EXISTS IN LinuxMauiContext.cs
- LinuxTicker.cs - EXISTS IN LinuxMauiContext.cs
- MauiHandlerExtensions.cs - ADDED (critical ToViewHandler fix)
- ScopedLinuxMauiContext.cs - EXISTS IN LinuxMauiContext.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
WINDOW
Window Files - TO COMPARE/ADD
- CursorType.cs - ADDED (Arrow, Hand, Text cursor types)
- X11Window.cs - Added SetIcon, SetCursor methods, cursor initialization
- GtkHostWindow.cs - ADDED (GTK-based host window with overlay support)
RENDERING
Rendering Files - TO COMPARE/ADD
- GtkSkiaSurfaceWidget.cs - ADDED (GTK drawing area for Skia)
CORE FILES
Core (2 files) - TO COMPARE
- LinuxApplication.cs - Massive update: GTK mode, Dispatcher init, theme handling, icon support, GTK events
- LinuxApplicationOptions.cs
HOSTING
Hosting Files - TO COMPARE/ADD
- LinuxMauiContext.cs - Fixed duplicate LinuxDispatcher, uses Dispatching namespace
- MauiHandlerExtensions.cs - ADDED (ToViewHandler extension)
Process
- DECOMPILED = PRODUCTION (source of truth)
- MAIN = OUTDATED (needs updates)
- For EVERY file in decompiled: Compare with main and apply differences
- Even "existing" files: Must be compared - they likely have production fixes missing
- Update this document after each file
- Build frequently to catch errors early