mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
* Add flutter_windows_view and window_binding_handler Switch input handling infra to FlutterWindowsView win32_flutter_window implement WindowBindingHandler Strip unneeded functionality from win32flutterwindow Fulfill WindowBindingHandler interface in Win32FlutterWindow Add implementations for missing input handling in Win32FlutterWindow Cleanup dead code Correctly hook up rendering again Fix resizing clang-format Fix clipboard Cleanup Rename Add comments cleanup * clang-format * CR Feedback * clang-format; gn format * Fix licensing * CR feedback * CR feedback * CR feedback * Git rid of unnecessar :: prefixes * Extract WindowBindingHandlerDelegate as an interface * Missing file * Extract physical window bounds as a struct * CR Feedback * CR feedback * clang-format Co-authored-by: Stuart Morgan <stuartmorgan@google.com>
84 lines
3.0 KiB
C++
84 lines
3.0 KiB
C++
// Copyright 2013 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOW_STATE_H_
|
|
#define FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOW_STATE_H_
|
|
|
|
#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h"
|
|
#include "flutter/shell/platform/common/cpp/incoming_message_dispatcher.h"
|
|
#include "flutter/shell/platform/embedder/embedder.h"
|
|
#include "flutter/shell/platform/windows/key_event_handler.h"
|
|
#include "flutter/shell/platform/windows/keyboard_hook_handler.h"
|
|
#include "flutter/shell/platform/windows/text_input_plugin.h"
|
|
#include "flutter/shell/platform/windows/win32_platform_handler.h"
|
|
#include "flutter/shell/platform/windows/win32_task_runner.h"
|
|
|
|
namespace flutter {
|
|
struct FlutterWindowsView;
|
|
}
|
|
|
|
// Struct for storing state within an instance of the windows native (HWND or
|
|
// CoreWindow) Window.
|
|
struct FlutterDesktopViewControllerState {
|
|
// The view that owns this state object.
|
|
std::unique_ptr<flutter::FlutterWindowsView> view;
|
|
|
|
// The state associate with the engine backing the view.
|
|
std::unique_ptr<FlutterDesktopEngineState> engine_state;
|
|
|
|
// The window handle given to API clients.
|
|
std::unique_ptr<FlutterDesktopView> view_wrapper;
|
|
};
|
|
|
|
// Opaque reference for the native windows itself. This is separate from the
|
|
// controller so that it can be provided to plugins without giving them access
|
|
// to all of the controller-based functionality.
|
|
struct FlutterDesktopView {
|
|
// The view that (indirectly) owns this state object.
|
|
flutter::FlutterWindowsView* view;
|
|
};
|
|
|
|
struct AotDataDeleter {
|
|
void operator()(FlutterEngineAOTData aot_data) {
|
|
FlutterEngineCollectAOTData(aot_data);
|
|
}
|
|
};
|
|
|
|
using UniqueAotDataPtr = std::unique_ptr<_FlutterEngineAOTData, AotDataDeleter>;
|
|
|
|
// Struct for storing state of a Flutter engine instance.
|
|
struct FlutterDesktopEngineState {
|
|
// The handle to the Flutter engine instance.
|
|
FLUTTER_API_SYMBOL(FlutterEngine) engine;
|
|
|
|
// Task runner for tasks posted from the engine.
|
|
std::unique_ptr<flutter::Win32TaskRunner> task_runner;
|
|
|
|
// AOT data, if any.
|
|
UniqueAotDataPtr aot_data;
|
|
};
|
|
|
|
// State associated with the plugin registrar.
|
|
struct FlutterDesktopPluginRegistrar {
|
|
// The plugin messenger handle given to API clients.
|
|
std::unique_ptr<FlutterDesktopMessenger> messenger;
|
|
|
|
// The handle for the view associated with this registrar.
|
|
FlutterDesktopView* view;
|
|
|
|
// Callback to be called on registrar destruction.
|
|
FlutterDesktopOnRegistrarDestroyed destruction_handler;
|
|
};
|
|
|
|
// State associated with the messenger used to communicate with the engine.
|
|
struct FlutterDesktopMessenger {
|
|
// The Flutter engine this messenger sends outgoing messages to.
|
|
FLUTTER_API_SYMBOL(FlutterEngine) engine;
|
|
|
|
// The message dispatcher for handling incoming messages.
|
|
flutter::IncomingMessageDispatcher* dispatcher;
|
|
};
|
|
|
|
#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOW_STATE_H_
|