5 #ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOW_H_
6 #define FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOW_H_
11 #include "flutter/fml/macros.h"
12 #include "flutter/shell/geometry/geometry.h"
14 #include "flutter/shell/platform/embedder/embedder.h"
24 #include "flutter/third_party/accessibility/ax/platform/ax_fragment_root_delegate_win.h"
25 #include "flutter/third_party/accessibility/ax/platform/ax_fragment_root_win.h"
26 #include "flutter/third_party/accessibility/ax/platform/ax_platform_node_win.h"
27 #include "flutter/third_party/accessibility/gfx/native_widget_types.h"
31 class DisplayManagerWin32;
44 std::shared_ptr<WindowsProcTable> windows_proc_table =
nullptr,
45 std::unique_ptr<TextInputManager> text_input_manager =
nullptr);
60 UINT wRemoveMsg)
override;
68 LPARAM lParam)
override;
76 virtual void OnResize(
unsigned int width,
unsigned int height);
85 FlutterPointerDeviceKind device_kind,
95 FlutterPointerDeviceKind device_kind,
105 FlutterPointerDeviceKind device_kind,
112 FlutterPointerDeviceKind device_kind,
116 virtual void OnText(
const std::u16string&
text)
override;
149 virtual void OnScroll(
double delta_x,
151 FlutterPointerDeviceKind device_kind,
175 size_t height)
override;
190 virtual ui::AXPlatformNodeWin*
GetAlert()
override;
193 virtual bool Focus()
override;
222 LPARAM
const lparam) noexcept;
230 LPARAM
const lparam);
236 LPARAM
const lparam);
241 LPARAM
const lparam);
246 LPARAM
const lparam);
251 LPARAM
const lparam);
258 LPARAM
const lparam);
294 static LRESULT CALLBACK WndProc(HWND
const window,
297 LPARAM
const lparam) noexcept;
301 static const long kWmDpiChangedBeforeParent = 0x02E2;
304 static const int kDirectManipulationTimer = 1;
311 WNDCLASS RegisterWindowClass(std::wstring& title);
314 static FlutterWindow* GetThisFromHandle(HWND
const window) noexcept;
317 void TrackMouseLeaveEvent(HWND hwnd);
320 void HandleResize(UINT width, UINT height);
323 void UpdateScrollOffsetMultiplier();
328 void CreateAxFragmentRoot();
340 bool restored_ =
false;
341 bool focused_ =
false;
343 int current_dpi_ = 0;
344 int current_width_ = 0;
345 int current_height_ = 0;
348 float scroll_offset_multiplier_;
351 HWND window_handle_ =
nullptr;
354 std::wstring window_class_name_;
357 bool tracking_mouse_leave_ =
false;
361 int keycode_for_char_message_ = 0;
371 std::shared_ptr<DisplayManagerWin32> display_manager_;
375 std::shared_ptr<WindowsProcTable> windows_proc_table_;
378 std::unique_ptr<TextInputManager> text_input_manager_;
381 std::unique_ptr<KeyboardManager> keyboard_manager_;
384 std::vector<TOUCHINPUT> touch_points_;
387 std::unique_ptr<ui::AXFragmentRootWin> ax_fragment_root_;
virtual void OnCursorRectUpdated(const Rect &rect) override
virtual void OnPointerLeave(double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id)
virtual float GetScrollOffsetMultiplier()
virtual bool Focus() override
virtual ui::AXPlatformNodeWin * GetAlert() override
virtual void OnText(const std::u16string &text) override
virtual UINT Win32DispatchMessage(UINT Msg, WPARAM wParam, LPARAM lParam) override
virtual BOOL Win32PeekMessage(LPMSG lpMsg, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg) override
virtual void OnThemeChange()
std::unique_ptr< AlertPlatformNodeDelegate > alert_delegate_
virtual bool OnBitmapSurfaceUpdated(const void *allocation, size_t row_bytes, size_t height) override
virtual void OnPointerDown(double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id, uint64_t buttons, uint32_t rotation, uint32_t pressure)
virtual void OnImeRequest(UINT const message, WPARAM const wparam, LPARAM const lparam)
virtual void OnPointerMove(double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id, uint64_t buttons, uint32_t rotation, uint32_t pressure, int modifiers_state)
virtual LRESULT Win32DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
virtual void OnImeStartComposition(UINT const message, WPARAM const wparam, LPARAM const lparam)
virtual void OnPointerUp(double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id, uint64_t buttons)
std::wstring NarrowToWide(const char *source)
virtual FlutterEngineDisplayId GetDisplayId() override
virtual ui::AXFragmentRootDelegateWin * GetAxFragmentRootDelegate()
virtual void OnScroll(double delta_x, double delta_y, FlutterPointerDeviceKind device_kind, int32_t device_id)
void InitializeChild(const char *title, unsigned int width, unsigned int height)
virtual AlertPlatformNodeDelegate * GetAlertDelegate() override
std::unique_ptr< DirectManipulationOwner > direct_manipulation_owner_
virtual HWND GetWindowHandle() override
friend class WindowAXFragmentRootDelegate
virtual void OnComposeCommit()
virtual void UpdateCursorRect(const Rect &rect)
virtual PhysicalWindowBounds GetPhysicalWindowBounds() override
virtual void OnImeSetContext(UINT const message, WPARAM const wparam, LPARAM const lparam)
virtual void OnWindowStateEvent(WindowStateEvent event)
virtual void OnKey(int key, int scancode, int action, char32_t character, bool extended, bool was_down, KeyEventCallback callback) override
std::unique_ptr< ui::AXPlatformNodeWin > alert_node_
virtual PointerLocation GetPrimaryPointerLocation() override
virtual void OnComposeEnd()
virtual void SetView(WindowBindingHandlerDelegate *view) override
LRESULT HandleMessage(UINT const message, WPARAM const wparam, LPARAM const lparam) noexcept
virtual void OnComposeChange(const std::u16string &text, int cursor_pos)
virtual void OnResetImeComposing() override
virtual uint32_t Win32MapVkToChar(uint32_t virtual_key) override
virtual void OnImeComposition(UINT const message, WPARAM const wparam, LPARAM const lparam)
virtual void OnDpiScale(unsigned int dpi)
virtual void AbortImeComposing()
virtual float GetDpiScale() override
virtual void OnUpdateSemanticsEnabled(bool enabled)
virtual LRESULT OnGetObject(UINT const message, WPARAM const wparam, LPARAM const lparam)
virtual gfx::NativeViewAccessible GetNativeViewAccessible()
virtual void OnComposeBegin()
virtual bool OnBitmapSurfaceCleared() override
virtual void OnResize(unsigned int width, unsigned int height)
virtual void OnImeEndComposition(UINT const message, WPARAM const wparam, LPARAM const lparam)
std::function< void(bool)> KeyEventCallback
const DisplayManagerWin32 * display_manager
FlutterDesktopBinaryReply callback
WindowStateEvent
An event representing a change in window state that may update the.