Flutter macOS Embedder
FlutterWindowController.mm File Reference

Go to the source code of this file.

Classes

class  FlutterWindowOwner
 
category  NSWindow(FlutterWindowSizing)
 
class  FlutterPopupWindow
 
class  _FlutterRunLoopModeFixWindowDelegate
 

Functions

int64_t InternalFlutter_WindowController_CreateRegularWindow (int64_t engine_id, const FlutterWindowCreationRequest *request)
 
int64_t InternalFlutter_WindowController_CreateDialogWindow (int64_t engine_id, const FlutterWindowCreationRequest *request)
 
int64_t InternalFlutter_WindowController_CreateTooltipWindow (int64_t engine_id, const FlutterWindowCreationRequest *request)
 
int64_t InternalFlutter_WindowController_CreatePopupWindow (int64_t engine_id, const FlutterWindowCreationRequest *request)
 
void InternalFlutter_Window_Destroy (int64_t engine_id, void *window)
 
void * InternalFlutter_Window_GetHandle (int64_t engine_id, FlutterViewIdentifier view_id)
 
FlutterWindowSize InternalFlutter_Window_GetContentSize (void *window)
 
void InternalFlutter_Window_SetContentSize (void *window, const FlutterWindowSize *size)
 
FLUTTER_DARWIN_EXPORT void InternalFlutter_Window_SetConstraints (void *window, const FlutterWindowConstraints *constraints)
 
void InternalFlutter_Window_SetTitle (void *window, const char *title)
 
void InternalFlutter_Window_SetMaximized (void *window, bool maximized)
 
bool InternalFlutter_Window_IsMaximized (void *window)
 
void InternalFlutter_Window_Minimize (void *window)
 
void InternalFlutter_Window_Unminimize (void *window)
 
bool InternalFlutter_Window_IsMinimized (void *window)
 
void InternalFlutter_Window_SetFullScreen (void *window, bool fullScreen)
 
bool InternalFlutter_Window_IsFullScreen (void *window)
 
void InternalFlutter_Window_Activate (void *window)
 
char * InternalFlutter_Window_GetTitle (void *window)
 
bool InternalFlutter_Window_IsActivated (void *window)
 
void InternalFlutter_Window_UpdatePosition (void *window)
 
FlutterWindowOffset InternalFlutter_Window_GetOffsetInParent (void *window)
 

Function Documentation

◆ InternalFlutter_Window_Activate()

void InternalFlutter_Window_Activate ( void *  window)

Definition at line 686 of file FlutterWindowController.mm.

686  {
687  NSWindow* w = (__bridge NSWindow*)window;
688  [NSApplication.sharedApplication activateIgnoringOtherApps:YES];
689  [w makeKeyAndOrderFront:nil];
690 }

◆ InternalFlutter_Window_Destroy()

void InternalFlutter_Window_Destroy ( int64_t  engine_id,
void *  window 
)

Definition at line 603 of file FlutterWindowController.mm.

603  {
604  NSWindow* w = (__bridge NSWindow*)window;
605  FlutterEngine* engine = [FlutterEngine engineForIdentifier:engine_id];
606  [engine.windowController destroyWindow:w];
607 }

References FlutterWindowController::engine.

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

◆ InternalFlutter_Window_GetContentSize()

FlutterWindowSize InternalFlutter_Window_GetContentSize ( void *  window)

Definition at line 615 of file FlutterWindowController.mm.

615  {
616  NSWindow* w = (__bridge NSWindow*)window;
617  NSRect contentRect = [w contentRectForFrameRect:w.frame];
618  return {
619  .width = contentRect.size.width,
620  .height = contentRect.size.height,
621  };
622 }

References FlutterWindowSize::width.

◆ InternalFlutter_Window_GetHandle()

void* InternalFlutter_Window_GetHandle ( int64_t  engine_id,
FlutterViewIdentifier  view_id 
)

Definition at line 609 of file FlutterWindowController.mm.

