| Flutter Windows Embedder |

Public Member Functions | Protected Member Functions | List of all members
flutter::HostWindowTooltip Class Reference

`#include <host_window_tooltip.h>`

Inheritance diagram for flutter::HostWindowTooltip:

## Public Member Functions
| HostWindowTooltip (WindowManager *window_manager, FlutterWindowsEngine *engine, const BoxConstraints &constraints, bool is_sized_to_content, GetWindowPositionCallback get_position_callback, HWND parent)
void | UpdatePosition ()
Public Member Functions inherited from flutter::HostWindow
virtual | ~HostWindow ()
HWND | GetWindowHandle () const
HWND | GetFlutterViewWindowHandle () const
void | SetContentSize (const WindowSizeRequest &size)
void | SetConstraints (const WindowConstraints &constraints)
virtual void | SetFullscreen (bool fullscreen, std::optional< FlutterEngineDisplayId > display_id)
virtual bool | GetFullscreen () const
HostWindow * | GetOwnerWindow () const
void | UpdateModalStateLayer ()

## Protected Member Functions
LRESULT | HandleMessage (HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) override
Protected Member Functions inherited from flutter::HostWindow
void | InitializeFlutterView (HostWindowInitializationParams const &params)
| HostWindow (WindowManager *window_manager, FlutterWindowsEngine *engine)
void | EnableRecursively (bool enable)
HostWindow * | FindFirstEnabledDescendant () const
std::vector< HostWindow * > | GetOwnedWindows () const
void | DisableRecursively ()
| FML_DISALLOW_COPY_AND_ASSIGN (HostWindow)

