15 const BoxConstraints& constraints,
19 get_position_callback_(get_position_callback),
24 auto const initial_width =
25 static_cast<double>(constraints.smallest().width());
26 auto const initial_height =
27 static_cast<double>(constraints.smallest().height());
31 .window_style = WS_POPUP,
32 .extended_window_style = WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW,
33 .box_constraints = constraints,
34 .initial_window_rect = {{0, 0}, {initial_width, initial_height}},
36 .owner_window = parent,
37 .nCmdShow = SW_SHOWNOACTIVATE,
39 .is_sized_to_content =
true});
51 int32_t physical_height) {
55 WindowRect HostWindowPopup::GetWorkArea()
const {
56 constexpr int32_t kDefaultWorkAreaSize = 10000;
57 WindowRect work_area = {0, 0, kDefaultWorkAreaSize, kDefaultWorkAreaSize};
58 HMONITOR monitor = MonitorFromWindow(parent_, MONITOR_DEFAULTTONEAREST);
60 MONITORINFO monitor_info = {0};
61 monitor_info.cbSize =
sizeof(monitor_info);
62 if (GetMonitorInfo(monitor, &monitor_info)) {
63 work_area.
left = monitor_info.rcWork.left;
64 work_area.
top = monitor_info.rcWork.top;
65 work_area.
width = monitor_info.rcWork.right - monitor_info.rcWork.left;
66 work_area.
height = monitor_info.rcWork.bottom - monitor_info.rcWork.top;
73 RECT parent_client_rect;
74 GetClientRect(parent_, &parent_client_rect);
77 POINT parent_top_left = {parent_client_rect.left, parent_client_rect.top};
78 POINT parent_bottom_right = {parent_client_rect.right,
79 parent_client_rect.bottom};
81 ClientToScreen(parent_, &parent_top_left);
82 ClientToScreen(parent_, &parent_bottom_right);
85 HMONITOR monitor = MonitorFromWindow(parent_, MONITOR_DEFAULTTONEAREST);
93 std::unique_ptr<
WindowRect, decltype(&free)> rect(
94 get_position_callback_(
96 WindowRect{parent_top_left.x, parent_top_left.y,
97 parent_bottom_right.x - parent_top_left.x,
98 parent_bottom_right.y - parent_top_left.y},
101 SetWindowPos(
window_handle_, HWND_TOP, rect->left, rect->top, rect->width,
102 rect->height, SWP_NOACTIVATE | SWP_NOOWNERZORDER);
void InitializeFlutterView(HostWindowInitializationParams const ¶ms)
std::unique_ptr< FlutterWindowsViewController > view_controller_
FlutterWindowsViewSizingDelegate * AsSizingDelegate()
WindowRect *(* GetWindowPositionCallback)(const WindowSize &child_size, const WindowRect &parent_rect, const WindowRect &output_rect)
WindowArchetype archetype