fix: fullscreen crashing with no roundedCorners and no frame (#39794)

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
trop[bot]
2023-09-11 14:16:26 +02:00
committed by GitHub
parent 7a3d7b5c95
commit 2e8177c839
3 changed files with 9 additions and 6 deletions

View File

@@ -690,9 +690,6 @@ void NativeWindowMac::DetachChildren() {
}
void NativeWindowMac::SetFullScreen(bool fullscreen) {
if (!has_frame() && !HasStyleMask(NSWindowStyleMaskTitled))
return;
// [NSWindow -toggleFullScreen] is an asynchronous operation, which means
// that it's possible to call it while a fullscreen transition is currently
// in process. This can create weird behavior (incl. phantom windows),
@@ -725,7 +722,8 @@ void NativeWindowMac::SetFullScreen(bool fullscreen) {
? FullScreenTransitionState::ENTERING
: FullScreenTransitionState::EXITING;
[window_ toggleFullScreenMode:nil];
if (![window_ toggleFullScreenMode:nil])
fullscreen_transition_state_ = FullScreenTransitionState::NONE;
}
bool NativeWindowMac::IsFullscreen() const {

View File

@@ -43,7 +43,7 @@ class ScopedDisableResize {
- (electron::NativeWindowMac*)shell;
- (id)accessibilityFocusedUIElement;
- (NSRect)originalContentRectForFrameRect:(NSRect)frameRect;
- (void)toggleFullScreenMode:(id)sender;
- (BOOL)toggleFullScreenMode:(id)sender;
- (NSImage*)_cornerMask;
@end

View File

@@ -334,7 +334,10 @@ void SwizzleSwipeWithEvent(NSView* view, SEL swiz_selector) {
}
}
- (void)toggleFullScreenMode:(id)sender {
- (BOOL)toggleFullScreenMode:(id)sender {
if (!shell_->has_frame() && !shell_->HasStyleMask(NSWindowStyleMaskTitled))
return NO;
bool is_simple_fs = shell_->IsSimpleFullScreen();
bool always_simple_fs = shell_->always_simple_fullscreen();
@@ -363,6 +366,8 @@ void SwizzleSwipeWithEvent(NSView* view, SEL swiz_selector) {
bool maximizable = shell_->IsMaximizable();
shell_->SetMaximizable(maximizable);
}
return YES;
}
- (void)performMiniaturize:(id)sender {