Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
window_manager.h File Reference
#include <windows.h>
#include <functional>
#include <optional>
#include <unordered_map>
#include <vector>
#include "flutter/shell/platform/common/public/flutter_export.h"
#include "flutter/fml/macros.h"
#include "flutter/shell/platform/common/isolate_scope.h"
#include "flutter/shell/platform/embedder/embedder.h"

Go to the source code of this file.

Classes

struct  flutter::WindowSizeRequest
 
struct  flutter::WindowConstraints
 
struct  flutter::WindowRect
 
struct  flutter::WindowSize
 
struct  flutter::RegularWindowCreationRequest
 
struct  flutter::DialogWindowCreationRequest
 
struct  flutter::TooltipWindowCreationRequest
 
struct  flutter::PopupWindowCreationRequest
 
struct  flutter::WindowsMessage
 
struct  flutter::WindowingInitRequest
 
struct  flutter::ActualWindowSize
 
struct  flutter::FullscreenRequest
 
class  flutter::WindowManager
 

Namespaces

namespace  flutter
 

Typedefs

typedef WindowRect *(* flutter::GetWindowPositionCallback) (const WindowSize &child_size, const WindowRect &parent_rect, const WindowRect &output_rect)
 

Functions

FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_Initialize (int64_t engine_id, const flutter::WindowingInitRequest *request)
 
FLUTTER_EXPORT FlutterViewId InternalFlutterWindows_WindowManager_CreateRegularWindow (int64_t engine_id, const flutter::RegularWindowCreationRequest *request)
 
FLUTTER_EXPORT FlutterViewId InternalFlutterWindows_WindowManager_CreateDialogWindow (int64_t engine_id, const flutter::DialogWindowCreationRequest *request)
 
FLUTTER_EXPORT FlutterViewId InternalFlutterWindows_WindowManager_CreateTooltipWindow (int64_t engine_id, const flutter::TooltipWindowCreationRequest *request)
 
FLUTTER_EXPORT FlutterViewId InternalFlutterWindows_WindowManager_CreatePopupWindow (int64_t engine_id, const flutter::PopupWindowCreationRequest *request)
 
FLUTTER_EXPORT HWND InternalFlutterWindows_WindowManager_GetTopLevelWindowHandle (int64_t engine_id, FlutterViewId view_id)
 
FLUTTER_EXPORT flutter::ActualWindowSize InternalFlutterWindows_WindowManager_GetWindowContentSize (HWND hwnd)
 
FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_SetWindowSize (HWND hwnd, const flutter::WindowSizeRequest *size)
 
FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_SetWindowConstraints (HWND hwnd, const flutter::WindowConstraints *constraints)
 
FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_SetFullscreen (HWND hwnd, const flutter::FullscreenRequest *request)
 
FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_OnDestroyWindow (HWND hwnd)
 
FLUTTER_EXPORT bool InternalFlutterWindows_WindowManager_GetFullscreen (HWND hwnd)
 
FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_UpdateTooltipPosition (HWND hwnd)
 
FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_UpdatePopupPosition (HWND hwnd)
 

Function Documentation

◆ InternalFlutterWindows_WindowManager_CreateDialogWindow()

FLUTTER_EXPORT FlutterViewId InternalFlutterWindows_WindowManager_CreateDialogWindow ( int64_t  engine_id,
const flutter::DialogWindowCreationRequest request 
)

◆ InternalFlutterWindows_WindowManager_CreatePopupWindow()

FLUTTER_EXPORT FlutterViewId InternalFlutterWindows_WindowManager_CreatePopupWindow ( int64_t  engine_id,
const flutter::PopupWindowCreationRequest request 
)

◆ InternalFlutterWindows_WindowManager_CreateRegularWindow()

◆ InternalFlutterWindows_WindowManager_CreateTooltipWindow()

FLUTTER_EXPORT FlutterViewId InternalFlutterWindows_WindowManager_CreateTooltipWindow ( int64_t  engine_id,
const flutter::TooltipWindowCreationRequest request 
)

◆ InternalFlutterWindows_WindowManager_GetFullscreen()

FLUTTER_EXPORT bool InternalFlutterWindows_WindowManager_GetFullscreen ( HWND  hwnd)

Definition at line 259 of file window_manager.cc.

