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>
74 lines
2.5 KiB
C++
74 lines
2.5 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_TEXT_INPUT_PLUGIN_H_
|
|
#define FLUTTER_SHELL_PLATFORM_WINDOWS_TEXT_INPUT_PLUGIN_H_
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
|
|
#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h"
|
|
#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h"
|
|
#include "flutter/shell/platform/common/cpp/json_method_codec.h"
|
|
#include "flutter/shell/platform/common/cpp/text_input_model.h"
|
|
#include "flutter/shell/platform/windows/keyboard_hook_handler.h"
|
|
#include "flutter/shell/platform/windows/public/flutter_windows.h"
|
|
|
|
namespace flutter {
|
|
|
|
class FlutterWindowsView;
|
|
|
|
// Implements a text input plugin.
|
|
//
|
|
// Specifically handles window events within windows.
|
|
class TextInputPlugin : public KeyboardHookHandler {
|
|
public:
|
|
explicit TextInputPlugin(flutter::BinaryMessenger* messenger);
|
|
|
|
virtual ~TextInputPlugin();
|
|
|
|
// |KeyboardHookHandler|
|
|
void KeyboardHook(FlutterWindowsView* view,
|
|
int key,
|
|
int scancode,
|
|
int action,
|
|
char32_t character) override;
|
|
|
|
// |KeyboardHookHandler|
|
|
void TextHook(FlutterWindowsView* view, const std::u16string& text) override;
|
|
|
|
private:
|
|
// Sends the current state of the given model to the Flutter engine.
|
|
void SendStateUpdate(const TextInputModel& model);
|
|
|
|
// Sends an action triggered by the Enter key to the Flutter engine.
|
|
void EnterPressed(TextInputModel* model);
|
|
|
|
// Called when a method is called on |channel_|;
|
|
void HandleMethodCall(
|
|
const flutter::MethodCall<rapidjson::Document>& method_call,
|
|
std::unique_ptr<flutter::MethodResult<rapidjson::Document>> result);
|
|
|
|
// The MethodChannel used for communication with the Flutter engine.
|
|
std::unique_ptr<flutter::MethodChannel<rapidjson::Document>> channel_;
|
|
|
|
// The active client id.
|
|
int client_id_;
|
|
|
|
// The active model. nullptr if not set.
|
|
std::unique_ptr<TextInputModel> active_model_;
|
|
|
|
// Keyboard type of the client. See available options:
|
|
// https://docs.flutter.io/flutter/services/TextInputType-class.html
|
|
std::string input_type_;
|
|
|
|
// An action requested by the user on the input client. See available options:
|
|
// https://docs.flutter.io/flutter/services/TextInputAction-class.html
|
|
std::string input_action_;
|
|
};
|
|
|
|
} // namespace flutter
|
|
|
|
#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_TEXT_INPUT_PLUGIN_H_
|