609  {
610  FlutterEngine* engine = [FlutterEngine engineForIdentifier:engine_id];
611  FlutterViewController* controller = [engine viewControllerForIdentifier:view_id];
612  return (__bridge void*)controller.view.window;
613 }

References FlutterWindowController::engine.

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

◆ InternalFlutter_Window_GetOffsetInParent()

FlutterWindowOffset InternalFlutter_Window_GetOffsetInParent ( void *  window)

Definition at line 708 of file FlutterWindowController.mm.

708  {
709  NSWindow* w = (__bridge NSWindow*)window;
710  NSWindow* parent = w.parentWindow;
711  if (!parent) {
712  return {0, 0};
713  }
714  NSRect globalScreenFrame = ComputeGlobalScreenFrame();
715 
716  NSRect parentRect = [parent contentRectForFrameRect:parent.frame];
717  FlipRect(parentRect, globalScreenFrame);
718 
719  NSRect childRect = w.frame;
720  FlipRect(childRect, globalScreenFrame);
721 
722  return {
723  .x = childRect.origin.x - parentRect.origin.x,
724  .y = childRect.origin.y - parentRect.origin.y,
725  };
726 }

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

◆ InternalFlutter_Window_GetTitle()

char* InternalFlutter_Window_GetTitle ( void *  window)

Definition at line 692 of file FlutterWindowController.mm.

692  {
693  NSWindow* w = (__bridge NSWindow*)window;
694  return strdup(w.title.UTF8String);
695 }

◆ InternalFlutter_Window_IsActivated()

bool InternalFlutter_Window_IsActivated ( void *  window)

Definition at line 697 of file FlutterWindowController.mm.

697  {
698  NSWindow* w = (__bridge NSWindow*)window;
699  return w.isKeyWindow;
700 }

◆ InternalFlutter_Window_IsFullScreen()

bool InternalFlutter_Window_IsFullScreen ( void *  window)

Definition at line 681 of file FlutterWindowController.mm.

681  {
682  NSWindow* w = (__bridge NSWindow*)window;
683  return (w.styleMask & NSWindowStyleMaskFullScreen) != 0;
684 }

◆ InternalFlutter_Window_IsMaximized()

bool InternalFlutter_Window_IsMaximized ( void *  window)

Definition at line 651 of file FlutterWindowController.mm.

651  {
652  NSWindow* w = (__bridge NSWindow*)window;
653  return w.isZoomed;
654 }

◆ InternalFlutter_Window_IsMinimized()

bool InternalFlutter_Window_IsMinimized ( void *  window)

Definition at line 666 of file FlutterWindowController.mm.

666  {
667  NSWindow* w = (__bridge NSWindow*)window;
668  return w.isMiniaturized;
669 }

◆ InternalFlutter_Window_Minimize()

void InternalFlutter_Window_Minimize ( void *  window)

Definition at line 656 of file FlutterWindowController.mm.

656  {
657  NSWindow* w = (__bridge NSWindow*)window;
658  [w miniaturize:nil];
659 }

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

◆ InternalFlutter_Window_SetConstraints()

FLUTTER_DARWIN_EXPORT void InternalFlutter_Window_SetConstraints ( void *  window,
const FlutterWindowConstraints constraints 
)

Definition at line 630 of file FlutterWindowController.mm.

631  {
632  NSWindow* w = (__bridge NSWindow*)window;
633  FlutterWindowOwner* owner = (FlutterWindowOwner*)w.delegate;
634  [owner setConstraints:*constraints];
635 }

◆ InternalFlutter_Window_SetContentSize()

void InternalFlutter_Window_SetContentSize ( void *  window,
const FlutterWindowSize size 
)

Definition at line 624 of file FlutterWindowController.mm.

624  {
625  NSWindow* w = (__bridge NSWindow*)window;
626  [w flutterSetContentSize:*size];
627 }

◆ InternalFlutter_Window_SetFullScreen()

void InternalFlutter_Window_SetFullScreen ( void *  window,
bool  fullScreen 
)