259 {
261 if (window) {
262 return window->GetFullscreen();
263 }
264
265 return false;
266}
static HostWindow * GetThisFromHandle(HWND hwnd)
GLFWwindow * window
Definition main.cc:60

References flutter::HostWindow::GetThisFromHandle(), and window.

Referenced by flutter::testing::TEST_F(), flutter::testing::TEST_F(), and flutter::testing::TEST_F().

◆ InternalFlutterWindows_WindowManager_GetTopLevelWindowHandle()

FLUTTER_EXPORT HWND InternalFlutterWindows_WindowManager_GetTopLevelWindowHandle ( int64_t  engine_id,
FlutterViewId  view_id 
)

◆ InternalFlutterWindows_WindowManager_GetWindowContentSize()

◆ InternalFlutterWindows_WindowManager_Initialize()

FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_Initialize ( int64_t  engine_id,
const flutter::WindowingInitRequest request 
)

Definition at line 147 of file window_manager.cc.

149 {
152 engine->window_manager()->Initialize(request);
153}

References engine, and flutter::FlutterWindowsEngine::GetEngineForId().

Referenced by flutter::testing::TEST_F().

◆ InternalFlutterWindows_WindowManager_OnDestroyWindow()

FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_OnDestroyWindow ( HWND  hwnd)

Definition at line 217 of file window_manager.cc.

217 {
219 HWND flutter_view_handle = nullptr;
220 if (window) {
221 // First reparent the FlutterView to null parent. Otherwise destroying
222 // the window HWND will immediately destroy the FlutterView HWND as well,
223 // which will cause crash when raster thread tries to reallocate surface.
224 // The FlutterView may only be destroyed safely when
225 // FlutterWindowsEngine::RemoveView finishes.
226 flutter_view_handle = window->GetFlutterViewWindowHandle();
227 ShowWindow(flutter_view_handle, SW_HIDE);
228 SetParent(flutter_view_handle, nullptr);
229 }
230 DestroyWindow(hwnd);
231 if (flutter_view_handle) {
232 // Now the flutter view HWND can be destroyed safely.
233 DestroyWindow(flutter_view_handle);
234 }
235}

References flutter::HostWindow::GetThisFromHandle(), and window.

Referenced by flutter::WindowManager::OnEngineShutdown().

◆ InternalFlutterWindows_WindowManager_SetFullscreen()

FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_SetFullscreen ( HWND  hwnd,
const flutter::FullscreenRequest request 
)

Definition at line 246 of file window_manager.cc.

248 {
250 const std::optional<FlutterEngineDisplayId> display_id =
251 request->has_display_id
252 ? std::optional<FlutterEngineDisplayId>(request->display_id)
253 : std::nullopt;
254 if (window) {
255 window->SetFullscreen(request->fullscreen, display_id);
256 }
257}
Definition ref_ptr.h:261
FlutterEngineDisplayId display_id

References flutter::FullscreenRequest::display_id, flutter::FullscreenRequest::fullscreen, flutter::HostWindow::GetThisFromHandle(), flutter::FullscreenRequest::has_display_id, and window.

Referenced by flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), and flutter::testing::TEST_F().

◆ InternalFlutterWindows_WindowManager_SetWindowConstraints()

FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_SetWindowConstraints ( HWND  hwnd,
const flutter::WindowConstraints constraints 
)

Definition at line 237 of file window_manager.cc.

239 {
241 if (window) {
242 window->SetConstraints(*constraints);
243 }
244}

References flutter::HostWindow::GetThisFromHandle(), and window.

Referenced by flutter::testing::TEST_F(), flutter::testing::TEST_F(), and flutter::testing::TEST_F().

◆ InternalFlutterWindows_WindowManager_SetWindowSize()

FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_SetWindowSize ( HWND  hwnd,
const flutter::WindowSizeRequest size 
)

Definition at line 208 of file window_manager.cc.

210 {
212 if (window) {
213 window->SetContentSize(*size);
214 }
215}

References flutter::HostWindow::GetThisFromHandle(), and window.

Referenced by flutter::testing::TEST_F(), and flutter::testing::TEST_F().

◆ InternalFlutterWindows_WindowManager_UpdatePopupPosition()

FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_UpdatePopupPosition ( HWND  hwnd)

◆ InternalFlutterWindows_WindowManager_UpdateTooltipPosition()

FLUTTER_EXPORT void InternalFlutterWindows_WindowManager_UpdateTooltipPosition ( HWND  hwnd)