-
Notifications
You must be signed in to change notification settings - Fork 257
[desktop_multi_window] refactor #445
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces a major refactor of the desktop_multi_window plugin, redesigning the window management system across Windows, Linux, and macOS platforms. The refactor replaces integer-based window IDs with UUID strings, introduces a new channel-based communication system with configurable modes (unidirectional/bidirectional), and adds a WindowConfiguration API for better control over window creation.
Key changes:
- Window identification system migrated from integers to UUID strings
- New
WindowMethodChannelAPI with unidirectional and bidirectional communication modes - Refactored window management architecture removing intermediate base classes
- Enhanced example application demonstrating new features including video playback and window lifecycle management
Reviewed Changes
Copilot reviewed 75 out of 77 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| windows/window_configuration.h | New header defining WindowConfiguration struct for window creation parameters |
| windows/window_channel_plugin.h/cc | New plugin implementing cross-window method channel communication |
| windows/win32_window.h/cpp | Refactored Win32 window wrapper with theme support |
| windows/multi_window_manager.h/cc | Redesigned manager using UUID window IDs and notification system |
| windows/desktop_multi_window_plugin.cpp | Updated plugin with window-specific method routing |
| macos/Classes/WindowChannel.swift | Redesigned channel system with registry and mode support |
| macos/Classes/FlutterWindow.swift | Simplified window wrapper with event notification |
| macos/Classes/FlutterMultiWindowPlugin.swift | Integrated manager within plugin class |
| linux/window_channel_plugin.h/cc | Linux implementation of channel plugin |
| linux/multi_window_manager.h/cc | Linux manager with GTK window handling |
| linux/desktop_multi_window_plugin.cc | Updated for new window management |
| lib/src/window_controller.dart | Complete API redesign with async patterns |
| lib/src/window_channel.dart | New Dart channel API with error handling |
| lib/src/window_configuration.dart | Configuration class for window creation |
| example/* | Updated examples demonstrating new features |
| pubspec.yaml | Version bump to 0.3.0 with SDK requirement update |
| README.md | Comprehensive documentation rewrite |
Comments suppressed due to low confidence (1)
packages/desktop_multi_window/example/windows/runner/win32_window.h:1
- Corrected spelling of 'registar' to 'registrar'.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
packages/desktop_multi_window/linux/desktop_multi_window_plugin.cc
Outdated
Show resolved
Hide resolved
…n.cc Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
trying to fix
desktop_multi_window#127Closes #443
Closes #432
Closes #423
Closes #420
Closes #419
Closes #412
Closes #388
Closes #392
Closes #356
Closes #352
Closes #342
Closes #328
Closes #319
Closes #304
Closes #293
Closes #289
Closes #284
Closes #283
Closes #266
Closes #259
Closes #252
Closes #225
Closes #221
Closes #141
Closes #137
Closes #128
Closes #127
Closes #109
Closes #102
Closes #80
Closes #71