19 get_position_callback_(get_position_callback),
22 view_alive_(
std::make_shared<int>(0)) {
25 auto const initial_width =
27 auto const initial_height =
32 .window_style = WS_POPUP,
33 .extended_window_style = WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW,
34 .box_constraints = constraints,
35 .initial_window_rect = {{0, 0}, {initial_width, initial_height}},
37 .owner_window = parent,
38 .nCmdShow = SW_SHOWNOACTIVATE,
39 .sizing_delegate =
this,
40 .is_sized_to_content =
true});
67 WindowRect work_area = {0, 0, kDefaultWorkAreaSize, kDefaultWorkAreaSize};
83 RECT parent_client_rect;
84 GetClientRect(parent_, &parent_client_rect);
87 POINT parent_top_left = {parent_client_rect.left, parent_client_rect.top};
88 POINT parent_bottom_right = {parent_client_rect.right,
89 parent_client_rect.bottom};
91 ClientToScreen(parent_, &parent_top_left);
92 ClientToScreen(parent_, &parent_bottom_right);
95 HMONITOR monitor = MonitorFromWindow(parent_, MONITOR_DEFAULTTONEAREST);
103 std::unique_ptr<
WindowRect,
decltype(&free)> rect(
104 get_position_callback_(
106 WindowRect{parent_top_left.x, parent_top_left.y,
107 parent_bottom_right.x - parent_top_left.x,
108 parent_bottom_right.y - parent_top_left.y},
111 SetWindowPos(
window_handle_, HWND_TOP, rect->left, rect->top, rect->width,
112 rect->height, SWP_NOACTIVATE | SWP_NOOWNERZORDER);
116 if (rect->width < width_ || rect->height < height_) {