Definition at line 671 of file FlutterWindowController.mm.

671  {
672  NSWindow* w = (__bridge NSWindow*)window;
673  bool isFullScreen = (w.styleMask & NSWindowStyleMaskFullScreen) != 0;
674  if (fullScreen && !isFullScreen) {
675  [w toggleFullScreen:nil];
676  } else if (!fullScreen && isFullScreen) {
677  [w toggleFullScreen:nil];
678  }
679 }

◆ InternalFlutter_Window_SetMaximized()

void InternalFlutter_Window_SetMaximized ( void *  window,
bool  maximized 
)

Definition at line 642 of file FlutterWindowController.mm.

642  {
643  NSWindow* w = (__bridge NSWindow*)window;
644  if (maximized & !w.isZoomed) {
645  [w zoom:nil];
646  } else if (!maximized && w.isZoomed) {
647  [w zoom:nil];
648  }
649 }

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

◆ InternalFlutter_Window_SetTitle()

void InternalFlutter_Window_SetTitle ( void *  window,
const char *  title 
)

Definition at line 637 of file FlutterWindowController.mm.

637  {
638  NSWindow* w = (__bridge NSWindow*)window;
639  w.title = [NSString stringWithUTF8String:title];
640 }

◆ InternalFlutter_Window_Unminimize()

void InternalFlutter_Window_Unminimize ( void *  window)

Definition at line 661 of file FlutterWindowController.mm.

661  {
662  NSWindow* w = (__bridge NSWindow*)window;
663  [w deminiaturize:nil];
664 }

◆ InternalFlutter_Window_UpdatePosition()

void InternalFlutter_Window_UpdatePosition ( void *  window)

Definition at line 702 of file FlutterWindowController.mm.

702  {
703  NSWindow* w = (__bridge NSWindow*)window;
704  FlutterWindowOwner* owner = (FlutterWindowOwner*)w.delegate;
705  [owner updatePosition];
706 }

◆ InternalFlutter_WindowController_CreateDialogWindow()

int64_t InternalFlutter_WindowController_CreateDialogWindow ( int64_t  engine_id,
const FlutterWindowCreationRequest request 
)

Definition at line 579 of file FlutterWindowController.mm.

581  {
582  FlutterEngine* engine = [FlutterEngine engineForIdentifier:engine_id];
583  [engine enableMultiView];
584  return [engine.windowController createDialogWindow:request];
585 }

References FlutterWindowController::engine.

◆ InternalFlutter_WindowController_CreatePopupWindow()

int64_t InternalFlutter_WindowController_CreatePopupWindow ( int64_t  engine_id,
const FlutterWindowCreationRequest request 
)

Definition at line 595 of file FlutterWindowController.mm.

597  {
598  FlutterEngine* engine = [FlutterEngine engineForIdentifier:engine_id];
599  [engine enableMultiView];
600  return [engine.windowController createPopupWindow:request];
601 }

References FlutterWindowController::engine.

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

◆ InternalFlutter_WindowController_CreateRegularWindow()

int64_t InternalFlutter_WindowController_CreateRegularWindow ( int64_t  engine_id,
const FlutterWindowCreationRequest request 
)

Definition at line 571 of file FlutterWindowController.mm.

573  {
574  FlutterEngine* engine = [FlutterEngine engineForIdentifier:engine_id];
575  [engine enableMultiView];
576  return [engine.windowController createRegularWindow:request];
577 }

References FlutterWindowController::engine.

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

◆ InternalFlutter_WindowController_CreateTooltipWindow()

int64_t InternalFlutter_WindowController_CreateTooltipWindow ( int64_t  engine_id,
const FlutterWindowCreationRequest request 
)

Definition at line 587 of file FlutterWindowController.mm.

589  {
590  FlutterEngine* engine = [FlutterEngine engineForIdentifier:engine_id];
591  [engine enableMultiView];
592  return [engine.windowController createTooltipWindow:request];
593 }

References FlutterWindowController::engine.

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