## Additional Inherited Members
Static Public Member Functions inherited from flutter::HostWindow
static std::unique_ptr< HostWindow > | CreateRegularWindow (WindowManager *window_manager, FlutterWindowsEngine *engine, const WindowSizeRequest &preferred_size, const WindowConstraints &preferred_constraints, LPCWSTR title)
static std::unique_ptr< HostWindow > | CreateDialogWindow (WindowManager *window_manager, FlutterWindowsEngine *engine, const WindowSizeRequest &preferred_size, const WindowConstraints &preferred_constraints, LPCWSTR title, HWND parent)
static std::unique_ptr< HostWindow > | CreateTooltipWindow (WindowManager *window_manager, FlutterWindowsEngine *engine, const WindowConstraints &preferred_constraints, bool is_sized_to_content, GetWindowPositionCallback get_position_callback, HWND parent)
static HostWindow * | GetThisFromHandle (HWND hwnd)
static ActualWindowSize | GetWindowContentSize (HWND hwnd)
Static Protected Member Functions inherited from flutter::HostWindow
static std::optional< Size > | GetWindowSizeForClientSize (WindowsProcTable const &win32, Size const &client_size, std::optional< Size > smallest, std::optional< Size > biggest, DWORD window_style, DWORD extended_window_style, std::optional< HWND > const &owner_hwnd)
static void | FocusRootViewOf (HostWindow *window)
static LRESULT | WndProc (HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
Protected Attributes inherited from flutter::HostWindow
friend | WindowManager
WindowManager *const | window_manager_ = nullptr
FlutterWindowsEngine * | engine_
std::unique_ptr< FlutterWindowsViewController > | view_controller_
WindowArchetype | archetype_ = WindowArchetype::kRegular
HWND | window_handle_
BoxConstraints | box_constraints_
bool | is_being_destroyed_ = false
bool | is_fullscreen_ = false
SavedWindowInfo | saved_window_info_
Microsoft::WRL::ComPtr< ITaskbarList2 > | task_bar_list_

## Detailed Description

Definition at line 14 of file host_window_tooltip.h.

## Constructor & Destructor Documentation

## ◆ HostWindowTooltip()

flutter::HostWindowTooltip::HostWindowTooltip | ( | WindowManager * | window_manager,
|  | FlutterWindowsEngine * | engine,
|  | const BoxConstraints & | constraints,
|  | bool | is_sized_to_content,
|  | GetWindowPositionCallback | get_position_callback,
|  | HWND | parent
| ) |  |

Definition at line 11 of file host_window_tooltip.cc.

18 : HostWindow(window_manager, engine),
19 get_position_callback_(get_position_callback),
20 parent_(parent),
21 isolate_(Isolate::Current()),
22 view_alive_(std::make_shared<int>(0)) {
23 // Use minimum constraints as initial size to ensure the view can be created
24 // with valid metrics. If is_sized_to_content is true, the size will be
25 // updated when content is rendered.
26 auto const initial_width =
27 static_cast<double>(constraints.smallest().width());
28 auto const initial_height =
29 static_cast<double>(constraints.smallest().height());
30
31 InitializeFlutterView(HostWindowInitializationParams{
32 .archetype = WindowArchetype::kTooltip,
33 .window_style = WS_POPUP,
34 .extended_window_style = WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW,
35 .box_constraints = constraints,
36 .initial_window_rect = {{0, 0}, {initial_width, initial_height}},
37 .title = L"",
38 .owner_window = parent,
39 .nCmdShow = SW_SHOWNOACTIVATE,
40 .sizing_delegate = this,
41 .is_sized_to_content = is_sized_to_content});
42 SetWindowLongPtr(window_handle_, GWLP_HWNDPARENT,
43 reinterpret_cast<LONG_PTR>(parent_));
44 }
flutter::HostWindow::window_handle_
HWND window_handle_
Definition: host_window.h:223
flutter::HostWindow::InitializeFlutterView
void InitializeFlutterView(HostWindowInitializationParams const &params)
Definition: host_window.cc:245
flutter::HostWindow::HostWindow
HostWindow(WindowManager *window_manager, FlutterWindowsEngine *engine)
Definition: host_window.cc:241
flutter::Isolate::Current
static Isolate Current()
Definition: isolate_scope.cc:9
flutter::WindowArchetype::kTooltip
@ kTooltip

## Member Function Documentation

## ◆ HandleMessage()

LRESULT flutter::HostWindowTooltip::HandleMessage | ( | HWND | hwnd,
|  | UINT | message,
|  | WPARAM | wparam,
|  | LPARAM | lparam
| ) |  |
| override protected virtual

Reimplemented from flutter::HostWindow.

Definition at line 120 of file host_window_tooltip.cc.

123 {
124 switch (message) {
125 case WM_MOUSEACTIVATE:
126 // Prevent activation when clicked
127 return MA_NOACTIVATE;
128
129 case WM_NCACTIVATE:
130 // Return TRUE to prevent visual activation changes
131 return TRUE;
132
133 case WM_ACTIVATE:
134 // Immediately deactivate if somehow activated
135 if (LOWORD(wparam) != WA_INACTIVE) {
136 HWND hFocus = GetFocus();
137 SetFocus(nullptr);
138 }
139 break;
140 }
141
142 return HostWindow::HandleMessage(hwnd, message, wparam, lparam);
143 }
flutter::HostWindow::HandleMessage
virtual LRESULT HandleMessage(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
Definition: host_window.cc:382
message
Win32Message message
Definition: keyboard_unittests.cc:137

References flutter::HostWindow::HandleMessage(), and message.

## ◆ UpdatePosition()

void flutter::HostWindowTooltip::UpdatePosition | ( |  | ) |

Definition at line 85 of file host_window_tooltip.cc.

85 {
86 RECT parent_client_rect;
87 GetClientRect(parent_, &parent_client_rect);
88
89 // Convert top-left and bottom-right points to screen coordinates.
90 POINT parent_top_left = {parent_client_rect.left, parent_client_rect.top};
91 POINT parent_bottom_right = {parent_client_rect.right,
92 parent_client_rect.bottom};
93
94 ClientToScreen(parent_, &parent_top_left);
95 ClientToScreen(parent_, &parent_bottom_right);
96
97 // Get monitor from HWND and usable work area.
98 HMONITOR monitor = MonitorFromWindow(parent_, MONITOR_DEFAULTTONEAREST);
99 WindowRect work_area = GetWorkArea();
100
101 IsolateScope scope(isolate_);
102 auto rect = get_position_callback_(
103 WindowSize{width_, height_},
104 WindowRect{parent_top_left.x, parent_top_left.y,
105 parent_bottom_right.x - parent_top_left.x,
106 parent_bottom_right.y - parent_top_left.y},
107 work_area);
108 SetWindowPos(window_handle_, nullptr, rect->left, rect->top, rect->width,
109 rect->height, SWP_NOACTIVATE | SWP_NOOWNERZORDER);
110 free(rect);
111
112 // The positioner constrained the dimensions more than current size, apply
113 // positioner constraints.
114 if (rect->width < width_ || rect->height < height_) {
115 auto metrics_event = view_controller_->view()->CreateWindowMetricsEvent();
116 view_controller_->engine()->SendWindowMetricsEvent(metrics_event);
117 }
118 }
flutter::HostWindow::view_controller_
std::unique_ptr< FlutterWindowsViewController > view_controller_
Definition: host_window.h:217

References flutter::HostWindow::view_controller_, and flutter::HostWindow::window_handle_.

Referenced by InternalFlutterWindows_WindowManager_UpdateTooltipPosition().

The documentation for this class was generated from the following files:

- shell/platform/windows/host_window_tooltip.h
- shell/platform/windows/host_window_tooltip.cc