LadybirdWebViewWindow.mm 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) 2024, Tim Flynn <trflynn89@ladybird.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #import <Interface/LadybirdWebView.h>
  7. #import <Interface/LadybirdWebViewWindow.h>
  8. #if !__has_feature(objc_arc)
  9. # error "This project requires ARC"
  10. #endif
  11. @interface LadybirdWebViewWindow ()
  12. @end
  13. @implementation LadybirdWebViewWindow
  14. - (instancetype)initWithWebView:(LadybirdWebView*)web_view
  15. windowRect:(NSRect)window_rect
  16. {
  17. static constexpr auto style_mask = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable;
  18. self = [super initWithContentRect:window_rect
  19. styleMask:style_mask
  20. backing:NSBackingStoreBuffered
  21. defer:NO];
  22. if (self) {
  23. self.web_view = web_view;
  24. if (self.web_view == nil)
  25. self.web_view = [[LadybirdWebView alloc] init:nil];
  26. [self.web_view setClipsToBounds:YES];
  27. }
  28. return self;
  29. }
  30. #pragma mark - NSWindow
  31. - (void)setIsVisible:(BOOL)flag
  32. {
  33. [self.web_view handleVisibility:flag];
  34. [super setIsVisible:flag];
  35. }
  36. - (void)setIsMiniaturized:(BOOL)flag
  37. {
  38. [self.web_view handleVisibility:!flag];
  39. [super setIsMiniaturized:flag];
  40. }
  41. @end