Skip to content

Latest commit

 

History

History
1646 lines (1208 loc) · 74.8 KB

File metadata and controls

1646 lines (1208 loc) · 74.8 KB

Changelog

0.9.14

Enhancements

  • Safety: Marked BitmapBundle::from_ptr_owned() as unsafe (#134)
  • Gallery: Added separator and Exit tool to gallery toolbar
  • Build: Added macOS aarch64-to-x86_64 cross-compilation CI job
  • Local Fork Support: Made it possible to use a local fork of wxWidgets with wxDragon

Bug Fixes

  • Fixed taskbar icon event handling on GTK
  • Fixed WindowHandle invalidation and added regression test
  • Fixed gallery page addition order and Treebook title spacing

0.9.13

Update wxwidgets to 3.3.2

0.9.12

New Features

  • wxApp Methods: Added many new wxApp methods including set_top_window, get_top_window, is_main_loop_running, exit_main_loop, set_exit_on_frame_delete, get_exit_on_frame_delete, set_app_name, get_app_name, set_app_display_name, get_app_display_name, set_vendor_name, get_vendor_name, set_vendor_display_name, get_vendor_display_name
  • BitmapToggleButton XRC: Added BitmapToggleButton support in XRC macro

Bug Fixes

  • Fixed truncated string getters across widgets (StyledTextCtrl, TreeListCtrl, WebView) that could return corrupted text
  • Auto cleanup DDE connections on Windows to prevent resource leaks

0.9.10

New Features

  • wxGrid: Wrapped wxGrid widget with full event support wired into the Rust event system
  • wxMDIParentFrame/wxMDIChildFrame: Added MDI (Multiple Document Interface) support
  • wxPrinter/wxPrintout: Added printing support with printing dialogs
  • wxStdDialogButtonSizer: Wrapped wxStdDialogButtonSizer for standard dialog button layouts
  • wxAccessible: Added accessibility support wrapper
  • wxSound: Added wxSound for WAV playback

Enhancements

  • wxGrid: Added additional grid functions beyond initial wrapping
  • wxIPC: Refined wxServer/wxClient/wxConn to use DDE on Windows and TCP on Linux/macOS
  • wxTopLevelWindow: Added RequestUserAttention wrapper

Bug Fixes

  • Fixed get_value and related functions returning null bytes in the middle of strings

0.9.9

New Features

  • BitmapToggleButton: Added BitmapToggleButton widget
  • wxConfig: Added wxConfig wrapper for persistent configuration storage
  • wxUIActionSimulator: Added UI automation support for testing
  • wxSingleInstanceChecker: Added single instance application support
  • wxIPC: Added inter-process communication support
  • AboutBox: Added AboutBox dialog and Button::set_default()

Enhancements

  • Menu/MenuBar: Added find_item(), full menu item insertion and removal wrappers
  • ListBox: Added set_string(), ensure_visible(), and insert() methods
  • CheckListBox/Choice/ComboBox: Added insert() method
  • AuiNotebook: Wrapped missing functions
  • TreeCtrl: Added missing tree control functions
  • wxLocale/wxUILocale: Added comprehensive locale support including find_language_info() and language name lookup
  • MSWDisableComposited: Added Windows-specific composited rendering control

Bug Fixes

  • Fixed issue #109
  • Fixed cross-platform integer type conversion compatibility
  • Fixed various clippy warnings

Build System

  • Added static CRT linking support for MSVC targets
  • Fixed zigbuild linking with proper libc++ for C++ runtime symbols
  • Improved Linux CI build compatibility

0.9.8

Enhancements

  • Wrap wxTranslations
  • Implement escape handling API for dialog

0.9.7

Enhancements

  • Use thread-local registry to track window handle, avoid double-free

0.9.6

Enhancements

  • Widget Copy Trait: Implemented Copy trait for all widgets
    • All widgets now implement Copy, eliminating the need to clone widgets before using them in closures
    • Simplifies event handler code by allowing direct widget usage without explicit cloning

0.9.5

New Features

  • WebView Widget: Added WebView widget with Edge/WebView2 backend support for Windows
    • Added Edge/WebView2 backend support for modern Windows rendering
    • Auto-switch zoom type to Layout when WebView backend is IE
    • Disable zoom in/out for IE backend
    • Cross-platform WebView support with backend selection via enum

Enhancements

  • DPI Awareness: Apply DIP (Device Independent Pixels) awareness when converting wxPoint and wxSize

  • TextCtrl: Added set_insertion_point_end() method for convenient cursor positioning at end of text

  • Drag and Drop Improvements:

    • Fixed Drag-N-Drop closures memory leakage
    • Refined TextDropTarget implementation
    • Refined FileDropTarget implementation

0.9.4

Enhancements

  • Refined gauge logic in gallery example for better demonstration
  • Improved development workflow with default features enabled in wxdragon crate
  • Added wxUSE_NO_MANIFEST=1 flag for better Windows compatibility

Bug Fixes

  • Fixed Tool::on_click event handling for Linux platform
  • Resolved cross-platform issues with tool events (EVT_TOOL)

Refactoring

  • Renamed ScrollEvent to ScrollEventType and ScrollEventData to ScrollEvent for better clarity
  • Removed unused ScrollEvents trait implementation from Slider widget
  • Added dedicated Slider::on_slider method for slider-specific event handling
  • Enhanced simple_xrc_test and neat_demo examples with improved code organization

Platform Support

  • Enhanced Linux compatibility for tool events and window icons
  • Improved cross-platform consistency for event handling
  • Added cross-compiling support from Linux to Windows

0.9.3

New Features

  • Added MenuBar::enable_item & MenuBar::is_item_enabled
  • Added Menu::enable_item & Menu::is_item_enabled
  • Added Point::DEFAULT_POSITION & Size::DEFAULT_SIZE constants
  • Added TreeCtrl::expand method

Enhancements

  • Added WxWidget::process_menu_command & WxWidget::post_menu_command methods
  • Added CustomDataViewTreeModel::item_added
  • Added DataViewCtrl::set_sorting_column method
  • Refactored wxDragon::Menu
  • Improved CustomDataViewTreeModel

Bug Fixes

  • Fixed taskbar issues in macOS
  • Fixed popup_menu issue in menu_events_demo example
  • Fixed DataViewEventData::get_position

Examples

  • Completed neat_demo example
  • Refined menu_events_demo, dataviewtree, and dark_mode_demo examples

Refactoring

  • Renamed dataview example to dataviewtree
  • Renamed TreeViewEventHandler to DataViewTreeEventHandler
  • Renamed DataViewEvent to DataViewEventType
  • Renamed DataViewEventData to DataViewEvent

0.9.2

New Features

  • Dialog Icon Support: Added set_icon() method to Dialog widget for setting window icons

Bug Fixes

  • Calendar Widget: Fixed double adding month issue in calendar widget
  • Build System: Fixed wxWidgets source path issue in CMakeLists.txt

Enhancements

  • DataViewModel Trait Simplification: Simplified the DataViewModel trait for better usability

  • Memory Management Improvements: Enhanced reference counting and memory safety

    • Corrected reference count handling for DataViewListModel struct
    • Implemented Weak reference usage in event closures to ensure proper Drop behavior
    • Prevents memory leaks by ensuring proper cleanup of DataView-related objects
  • DataView Virtual List Refinements: Multiple improvements to CustomDataViewVirtualListModel

    • Cleaned up WxdCustomDataViewVirtualListModel C++ class implementation
    • Removed unnecessary callback_data field for simplified architecture
    • Refined CustomDataViewVirtualListModel struct for better performance
  • API Improvements: Enhanced existing APIs for better developer experience

    • Renamed VariantType::to_type_string to VariantType::as_str for Rust conventions
  • Build System Enhancements: Improved build reliability and developer experience

    • Enhanced SHA256 verification for downloaded wxWidgets zip archives
    • Improved wxWidgets search path handling in C++ projects
    • Better resource file detection (wx.rc) for gallery example

Examples

  • neat_demo: Added new comprehensive example showcasing wxDragon features

    • Demonstrates modern UI patterns and best practices
    • Clean, minimal example for getting started with wxDragon
  • Gallery & Menu Events: Refined gallery and menu_events_demo examples

    • Improved DataView virtual tab demonstration
    • Enhanced example code quality and documentation
    • Better resource file handling

0.9.1

Bug Fixes

  • Build System: Various build system improvements and fixes
  • Code Quality: General code refinements and cleanups

0.9.0

New Features

  • App Events Trait with macOS Implementation: Added comprehensive application event handling system

Enhancements

  • Build System Improvements: Major refactoring of the build system for better maintainability

    • Now downloads wxWidgets as a zip archive during build
  • DataViewItem API Enhancement: Improved DataViewItem functionality

    • Added is_ok() method for validity checking
    • Added get_id() method for retrieving item identifiers
    • Better item state management
  • Code Quality Improvements: Enhanced code maintainability and safety

    • Removed lazy_static dependency in favor of modern alternatives
    • Fixed potential memory leak in wxDragon::main
    • Refactored argc & argv handling for better memory safety
    • Refined wxd_Main function implementation
    • Removed unsafe calls from user code where possible
    • Cleaned up unused code and dependencies
  • DataViewTreeModel Implementation: Added comprehensive tree model support for DataView controls

    • Full implementation of hierarchical data models
    • Enhanced DataView functionality with tree-based data structures

Bug Fixes

  • Type Safety: Improved type handling throughout the codebase
    • Using Option<T> instead of -1 sentinel values for better type safety
    • Enhanced null-safety patterns

Refactoring

  • Build Configuration: Streamlined build process

Examples

  • Gallery Example Updates: Improved gallery example presentation

Platform Support

  • Enhanced macOS Support: Full application event handling support
  • Improved Windows GNU Support: Better cross-compilation from macOS
  • Linux: All improvements fully compatible

0.8.30

  • Implement From and Into Bitmap for NullBitmap

0.8.29

Enhancements

  • DataViewCtrl Context Menu Support: Added context menu event support for DataViewCtrl
    • Implemented on_item_context_menu event handler for DataViewCtrl
    • Added DataViewEventData get_position method for retrieving context menu position
    • Enhanced DataViewCtrl integration with menu_events_demo example
    • Improved event handling for DataView controls with position information

Bug Fixes

  • Event System: Fixed WXDEventTypeCEnum issue with negative value handling

    • Added a negative value to WXDEventTypeCEnum for proper event type representation
    • Resolved event enum discriminant issues across platforms
    • Fixed EventType enum cross-platform compatibility issues
  • Popup Menu Fix: Fixed WxWidget::popup_menu method implementation

    • Corrected duplicate popup_menu implementation issues
    • Improved popup menu behavior across different widget types
    • Enhanced menu positioning and context menu support

Refactoring

  • DataViewItem Architecture: Refactored struct wxd_DataViewItem_t and related functionality

    • Improved DataViewItem internal structure for better memory management
    • Enhanced DataView event data handling
    • Added DataViewEventData to prelude module for easier access
  • Bitmap Support: Added NullBitmap support for better null bitmap handling

    • Provides a safe way to represent and check for null bitmaps
    • Improves bitmap-related API consistency

Documentation

  • Development Guidelines: Added copilot-instructions.md for project development guidance
    • Provides coding standards and best practices for contributors
    • Documents architectural patterns and design decisions

0.8.28

Enhancements

  • Widget Traits Organization: Embedded WindowEvents and MenuEvents trait implementations into widget_traits
    • Improved trait implementation structure for better organization
    • Enhanced widget trait system with embedded event handling capabilities

Bug Fixes

  • Popup Menu: Fixed duplicate popup_menu implementation
    • Resolved code duplication issue in popup menu functionality
    • Ensured consistent popup menu behavior across widgets

0.8.27

New Features

  • TreeListCtrl Widget: Added TreeListCtrl widget for hierarchical data display with column support

    • Combines tree structure with list/table functionality
    • Enhanced tree control with column-based data display
    • Advanced hierarchical data management capabilities
  • Menu Event Handlers: Added comprehensive menu event handling system

    • Enhanced menu system with event handler support
    • Improved menu interaction and callback functionality
    • Better menu event management across the framework
  • SearchAnchor Functionality: Added SearchAnchor support for text search operations

    • Added SearchAnchor call and binding implementation
    • Enhanced text search capabilities in text controls
    • Improved text navigation and search functionality

Enhancements

  • TextCtrl Selection Management: Enhanced TextCtrl with comprehensive selection methods

    • Added GetSelection/SetSelection methods for text selection control
    • Added SelectAll method for complete text selection
    • Added GetStringSelection method for retrieving selected text content
    • Improved text manipulation and selection handling
  • StyledTextCtrl Text Wrapping: Added text wrapping functionality to StyledTextCtrl

    • Added SetWrapMode/GetWrapMode methods for configurable text wrapping
    • Enhanced text display with flexible wrapping options
    • Improved code editor functionality with wrap mode control
  • Focus Management: Enhanced focus handling for widgets

    • Added AcceptsFocusFromKeyboard method for keyboard focus control
    • Added SetCanFocus method for focus behavior configuration
    • Improved widget focus management and accessibility
  • SystemOptions Integration: Added SystemOptions support for system-level configuration

    • Enhanced system configuration access through SystemOptions
    • Better integration with wxWidgets system options
    • Improved cross-platform system setting management

Bug Fixes

  • SpinCtrl Initial Values: Fixed SpinCtrl and SpinCtrlDouble initial value handling issues

    • Corrected widget initialization problems with spin controls
    • Improved default value handling for numeric input controls
    • Enhanced spin control reliability and consistency
  • Code Generation Issues: Resolved const_generator compilation and functionality issues

    • Fixed constant generation problems affecting build process
    • Improved cross-platform constant handling
    • Enhanced build system reliability

Contributors

  • @mjfs - SearchAnchor functionality and improvements

0.8.26

New Features

  • ComboBox Text Manipulation: Added comprehensive text manipulation functions for ComboBox widget

    • Added text insertion, deletion, selection and manipulation methods
    • Enhanced ComboBox API with text editing capabilities
    • Improved ComboBox usability for dynamic text content
  • TabCtrl Widget Functions: Added extensive TabCtrl functionality for tab management

    • Enhanced tab control operations and management
    • Added comprehensive tab manipulation methods
    • Improved TabCtrl widget capabilities

Enhancements

  • Event Data Modifier State: Added modifier state checking in event data

    • Enhanced event handling with keyboard modifier detection
    • Improved event system with modifier key state information
    • Better support for keyboard shortcuts and modifier combinations
  • Widget Builder Improvements: Enhanced widget builders with better initialization options

    • Added ChoiceBuilder::with_selection() method for initial selection setting
    • Added CheckBoxBuilder::with_value() method for initial checkbox state
    • Improved builder pattern consistency across widgets

Bug Fixes

  • Cross-Platform Event Enum: Fixed EventType enum cross-platform compatibility issues

    • Resolved enum discriminant inconsistencies between platforms
    • Applied bitflags to EventType for better type safety
    • Fixed compilation errors with Rust compiler v1.90.0
  • Windows ComboBox Compatibility: Fixed compilation errors for new ComboBox functions on Windows

    • Resolved Windows-specific build issues with ComboBox text functions
    • Improved cross-platform compatibility for ComboBox widget
  • Widget Initial Values: Fixed SpinCtrl and CheckBox initial value issues

    • Corrected widget initialization problems
    • Improved default value handling for form controls

0.8.25

New Features

  • Dialog Builder: Added Dialog builder to support creating generic dialog directly
    • Enables creating custom dialogs with builder pattern
    • Provides direct access to generic dialog functionality
    • Simplifies custom dialog creation workflow

Enhancements

  • Virtual List Refinements: Refined virtual list implementation
    • Improved virtual list performance and stability
    • Enhanced virtual list behavior consistency
    • Better handling of edge cases in virtual list operations

0.8.24

New Features

  • DataViewTreeCtrl Clear Columns: Added clear_columns() method to DataViewTreeCtrl for removing all columns at once
    • Enables dynamic column management for data view controls
    • Useful for rebuilding column layouts or clearing view state

Bug Fixes

  • Issue #42: Fixed reported issue in the codebase

Contributors

  • @mjfs - Issue fix and improvements

0.8.23

New Features

  • WxWidget Freeze/Thaw Support: Added freeze() and thaw() methods to WxWidget trait for improved performance during bulk updates
    • Prevents flicker and improves responsiveness when making multiple UI changes
    • Automatically suspends window redraws until thaw() is called
    • Useful for bulk operations like populating large lists or complex layout changes

Enhancements

  • Frame Widget Enhancement: Added access to internal window in Frame widget
    • Enables advanced window manipulation and integration with platform-specific APIs
    • Provides access to underlying wxWindow for specialized operations
  • Keyboard Event Support: Added GetUnicodeKey() method to keyboard events
    • Better Unicode character handling in key events
    • Improved international keyboard support
  • Window API Extensions: Added wxWindow::GetHandle() method for native window handle access
    • Enables integration with platform-specific windowing systems
    • Provides access to HWND on Windows, NSWindow on macOS, GtkWidget on Linux

Bug Fixes

  • TextCtrl Position Visibility: Fixed wxd_Window_IsPositionVisible() implementation for TextCtrl
    • Corrected position visibility checking for text controls
    • Improved text control scrolling and positioning behavior
  • Code Quality: Resolved cargo clippy warnings and formatting issues
    • Improved code consistency and maintainability
    • Enhanced build process reliability

Contributors

  • @Merisy-Thing - Freeze/Thaw functionality
  • @lologor - Window handle API and Frame enhancements

0.8.22

  • Fix "stc,xrc,aui" features build on windows and linux, add github CI to verify the cross-platform feature-enabled build

0.8.21

  • Wrap wxSimpleBook with xrc support

0.8.20

  • Add more functions to various widgets ListBox .delete .popup_menu .set_string_selection Menu: selected event .on_selected Notebook .remove_page AppProgressIndicator

Contributed by @Merisy-Thing

0.8.19

Fix

  • Fix show notification on windows will block quit, use wxGenericNotificationMessage on windows instead of native one

Enhancements

  • Refine cmake script, contributed by @ssrlive

0.8.18

Fix

  • Incorrect font constants mapping issue

0.8.17

Fix

  • Abnormal high CPU usage reported by issue #30

0.8.16

Features

  • Add Event::set_can_veto
  • Add Frame::close(force:bool)

0.8.14

Features

  • Update to wxWidgets 3.3.1

Fixes

  • Fix event.veto doesn't work reported by issue #21

Enhancements

  • Improve prebuilt library handling with fixed target folder

0.8.13

Features

Add event.can_veto() and event.veto().

0.8.11

Fix

Try fix linux build error, provide compact util to dealing with different glib versions.

0.8.10

Fix

Fix linux build error reported via issue #12

0.8.9

New Features

  • TaskBarIcon Widget: Added comprehensive system tray/taskbar icon widget with full cross-platform support
    • Platform-Aware Implementation: Intelligent platform detection for optimal user experience
      • Windows: Shows in system tray (notification area) with full event support
      • macOS: Shows in dock or menu bar (CustomStatusItem) with native click behavior
      • Linux: Shows in system tray with GTK backend integration (varies by desktop environment)
    • Icon Type Management: Flexible icon type configuration with TaskBarIconType enum
      • Default: Platform-appropriate default behavior (CustomStatusItem on macOS, Dock elsewhere)
      • Dock: Traditional dock icon placement (typically macOS dock)
      • CustomStatusItem: Menu bar/system tray placement (macOS menu bar, Windows system tray)
    • Automatic Popup Menus: Native popup menu functionality using wxWidgets' CreatePopupMenu() override
      • set_popup_menu() and get_popup_menu() methods for menu management
      • Automatic menu display when taskbar icon is clicked (platform-specific behavior)
      • Menu creates copies for wxWidgets ownership while preserving original template
    • Event Handling System: Comprehensive event system with platform-specific conditional compilation
      • Menu events handled directly by TaskBarIcon via on_menu() method (not routed to parent frame)
      • Cross-platform basic events: left click, double-click (Windows/Linux only)
      • Windows-specific events: mouse movement, right-click, balloon tooltips with proper conditional compilation
      • Platform events gracefully degrade on unsupported platforms (return wxEVT_NULL)
    • Builder Pattern Integration: Full wxDragon builder pattern with fluent API
      • with_icon_type(), with_icon(), with_icon_bundle(), with_tooltip() configuration methods
      • Immediate icon setting during construction for streamlined initialization

Enhancements

  • Cross-Platform FFI Layer: Enhanced C++ binding layer with robust platform detection
    • TaskBarIcon C++ Class: Custom wxdTaskBarIcon class extending wxTaskBarIcon with automatic popup menu support
    • Platform-Specific Icon Type Mapping: Intelligent default icon type selection based on platform capabilities
    • Event Type Safety: Enhanced event mapping with individual constant checking to prevent compilation errors
    • Memory Management: Proper menu copying and ownership handling for wxWidgets integration
  • Menu System Integration: Enhanced Menu widget with TaskBarIcon-specific functionality
    • Added from_ptr() method to Menu for FFI pointer conversion support
    • Seamless integration between TaskBarIcon popup menus and existing menu event handling
  • Build System Robustness: Improved cross-platform compilation with conditional event support
    • Windows Cross-Compilation: Fixed TaskBarIcon event constants availability checking
    • Conditional Compilation: Platform-specific event mapping with graceful fallback for unavailable events
    • FFI Constant Generation: Enhanced constant generation across all platforms (GTK, MSW, OSX)

Platform Support

  • Enhanced Cross-Platform Compatibility: Full TaskBarIcon support across all wxDragon target platforms
    • Windows (MSVC/MinGW): Complete system tray support with balloon tooltips and full event system
    • macOS: Native menu bar integration with CustomStatusItem support and automatic popup menus
    • Linux (GTK): System tray integration with desktop environment compatibility
    • Cross-Compilation: Fixed Windows cross-compilation from macOS with proper event constant handling

Bug Fixes

  • Windows Cross-Compilation: Fixed critical compilation errors when building for Windows targets
    • Resolved wxEVT_TASKBAR_* undefined symbol errors by adding proper conditional compilation guards
    • Enhanced event mapping to check individual event constants rather than assuming platform availability
    • Fixed event type mapping to gracefully handle missing event constants with wxEVT_NULL fallback
  • FFI Constant Mapping: Corrected TaskBarIcon type constant values across all platforms
    • Fixed incorrect FFI constant values that were causing icon type mismapping
    • Ensured consistent constant values: WXD_TBI_DEFAULT_TYPE: 0, WXD_TBI_DOCK: 1, WXD_TBI_CUSTOM_STATUSITEM: 2
    • Validated constant mapping across all platform-specific constant files (GTK, MSW, OSX)

Examples

  • taskbar_demo: New comprehensive example demonstrating complete TaskBarIcon functionality
    • Full popup menu creation with multiple menu items (Open, Settings, About, Exit)
    • Automatic popup menu display when clicking the taskbar icon
    • Menu event handling with status updates and application control
    • Icon creation using ArtProvider with fallback bitmap support
    • Cross-platform icon visibility verification and error handling
    • Demonstrates proper TaskBarIcon lifecycle management and cleanup

Technical Enhancements

  • C++ Implementation: Advanced TaskBarIcon C++ wrapper with virtual method override
    • Custom wxdTaskBarIcon class extending wxTaskBarIcon with CreatePopupMenu() override
    • Automatic menu copying system preserving item properties (enabled state, checkable status)
    • Platform-aware icon type selection with conditional compilation support
  • Event Architecture: Sophisticated event handling system with platform-specific feature detection
    • Conditional compilation guards for platform-specific TaskBarIcon events
    • Event type safety with individual constant availability checking
    • Graceful degradation for unsupported events returning wxEVT_NULL
  • Memory Safety: Enhanced memory management patterns for TaskBarIcon lifecycle
    • Special Drop implementation preserving system tray icon visibility
    • Proper menu template management without affecting original menu references
    • Safe FFI pointer handling with comprehensive null pointer checks

API Changes

  • Added new TaskBarIcon widget with complete builder pattern support
  • Added TaskBarIconType enum for platform-aware icon type configuration
  • Enhanced Menu widget with from_ptr() method for TaskBarIcon integration
  • Added TaskBarIcon-specific event handling methods with platform conditional compilation
  • All new APIs follow wxDragon's established patterns for memory safety and cross-platform compatibility
  • No breaking changes - all additions are backward compatible

Migration Notes

  • TaskBarIcon Usage: New TaskBarIcon widget provides modern system tray integration
  • Cross-Platform Behavior: TaskBarIcon automatically adapts to platform conventions (menu bar on macOS, system tray on Windows/Linux)
  • Event Handling: TaskBarIcon menu events are handled by the icon itself, not parent windows
  • Build Compatibility: Enhanced build system ensures successful compilation across all supported platforms

0.8.8

New Features

  • Enhanced Virtual List System: Major refactoring with comprehensive bug fixes and performance improvements
    • New Cache Algorithm: Introduced progressive measurement cache system with LRU eviction (100-item limit)
    • Horizontal Layout Support: Complete implementation of horizontal virtual list layout mode
      • Items arranged horizontally (columns) with proper width calculation
      • Text wrapping and natural flow measurement for horizontal text content
      • Seamless switching between vertical and horizontal modes
    • Two-Pass Measurement System: Implemented sophisticated measurement approach for consistent positioning
      • PASS 1: Determine potentially visible items using cache-first approach
      • PASS 2: Measure only confirmed visible items to avoid position inconsistencies
      • Eliminates measurement window shifting that caused item overlap issues

Bug Fixes

  • Virtual List Critical Issues: Resolved multiple severe rendering and interaction problems
    • Vertical Mode Overlap Fix: Fixed items overlapping in vertical mode due to improper panel positioning
      • Newly created panels are now hidden until properly positioned to prevent visual artifacts
      • Corrected initial panel sizing to use proper dimensions instead of temporary placeholder sizes
    • Mouse Wheel vs Scrollbar Coordination: Fixed synchronization issues between different scroll methods
      • Implemented boundary-based end-of-list detection instead of aggressive ratio-based triggers
      • Mouse wheel scrolling now uses the same safety padding logic as scrollbar dragging
      • Eliminated false triggers when scrolling near the end of content
    • Last Item Clipping Resolution: Fixed persistent clipping of the final item when scrolling to the end
      • Added configurable safety padding (20px default) to ensure last item full visibility
      • Enhanced end-of-list positioning logic with fresh measurement integration
      • Applied consistent safety padding across both scrollbar dragging and mouse wheel scrolling
    • Scroll Position Consistency: Resolved scroll position coordination problems between input methods
      • Fixed mouse wheel becoming non-functional after scrollbar drag to end
      • Implemented directional scroll detection to prevent infinite positioning loops
      • Enhanced total content size synchronization with proper padding coordination

Examples

  • virtual_list_demo: Enhanced example with comprehensive testing scenarios
    • Demonstrates both vertical and horizontal layout modes
    • Includes edge case testing (scrolling to end, rapid scrolling)
    • Shows proper configuration usage and error handling patterns

Platform Support

  • Enhanced cross-platform virtual list performance for all supported platforms:
    • Linux: Improved GTK backend virtual list rendering
    • macOS: Enhanced Cocoa virtual list performance
    • Windows MSVC/MinGW: Optimized Windows virtual list behavior
    • Consistent virtual list behavior and performance across all platforms

API Changes

  • Added configurable parameters in VirtualListInternalParams
  • Enhanced virtual list configuration options for performance tuning
  • All changes are backward compatible - no breaking changes to existing API
  • New configuration parameters use sensible defaults for existing code

Migration Notes

  • Existing Virtual Lists: All existing virtual list implementations will automatically benefit from bug fixes and performance improvements
  • Configuration: New configuration parameters use optimal defaults; no changes required for existing code
  • Performance: Users may notice improved responsiveness and eliminated visual artifacts in virtual list scrolling

0.8.7

New Features

  • Universal Widget Casting System: Added comprehensive runtime widget type determination and casting for all 41 wxDragon widgets

    • Type-safe casting with window.as_widget::<T>() method using wxWidgets RTTI (GetClassName)
    • Zero performance overhead with O(1) string comparison and graceful failure handling
    • Complete coverage for all widget types: basic widgets (Button, TextCtrl), advanced widgets (TreeCtrl, DataView), container widgets (Frame, Notebook), and specialized widgets (ActivityIndicator, Calendar)
    • Automatic macro-based implementation for 37 standard widgets plus manual implementations for 4 complex widgets (Frame, SplitterWindow, CommandLinkButton, ScrolledWindow)
    • Enables powerful dynamic UI manipulation and significantly improves developer experience for complex applications
  • Windows 7 Target Support: Added comprehensive Windows 7 compatible wxWidgets library support with pre-built binaries

    • Official Target Detection: Native support for official Windows 7 Rust targets (i686-win7-windows-msvc, x86_64-win7-windows-msvc)
    • Environment Variable Override: WXDRAGON_TARGET_OVERRIDE support for manual Windows 7 library selection
    • Pre-built Libraries: Complete wxWidgets 3.3.0 libraries for both 32-bit and 64-bit Windows 7 targets
    • Build System Integration: Enhanced build.rs with TARGET environment variable detection and fallback mechanisms
    • Cross-Architecture Support: Full support for both i686 (32-bit) and x86_64 (64-bit) Windows 7 architectures
    • Usage Examples:
      • Direct: cargo build --target i686-win7-windows-msvc (when target is available)
      • Override: WXDRAGON_TARGET_OVERRIDE=i686-win7-windows-msvc cargo build --target i686-pc-windows-msvc

Enhancements

  • Enhanced Virtual List Example: Added comprehensive virtual_list_demo example showcasing advanced DataView usage

    • Adaptive pooling system for efficient large dataset handling
    • Configuration-driven virtual list management
    • Demonstrates best practices for virtual list implementations with thousands of items
    • Advanced error handling and item context management
  • Improved C++ String Handling: Fixed GetLabel/GetString API consistency across all widgets

    • Enhanced RichTextCtrl: GetValue, GetRange, GetSelectedText methods
    • Enhanced StyledTextCtrl: GetText, GetSelectedText, GetLineText methods
    • Enhanced CommandEvent: GetString method
    • Unified copy_wxstring_to_buffer pattern for consistent string handling across all widgets
  • wxWidgets Build Workflow: Comprehensive build system for Windows 7 pre-built libraries

    • Automated GitHub Actions workflow for building Windows 7 compatible wxWidgets libraries
    • Support for both debug and release configurations for i686 and x86_64 architectures
    • Proper library organization with vc_lib (32-bit) and vc_x64_lib (64-bit) directory structures
    • Enhanced version information and Windows 7 compatibility metadata in distributed packages

Technical Enhancements

  • Widget Casting Infrastructure: Added comprehensive macro system for universal widget casting

    • impl_widget_cast! macro for automatic casting implementation across standard widgets
    • Manual casting implementations for complex widget patterns (tuple structs, composition patterns)
    • Enhanced window base functionality with GetClassName support for reliable type verification
  • Build System Improvements: Enhanced cross-platform build compatibility

    • TARGET environment variable detection for official Windows 7 targets
    • Fallback logic maintaining backward compatibility with existing target detection
    • Improved library directory detection with architecture-specific handling
    • Enhanced setup_linking function with consistent artifact name resolution
  • FFI Layer Extensions: Expanded C++ binding layer for new functionality

    • Enhanced window management API with GetClassName for widget type identification
    • Improved string handling functions across all widget types
    • Better memory management for string operations and widget casting

Platform Support

  • Windows 7 Compatibility: Full support for Windows 7 (32-bit and 64-bit) with dedicated pre-built libraries
  • Enhanced Windows MSVC: Improved Windows MSVC build support with proper library organization
  • Cross-Platform Widget Casting: Universal widget casting works consistently across Linux, macOS, and Windows
  • Build System Robustness: Enhanced build reliability across all supported platforms

Examples

  • virtual_list_demo: New comprehensive example demonstrating advanced virtual list functionality
    • Showcases adaptive pooling for handling large datasets efficiently
    • Demonstrates configuration-driven virtual list management
    • Includes error handling and best practices for virtual list implementations

API Changes

  • Added as_widget::<T>() method to all widgets via WxWidget trait for runtime type casting
  • Enhanced window module with GetClassName functionality for type identification
  • All new APIs follow wxDragon's established patterns for memory safety and type consistency
  • No breaking changes - all additions are backward compatible

Migration Notes

  • Windows 7 Users: Can now use dedicated Windows 7 targets for better compatibility
  • Widget Casting: Existing code continues to work unchanged; new casting functionality is purely additive
  • Build System: Enhanced target detection is transparent to existing users

0.8.6

New Features

  • RichTextCtrl Widget: Added comprehensive RichTextCtrl widget for advanced rich text editing

    • Full-featured rich text control with formatting capabilities (bold, italic, underline)
    • Color support for both text and background colors with selection-based and range-based methods
    • Complete file operations with native file dialogs (RTF and TXT format support)
    • Comprehensive API with 600+ lines of Rust bindings covering text manipulation, styling, and formatting
    • Support for undo/redo operations, clipboard integration (cut, copy, paste)
    • Advanced text selection and manipulation features
    • Seamless integration with gallery example showcasing all functionality
    • XRC support for loading RichTextCtrl from XML resource files
  • Generic Scrolling Trait (WxScrollable): Implemented comprehensive scrolling functionality for multiple widgets

    • Generic WxScrollable trait following the same inheritance pattern as WxWidget trait
    • Universal scrolling methods: show_position(), scroll_into_view(), is_position_visible(), get_last_position()
    • Cross-platform compatibility with intelligent widget detection (TextCtrl, RichTextCtrl, StyledTextCtrl)
    • Applied to key scrollable widgets: RichTextCtrl, TextCtrl, ListCtrl, TreeCtrl, ScrolledWindow, StyledTextCtrl
    • Enables auto-scroll functionality perfect for log display and content navigation
    • Type-safe position-based scrolling with fallback mechanisms for different widget types

Enhancements

  • Enhanced Gallery Example: Significantly expanded gallery with comprehensive RichText demonstration

    • Rich text editing with formatting buttons (bold, italic, underline, font size control)
    • Color manipulation tools (text color, background color, reset functionality)
    • Professional file operations using native file dialogs with proper error handling
    • Scrolling demonstrations with auto-scroll for log-like behavior
    • Real-time status updates showing cursor position and selection information
    • Advanced text manipulation showcasing the full power of RichTextCtrl
  • File Dialog Integration: Enhanced file operations throughout examples

    • Proper save/load functionality with native file dialogs supporting multiple formats
    • Smart file type detection based on file extensions
    • Error handling with user-friendly status messages
    • Support for both RTF (rich text format) and TXT (plain text) files
  • Event System Enhancement: Extended event system for rich text functionality

    • Added comprehensive RichText event constants (261-264) for stylesheet and content events
    • Enhanced event mapping in C++ layer with proper feature guards
    • Improved conditional compilation system for optional richtext feature

Technical Enhancements

  • C++ API Extensions: Added extensive C++ binding layer for rich text and scrolling

    • 75+ exported RichText functions covering all major functionality
    • Cross-platform scrolling implementations with intelligent widget detection
    • Enhanced window management with scrolling function additions
    • Proper memory management and error handling in C++ layer
  • Feature System: Improved optional feature compilation

    • RichText functionality properly gated behind richtext feature flag
    • Conditional compilation throughout codebase for better modularity
    • Enhanced CMakeLists.txt with richtext conditional compilation support
  • API Exports: Enhanced public API structure

    • Added WxScrollable trait to prelude for easy access
    • Improved module organization with dedicated scrollable functionality
    • Enhanced widget trait implementations following established patterns

Examples

  • Enhanced Gallery: Major improvements to the gallery example
    • New comprehensive RichText tab with full functionality demonstration
    • Updated imports and dependencies for modern wxDragon patterns
    • Improved user interface and interaction patterns

Platform Support

  • Enhanced cross-platform compatibility for all supported platforms:
    • Linux: Full RichText and scrolling support with GTK backend
    • macOS: Complete rich text functionality with native file dialogs
    • Windows MSVC/MinGW: Full feature parity across all Windows builds
    • Consistent behavior and performance across all platforms

API Changes

  • Added new scrollable module with comprehensive scrolling trait
  • Extended widgets module with RichTextCtrl implementation
  • Enhanced event system with rich text event support
  • All new APIs follow wxDragon's established patterns for memory safety and type consistency
  • No breaking changes - all additions are backward compatible

0.8.5

Bug Fixes

  • Linux PIE Compatibility: Enhanced Position Independent Executable (PIE) compilation support for modern Linux distributions

    • Replaced unreliable PIE detection with standard CMAKE_POSITION_INDEPENDENT_CODE ON approach
    • Always enables position independent code on Linux for maximum compatibility
    • Resolves relocation R_X86_64_32 against .rodata can not be used when making a PIE object compilation errors
    • Uses standard CMake methodology for handling position-independent compilation
    • Impact: Fixes build failures on PIE-enabled Linux distributions (Ubuntu 17.04+, Debian 9+, Fedora 23+)
  • 32-bit Windows MSVC Support: Added comprehensive support for 32-bit Windows MSVC builds (i686-pc-windows-msvc)

    • Platform Detection: Enhanced build script to support both "x86" and "i686" architecture naming variants
      • Fixed Unsupported target platform: windows-x86-msvc error in CI environments
      • Added dual architecture support throughout all platform detection functions
      • Unified artifact matching logic for consistent 32-bit target handling
    • C++ Calling Convention: Fixed calling convention mismatch in wxListCompareFunction for 32-bit Windows
      • Replaced WXDLLEXPORT with wxCALLBACK macro for proper calling convention
      • Ensures __stdcall on 32-bit Windows, __cdecl on 64-bit Windows
      • Resolves C2664 compilation errors: cannot convert argument 1 from 'int (__cdecl *)' to 'wxListCtrlCompare'
    • Library Directory Detection: Enhanced prebuilt library detection for 32-bit Windows packages
      • Added fallback logic from vc_x86_lib/ to vc_lib/ directory structure
      • Accommodates actual 32-bit package structure using generic vc_lib/ directories
      • Maintains proper debug library suffix handling (d suffix for debug builds)
    • 32-bit Literal Compatibility: Fixed literal overflow in treectrl.rs for 32-bit targets
      • Replaced hardcoded 64-bit literal 0x8000_0000_0000_0000 with architecture-agnostic (usize::MAX / 2)
      • Prevents compilation errors when usize is 32-bit on Windows x86 targets
      • Maintains identical functionality across all architectures

Platform Support

  • Enhanced Linux Compatibility: Improved PIE support for all modern Linux distributions
  • New Windows 32-bit Support: Full i686-pc-windows-msvc target support added
  • CI Integration: GitHub Actions now supports 32-bit Windows MSVC builds
  • Cross-Architecture: Unified support for both "x86" and "i686" architecture detection

Technical Details

  • Simplified Linux CMake configuration by removing complex PIE detection logic
  • Enhanced Windows build system with robust architecture variant handling
  • Improved cross-platform consistency in platform detection and library management
  • Maintains backward compatibility while adding support for new target configurations

0.8.4

Bug Fixes

  • XRC Style Registration: Fixed critical bug where wxBORDER_THEME and other border styles were not recognized in XRC files
    • Fixed WxdPlatformAwareStaticBitmapHandler constructor to properly call AddWindowStyles()
    • Resolved "XRC error: unknown style flag 'wxBORDER_THEME'" errors when using border styles in StaticBitmap widgets
    • All standard window border styles now work correctly in XRC files: wxBORDER_THEME, wxBORDER_SIMPLE, wxBORDER_SUNKEN, wxBORDER_RAISED, wxBORDER_STATIC, wxBORDER_NONE
    • Root Cause: wxDragon's custom StaticBitmap XRC handler wasn't registering style constants at runtime
    • Impact: Affects all platforms when using StaticBitmap widgets with border styles in XRC files
    • Breaking: No breaking changes - this is a pure bug fix that enables previously broken functionality

Platform Support

  • macOS: Confirmed wxBORDER_THEME now works correctly in XRC files
  • Windows: Border styles now properly recognized in XRC StaticBitmap widgets
  • Linux: Full XRC border style support restored

Technical Details

  • Enhanced WxdPlatformAwareStaticBitmapHandler to follow standard wxWidgets XRC handler patterns
  • Added proper style registration in handler constructor following wxWidgets best practices
  • Maintains platform-aware StaticBitmap functionality while fixing XRC compatibility
  • No performance impact - style registration occurs once during handler initialization

0.8.3

New Features

  • WindowStyle Enum: Added comprehensive WindowStyle enum according to wxWidgets 3.3.0 standards

    • 20 standard window style flags: Border, Child, ClipChildren, ClipSiblings, Disabled, Group, Maximize, MaximizeBox, Minimize, MinimizeBox, Overlapped, Popup, SysMenu, TabStop, ThickFrame, Visible, VScroll, and more
    • Type-safe bit flag operations using wxDragon's widget_style_enum macro
    • Convenient style aliases: CHILD_WINDOW, ICONIC, SIZE_BOX, TILED for backward compatibility
    • Default style set to Overlapped for standard window behavior
  • Window Style Management API: Added comprehensive window style management methods to WxWidget trait

    • set_style(style: WindowStyle) - Set window style flags with type safety
    • set_style_raw(style: i64) - Set raw style flags for advanced usage scenarios
    • get_style_raw() -> i64 - Get current window style flags as raw value
    • has_style(style: WindowStyle) -> bool - Check if specific style flags are set
    • add_style(style: WindowStyle) - Add styles while preserving existing ones
    • remove_style(style: WindowStyle) - Remove specific styles without affecting others
    • Support for combined styles using bitwise OR operator (|)

Enhancements

  • C++ API Extensions: Added window style management functions to the C API layer

    • wxd_Window_SetWindowStyle(window, style) - Set window style implementation
    • wxd_Window_GetWindowStyle(window) -> i64 - Get window style implementation
    • Enhanced wxd_window_base.h with comprehensive style management support
  • Constants Generation: Extended const_extractor tool with window style constants

    • Added 20+ window style constants to const_extractor for cross-platform compatibility
    • Generated WXDWS* constants for all supported platforms (GTK, MSW, OSX)
    • Ensured consistent constant values across different operating systems
    • Enhanced CMakeLists.txt and Makefile for const_extractor improvements
  • API Exports: Added WindowStyle enum to public API exports

    • WindowStyle exported in prelude for convenient access
    • Full integration with existing wxDragon patterns and conventions
    • Comprehensive documentation with usage examples and platform notes

Code Quality

  • Documentation: Added extensive documentation for WindowStyle and related methods

    • Detailed API documentation with practical usage examples
    • Platform-specific behavior notes and style combination warnings
    • Clear guidance on mutually exclusive styles (e.g., Child vs Popup)
  • Example Enhancement: Updated examples to demonstrate WindowStyle functionality

    • Enhanced window_features_test example with style management demonstrations
    • Updated simple example with improved UI structure using Panel and proper styling

Platform Support

  • Enhanced cross-platform window style constant generation for all supported platforms:
    • Linux (GTK): Full window style constant support with proper GTK mappings
    • Windows (MSW): Complete Windows-specific style constant generation
    • macOS (OSX): Native macOS window style constants with Cocoa compatibility
    • Unified constant generation system ensuring consistent behavior across platforms

API Changes

  • Added new WindowStyle enum with comprehensive flag variants
  • Extended WxWidget trait with 6 new window style management methods
  • All new APIs follow wxDragon's established patterns for memory safety and type safety
  • No breaking changes - all additions are backward compatible

0.8.2

Bug Fixes

  • Linux PIE Compatibility: Fixed Position Independent Executable (PIE) linker errors on modern Linux distributions

    • Added automatic PIE detection for Linux builds in CMakeLists.txt
    • Checks for --enable-default-pie in GCC compiler flags to detect PIE-enabled systems
    • Enables CMAKE_POSITION_INDEPENDENT_CODE when PIE is detected
    • Maintains backward compatibility with non-PIE Linux systems
    • Resolves R_X86_64_32 relocation errors on Ubuntu 17.04+, Debian 9+, Fedora 23+
    • Fixes linker error: relocation R_X86_64_32 against .rodata can not be used when making a PIE object; recompile with -fPIE
  • macOS arm64 Linking: Fixed critical undefined symbol error for external projects using wxdragon from crates.io

    • Resolved ___isPlatformVersionAtLeast undefined symbol error on macOS arm64 with newer Xcode versions (16.4+)
    • Added clang runtime library linking in build.rs for macOS arm64 builds
    • Uses xcrun --find clang to dynamically locate the correct clang toolchain path
    • Links libclang_rt.osx.a which provides the missing platform version checking symbols
    • Fixed compatibility with macOS 15.5+ and newer Xcode toolchains
    • Removed .cargo/config.toml that was masking the issue in CI testing
    • Ensures CI accurately represents external project usage scenarios
    • Breaking: External projects upgrading to 0.8.2 will now build successfully without requiring special configuration

Platform Support

  • Enhanced Linux Compatibility: Full support for modern Linux distributions with PIE enabled by default
  • Enhanced macOS Compatibility: Full support for macOS 15.5 with Xcode 16.4
  • External Project Support: Verified compatibility when used as a dependency from crates.io
  • CI Accuracy: GitHub Actions now properly tests the same conditions external projects face

0.8.1

New Features

  • Comprehensive Cursor API: Added complete cursor management system with full wxWidgets 3.3.0 feature parity

    • 28 stock cursor types: Arrow, Hand, Cross, Wait, IBeam, Magnifier, sizing cursors, and more
    • Multiple cursor creation methods: stock cursors, file loading, bitmap conversion, raw data
    • Global cursor management with set_cursor() and busy cursor with nesting support
    • RAII BusyCursor wrapper for automatic cleanup and exception safety
    • Platform-aware implementation supporting macOS, Windows, and Linux
    • Cursor properties API: hotspot access, validity checking, native handle access
    • Per-window cursor management: set/get cursor for individual windows
    • Complete memory safety with proper Drop implementation and error handling
  • Dark Mode Support: Added comprehensive dark mode support with wxWidgets 3.3.0+ appearance API

    • System appearance detection: detect if system is using dark/light mode
    • Application appearance control: set app to Light, Dark, or System mode
    • Cross-platform support: full macOS support, Windows 10 v2004+ dark theme support, basic Linux support
    • SystemAppearance API with platform-specific appearance name access (e.g., NSAppearanceNameDarkAqua)
    • Thread-safe implementation with Send + Sync traits for async applications
    • Conditional compilation with wxCHECK_VERSION guards for compatibility
  • Enhanced Window Management: Extended window functionality for modern UI development

    • Z-order management: raise() and lower() methods for window layering
    • Mouse capture: capture_mouse() and release_mouse() for advanced input handling
    • Text measurement: get_text_extent() for precise UI layout calculations
    • Integrated cursor management per window instance

Enhancements

  • Cross-Platform Enum Compatibility: Comprehensive enum type system improvements

    • Fixed enum discriminant type compatibility across Linux/macOS (isize) and Windows (i32)
    • Replaced platform-specific explicit discriminant values with automatic assignment
    • Enhanced From implementations with explicit pattern matching for FFI constant mapping
    • Improved type safety with proper #[repr(C)] usage for C ABI compatibility
    • Consistent FFI constant usage following established patterns
  • FFI Layer Enhancements: Expanded C++ binding layer for new functionality

    • Added comprehensive cursor FFI with 16 exported functions
    • Added appearance API with platform-aware conditional compilation
    • Enhanced window management FFI with z-order and mouse capture functions
    • Improved enum constant generation and usage patterns

Bug Fixes

  • Windows Build Compatibility: Resolved platform-specific build issues

    • Fixed Windows cursor constructor compatibility (C2661 compilation errors)
    • Corrected platform-specific cursor creation for Windows vs GTK/other platforms
    • Windows: Use wxImage-based cursor creation with hotspot options
    • GTK: Use raw bits constructor with proper foreground/background color parameters
    • Fixed cross-platform enum type mismatches in FFI layer
  • Code Quality: Addressed clippy warnings and improved code standards

    • Fixed needless_borrows_for_generic_args warnings in build script
    • Removed unnecessary reference operators in function calls
    • Improved build script efficiency and clarity

Examples

  • dark_mode_demo: New comprehensive example demonstrating dark mode functionality

    • System appearance detection and dark mode checking
    • Application appearance mode switching (Light, Dark, System)
    • Platform-specific appearance information display
    • Demonstrates wxWidgets appearance limitations and best practices
  • window_features_test: Enhanced example showcasing cursor and window management

    • Comprehensive cursor API demonstration with all 28 stock cursor types
    • Window management features: z-order control, mouse capture, text measurement
    • RAII BusyCursor usage patterns and cursor property access
    • Interactive UI for testing all cursor and window features

Platform Support

  • Enhanced cross-platform compatibility for all supported platforms:
    • Linux: Fixed enum type compatibility, cursor constructor issues
    • macOS: Full dark mode support, comprehensive cursor API
    • Windows MSVC: Fixed cursor constructor C2661 errors, enum type issues
    • Windows MinGW: Cross-platform enum compatibility, cursor creation fixes

API Changes

  • Added new modules: cursor, appearance with comprehensive APIs
  • Enhanced window module with cursor management, z-order, and mouse capture
  • Extended app module with appearance control functionality
  • All new APIs follow wxDragon's established patterns for memory safety and error handling

0.8.0

New Features

  • Pre-built wxWidgets Library Integration: Major build system enhancement with pre-built wxWidgets libraries
    • Reduced build times from 20-30 minutes to seconds (99%+ improvement)
    • macOS debug/release builds: ~5 seconds
    • Windows cross-compilation: ~17 seconds
    • Automatic download of pre-built libraries from GitHub releases
    • Support for both debug and release configurations
    • Maintains full functionality with pre-built libraries

Enhancements

  • Cross-Platform Build System: Comprehensive build system improvements for all platforms
    • Enhanced Windows MSVC build support with proper Visual Studio integration
    • Improved MSYS2/MinGW64 build compatibility with static linking
    • Fixed cross-compilation from macOS to Windows
    • Unified library naming conventions and paths across platforms
    • Complete static linking support for Windows builds with dependency-free executables
  • CI/CD Improvements: Extensive GitHub Actions workflow enhancements
    • Automated pre-built wxWidgets library generation for all platforms
    • Support for both debug and release library builds
    • Improved artifact packaging and distribution
    • Enhanced build diagnostics and error reporting

Bug Fixes

  • Windows Build Fixes: Resolved multiple Windows-specific build issues
    • Fixed MSVC setup.h include path issues and Unicode definitions
    • Resolved library placement and organization for Windows builds
    • Fixed cmake path detection for cross-platform CI compatibility
    • Corrected MSVC runtime linking based on build profile
  • Static Linking: Complete static linking implementation for Windows
    • Resolved C++ standard library linking conflicts in MSYS2/MinGW64
    • Fixed missing std::basic_streambuf symbols
    • Added comprehensive static linking flags for all C++ runtime libraries

0.7.1

New Features

  • GenericStaticBitmap Widget: Added GenericStaticBitmap widget for enhanced cross-platform compatibility
    • Platform-aware StaticBitmap handling in XRC files
    • Automatic use of wxGenericStaticBitmap on Windows for better rendering consistency
    • Native wxStaticBitmap on other platforms for optimal performance
    • Seamless integration with existing StaticBitmap API

Enhancements

  • Platform-Aware XRC Handling: Enhanced XRC system with platform-specific widget selection
    • Intelligent StaticBitmap implementation selection based on target platform
    • Improved cross-platform rendering consistency
    • Better support for complex UI layouts across different operating systems

Bug Fixes

  • Windows Build: Fixed Windows build compatibility issues
  • XRC Integration: Resolved StaticBitmap rendering issues in XRC-loaded interfaces

0.7.0

New Features

  • Enhanced Build System: Initial groundwork for pre-built library support
  • Cross-Platform Improvements: Better support for Windows and cross-compilation scenarios

0.6.8

New Features

  • Bitmap RGBA Data Extraction: Added get_rgba_data() method to Bitmap for seamless integration with Rust image processing libraries
    • Extracts raw RGBA pixel data as Vec<u8> with 4 bytes per pixel (R, G, B, A)
    • Data is ordered row by row from top to bottom, left to right within each row
    • Handles both alpha and non-alpha bitmaps (non-alpha defaults to fully opaque)
    • Perfect for integration with the image crate: image::RgbaImage::from_raw(width, height, rgba_data)
    • Added comprehensive documentation with usage examples
    • Includes proper memory management with C++ allocated data cleanup

Enhancements

  • FFI Layer: Added wxd_Bitmap_GetRGBAData() and wxd_Bitmap_FreeRGBAData() C++ functions
    • Utilizes wxWidgets' ConvertToImage() and pixel data extraction APIs
    • Safe memory allocation and deallocation patterns
    • Proper alpha channel handling for all bitmap types

Bug Fixes

  • MediaCtrl SeekMode: Fixed clippy warning by using #[derive(Default)] instead of manual implementation

0.6.7

Enhancements

  • WxWidget Trait: Added get_parent() method to WxWidget trait for accessing parent windows
    • Returns Option<Window> - Some(Window) if widget has a parent, None for top-level windows
    • Enables child widgets to trigger refresh and layout updates on their parent containers
    • Improves widget update behavior by allowing proper parent notification
  • StaticBitmap Refresh Enhancement: Enhanced StaticBitmap methods to refresh parent containers
    • Updated set_scale_mode(), set_bitmap(), and set_bitmap_bundle() to refresh parent instead of self
    • Ensures immediate visual updates when bitmap content or scaling changes
    • Eliminates the need to manually resize windows to see changes

0.6.6

New Features

  • StaticBitmap Scale Mode Support: Added comprehensive scale mode functionality for StaticBitmap widget
    • Added ScaleMode enum with variants: None, Fill, AspectFit, and AspectFill
    • Added set_scale_mode() and get_scale_mode() methods to StaticBitmap
    • Added with_scale_mode() builder method for convenient scale mode configuration
    • Enhanced StaticBitmap builder to support scale mode initialization
    • Scale modes control how bitmaps are displayed within the control boundaries:
      • None: Display bitmap at original size (no scaling)
      • Fill: Scale to fill entire control (may change aspect ratio)
      • AspectFit: Scale to fit within control while maintaining aspect ratio
      • AspectFill: Scale to fill control while maintaining aspect ratio (may crop)

Enhancements

  • API Exports: Added ScaleMode enum to public API exports in prelude and widgets module
  • FFI Layer: Extended C++ bindings with wxd_StaticBitmap_SetScaleMode and wxd_StaticBitmap_GetScaleMode functions
  • Type Safety: Implemented safe conversion between Rust enum and C++ scale mode constants

0.6.5

Bug Fixes

  • XRC Loading from String: Fixed critical UTF-8 encoding bug in wxd_XmlResource_LoadFromString function
    • Corrected memory stream size calculation to use actual UTF-8 byte length instead of Unicode character count
    • Fixed truncated XRC data when loading XML with non-ASCII characters (e.g., Chinese characters)
    • Resolved "Failed to parse XML document" errors when using wxFormBuilder-generated XRC files
    • wxDragon is now fully compatible with wxFormBuilder-generated XRC files without requiring manual cleanup

Enhancements

  • DataViewCustomRenderer GetSizeCallback: Enhanced the GetSizeCallback signature to receive both the variant value and default cell size as parameters, making it more practical for content-aware sizing
    • The callback now has the signature Fn(&Variant, Size) -> Size instead of Fn() -> Size
    • Allows renderers to adjust their size based on the actual data content

0.6.4

New Features

  • DataView Custom Renderers: Added comprehensive custom renderer support for DataView controls
    • Implemented DataViewCustomRenderer with full editor functionality
    • Added editor-related APIs for custom DataView rendering with edit capabilities
    • Enhanced DataView widget with custom renderer integration
    • Added custom_dataview_renderer example demonstrating custom rendering functionality

Enhancements

  • Feature Gates: Added granular feature flags for better build customization
    • Added webview feature flag for WebView widget support
    • Added media-ctrl feature flag for MediaCtrl widget support
    • Added stc feature flag for StyledTextCtrl widget support
    • Added xrc feature flag for XML Resource support
    • Added aui feature flag for Advanced User Interface components
    • Updated examples to use appropriate feature flags
  • Build System Improvements: Enhanced cross-platform build compatibility
    • Fixed build failures across all platforms when enabling HTML with both XRC and WebView features
    • Improved Linux build stability with build script optimizations
    • Enhanced MSVC and MinGW64 build support
    • Better CMake configuration for conditional feature compilation
  • Widget API Enhancements: Extended widget functionality and API surface
    • Enhanced menu system with additional functionality
    • Improved toolbar and scrolled window implementations
    • Added window-related utility functions

Bug Fixes

  • Cross-Platform Build: Fixed critical build issues affecting all platforms
    • Resolved HTML feature conflicts when both XRC and WebView features are enabled
    • Fixed Linux-specific build errors in the build script
    • Improved build stability for MSVC and MinGW64 toolchains
  • DataView Renderer: Fixed implementation issues in custom DataView rendering
    • Optimized C++ implementation for better performance
    • Improved memory management in custom renderer implementations

Examples

  • custom_dataview_renderer: New comprehensive example showcasing custom DataView renderer functionality
    • Demonstrates custom cell rendering and editing capabilities
    • Shows integration with custom data models
    • Includes practical use cases for advanced DataView customization

Platform Support

  • Enhanced cross-platform compatibility for Linux, Windows (MSVC/MinGW64), and macOS
  • Improved feature gate system for platform-specific functionality
  • Better conditional compilation support across different build environments

0.6.2

Bug Fixes

  • DataView Event System: Fixed critical issue where event.get_row() always returned 0 for custom DataView virtual list models
    • Corrected wxd_DataViewEvent_GetRow implementation to use proper wxWidgets 3.2.8 API (GetModel() instead of non-existent GetDataViewCtrl())
    • Added support for both wxDataViewVirtualListModel and wxDataViewIndexListModel row index conversion
    • Enhanced fallback mechanism for other model types with proper manual decoding
    • Fixed compilation errors by using correct wxWidgets API methods
    • Added comprehensive test case in gallery example with double-click row index verification

Enhancements

  • Prelude Module: Added DataViewEventHandler trait to prelude for easier access to DataView event handling methods
    • Enables direct usage of methods like on_item_activated() without explicit trait imports
    • Improves developer experience for DataView event handling

Examples

  • Gallery Example: Enhanced DataView Virtual tab with double-click testing functionality
    • Added on_item_activated event handler to demonstrate correct row index reporting
    • Includes console output showing employee details for clicked rows
    • Serves as verification for the DataView event fix

0.6.1

New Features

  • Enhanced Idle Event System: Significantly improved idle event support for better async runtime integration
    • Added Event::request_more() and Event::more_requested() methods for intelligent idle event control
    • Added IdleEvent struct with static methods set_mode() and get_mode() for global idle mode management
    • Added IdleMode enum with ProcessAll and ProcessSpecified variants for fine-grained control
    • Added ExtraWindowStyle::ProcessIdle flag for per-window idle event processing control
    • Enhanced window event handling with proper idle event data structures

Examples

  • tokio_async_demo: Added comprehensive example demonstrating async runtime integration
    • Shows recommended patterns for tokio channel communication with GUI
    • Demonstrates efficient idle event usage with request_more() for optimal CPU usage
    • Includes counter updates, status messages, and background task coordination
    • Uses ProcessSpecified idle mode with per-window control for maximum efficiency

Enhancements

  • Window API: Added extra window style management methods to WxWidget trait
    • set_extra_style(), get_extra_style_raw(), has_extra_style()
    • add_extra_style(), remove_extra_style() for fine-grained style control
  • FFI Layer: Extended C++ binding with new idle event and window style APIs
    • Added idle event control functions in wxd_event_api.h
    • Enhanced window base functionality in wxd_window_base.h
    • Cross-platform constant generation for idle event modes

Platform Support

  • Enhanced cross-platform idle event constants for GTK, MSW, and OSX
  • Improved async integration compatibility across all supported platforms

0.6.0

New Features

  • StyledTextCtrl Widget: Added comprehensive StyledTextCtrl widget for advanced text editing
    • Full-featured text editor component with syntax highlighting support
    • Extensive API with 1600+ lines of Rust bindings
    • Support for text styling, markers, indicators, and annotations
    • Advanced text manipulation and editor functionality
  • CollapsiblePane Widget: Added CollapsiblePane widget for expandable/collapsible content areas
    • Configurable expand/collapse behavior
    • Integration with layout system for dynamic UI layouts

Enhancements

  • Build System Improvements:
    • Enhanced static linking support from macOS to Windows via GNU toolchain
    • Added Windows manifest embedding for gallery example
    • Improved cross-platform build compatibility

Bug Fixes

  • Windows Build: Fixed Windows build by adding missing imm32 library dependency

Examples

  • Added simple_stc_test example demonstrating StyledTextCtrl functionality
  • Updated gallery example with CollapsiblePane demonstration
  • Enhanced custom_widget example documentation with README and GIF demonstration

Platform Support

  • Improved Windows build stability and compatibility
  • Enhanced cross-compilation support from macOS to Windows

0.5.0

New Features

  • New Sizer Types:
    • WrapSizer: Wrapping sizer with configurable wrapping behavior
      • WrapSizerFlag enum for controlling wrap behavior
    • GridSizer: Basic grid layout sizer with configurable rows, columns, and gaps
    • GridBagSizer: Advanced grid layout with position and span control
      • GBPosition and GBSpan types for precise grid positioning
      • Support for item positioning, spanning, and cell size management
      • Empty cell size configuration
  • Enhanced Frame Support:
    • Added set_icon function for Frame widget to set window icons
  • Enhanced Device Context (DC) Module:
    • Added AutoBufferedPaintDC for automatic double buffering
    • Significantly expanded DC functionality with additional drawing methods
    • Enhanced DC constants and type definitions

Breaking Changes

  • Event System Refactoring: Major refactor of the event system to allow multiple bindings to one event
    • Improved event handling architecture for better flexibility
    • More robust event binding mechanism
  • API Cleanup: Cleaned up lib.rs and prelude.rs for better organization
    • Streamlined imports and exports
    • Improved public API structure

Enhancements

  • MediaCtrl Feature Flag: Enhanced conditional compilation for MediaCtrl event handling
    • Better feature flag support for optional components
  • Build System Improvements:
    • Enhanced CMake configuration
    • Better header isolation between wxWidgets and wrapper headers
    • Improved cross-platform build support

Examples

  • Added wrapsizer_test example demonstrating WrapSizer functionality
  • Added gridsizer_test example showing GridSizer usage
  • Added gridbagsizer_test example with advanced GridBagSizer positioning
  • Added custom_widget example showcasing:
    • AutoBufferedPaintDC usage
    • Custom widget implementation with anim_fill_button.rs
    • Pie chart widget implementation with pie_chart.rs

Refactoring

  • Event System Architecture: Complete refactoring to support multiple event bindings
  • DC Module Enhancement: Expanded drawing capabilities and constants
  • Code Organization: Better module structure and cleaner API surface

0.4.0

New Features

  • Added XRC (XML Resource) support for loading UI definitions from XML files
  • Added Clipboard support with full text, file, and bitmap functionality
  • Added Timer widget for scheduled events and callbacks
  • Added BitmapBundle support for high-DPI displays and multiple image resolutions
  • Added RearrangeList widget for reorderable list controls
  • Added new dialog widgets:
    • DirDialog for directory selection
    • SingleChoiceDialog for single item selection
    • MultiChoiceDialog for multiple item selection

Enhancements

  • Enhanced Button widget with BitmapBundle support for better image handling
  • Enhanced StaticBitmap widget with BitmapBundle support
  • Enhanced Toolbar widget with BitmapBundle support for high-DPI icons
  • Enhanced ArtProvider with additional functions and capabilities
  • Improved cross-compilation support from macOS to Windows

Refactoring

  • Unified file naming conventions across the codebase
  • Improved data object architecture for clipboard and drag-and-drop operations
  • Enhanced build system for better cross-platform compatibility

Examples

  • Added clipboard_test example demonstrating clipboard functionality
  • Added simple_xrc_test example showing XRC usage
  • Updated gallery example with new widgets and features

0.3.0

New Features

  • Added DataViewCtrl support with various components:
    • DataViewTreeCtrl for hierarchical data display
    • DataViewVirtualListModel for efficient large dataset handling
    • Multiple renderer types (text, toggle, progress, bitmap, etc.)
  • Added image support for Button widget
  • Added ImageList support for Notebook and TreeCtrl
  • Added get_bitmap functionality to StaticBitmap widget
  • Added more functions to FileDialog

Enhancements

  • Comprehensive event system refactoring with three-tier approach:
    • Window events common to all widgets
    • Category-specific events for related controls
    • Widget-specific event handlers
  • Added type-safe event data via strongly-typed wrappers
  • Added event handlers for checkboxes, choice controls, color pickers and more
  • Added more DataView-related functions

Refactoring

  • Refactored SizerFlag constants to use enums for better type safety
  • Removed all raw pointer constants (*.PTR) in favor of safer alternatives
  • Removed libc dependency from wxdragon
  • Updated C++ event infrastructure with proper ownership management

Bug Fixes

  • Fixed bitmap issue with DataViewVirtualListModel
  • Fixed potential memory leak in variant handling

0.2.0

New Features

  • Added MediaPlayer widget for audio/video playback
  • Added EditableListBox widget
  • Added TimePicker widget
  • Added NotificationMessage widget
  • Added AnimationCtrl widget
  • Added various dialog widgets:
    • MessageDialog
    • FileDialog
    • TextEntryDialog
    • ColourDialog
    • FontDialog
    • ProgressDialog
  • Added picker controls:
    • FilePickerCtrl
    • DirPickerCtrl
    • FontPickerCtrl
  • Added AUI (Advanced User Interface) components:
    • AuiMdiParentFrame
    • AuiMdiChildFrame
    • AuiNotebook
    • AuiToolbar
  • Added Drag and Drop (DnD) support with full callback implementation
  • Added Device Context (DC) related APIs
  • Added app::call_after for scheduling work on the main thread

Enhancements

  • Added more size-related functions to Window
  • Added more functions to ListCtrl
  • Added more functions and styles to TextCtrl
  • Added more colors and font functions
  • Enhanced memory management for Bitmap
  • Added enable/disable functions to widgets
  • Added general set_font capability to all widgets
  • Added sizer.detach and widget.destroy methods
  • Added TreeItemData support
  • Improved FileDataObject with proper get_filenames implementation
  • Added general set_font capability to all widgets

Refactoring

  • Refactored TreeCtrl to use unified item_data mechanism
  • Refined dialog code for better usability
  • Refined ListCtrl implementation
  • Applied widget macros to existing widgets for consistent implementation
  • Refined constant handling by converting to Rust enums
  • Restructured wxdragon.h to use separate modules

Platform Support

  • Added Windows theme support
  • Improved cross-compilation from macOS to Windows

Breaking Changes

  • Removed RawWxPtr in favor of a more robust approach

0.1.0

  • Initial release of wxdragon and wxdragon-sys