From 019b493f363302d05fa99e719da89c556e4b5c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20C=C5=93ur?= Date: Sun, 3 Feb 2019 12:20:43 +0800 Subject: [PATCH 1/2] Fix 'modalDelegate:' is deprecated to avoid contextInfo leaks. --- macosx/AboutWindowController.mm | 2 +- macosx/BlocklistDownloaderViewController.mm | 6 ++---- macosx/CreatorWindowController.mm | 1 - macosx/GroupsPrefsController.mm | 4 ++-- macosx/StatsWindowController.mm | 2 -- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/macosx/AboutWindowController.mm b/macosx/AboutWindowController.mm index b69aec1ab..d56040aec 100644 --- a/macosx/AboutWindowController.mm +++ b/macosx/AboutWindowController.mm @@ -81,7 +81,7 @@ AboutWindowController* fAboutBoxInstance = nil; - (IBAction)hideLicense:(id)sender { [self.fLicenseSheet orderOut:nil]; - [NSApp endSheet:self.fLicenseSheet]; + [self.window endSheet:self.fLicenseSheet]; } @end diff --git a/macosx/BlocklistDownloaderViewController.mm b/macosx/BlocklistDownloaderViewController.mm index 3d618b12a..181fa03eb 100644 --- a/macosx/BlocklistDownloaderViewController.mm +++ b/macosx/BlocklistDownloaderViewController.mm @@ -90,7 +90,7 @@ BlocklistDownloaderViewController* fBLViewController = nil; - (void)setFinished { - [NSApp endSheet:self.fStatusWindow]; + [self.fPrefsController.window endSheet:self.fStatusWindow]; [self.fStatusWindow orderOut:self]; fBLViewController = nil; @@ -98,7 +98,7 @@ BlocklistDownloaderViewController* fBLViewController = nil; - (void)setFailed:(NSString*)error { - [NSApp endSheet:self.fStatusWindow]; + [self.fPrefsController.window endSheet:self.fStatusWindow]; [self.fStatusWindow orderOut:self]; NSAlert* alert = [[NSAlert alloc] init]; @@ -109,8 +109,6 @@ BlocklistDownloaderViewController* fBLViewController = nil; alert.informativeText = error; [alert beginSheetModalForWindow:self.fPrefsController.window completionHandler:^(NSModalResponse returnCode) { - [alert.window orderOut:self]; - fBLViewController = nil; }]; } diff --git a/macosx/CreatorWindowController.mm b/macosx/CreatorWindowController.mm index 4bd47f21e..acd191084 100644 --- a/macosx/CreatorWindowController.mm +++ b/macosx/CreatorWindowController.mm @@ -687,7 +687,6 @@ NSMutableSet* creatorWindowControllerSet = nil; alert.informativeText = [NSString stringWithFormat:@"%s (%d)", error->message, error->code]; [alert beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse returnCode) { - [alert.window orderOut:nil]; [self.window close]; }]; tr_error_free(error); diff --git a/macosx/GroupsPrefsController.mm b/macosx/GroupsPrefsController.mm index 3aec4e2a4..7eeb7c613 100644 --- a/macosx/GroupsPrefsController.mm +++ b/macosx/GroupsPrefsController.mm @@ -296,7 +296,7 @@ - (IBAction)cancelRules:(id)sender { [self.groupRulesSheetWindow orderOut:nil]; - [NSApp endSheet:self.groupRulesSheetWindow]; + [self.fTableView.window endSheet:self.groupRulesSheetWindow]; NSInteger index = [GroupsController.groups indexForRow:self.fTableView.selectedRow]; if (![GroupsController.groups autoAssignRulesForIndex:index]) @@ -310,7 +310,7 @@ - (IBAction)saveRules:(id)sender { [self.groupRulesSheetWindow orderOut:nil]; - [NSApp endSheet:self.groupRulesSheetWindow]; + [self.fTableView.window endSheet:self.groupRulesSheetWindow]; NSInteger index = [GroupsController.groups indexForRow:self.fTableView.selectedRow]; [GroupsController.groups setUsesAutoAssignRules:YES forIndex:index]; diff --git a/macosx/StatsWindowController.mm b/macosx/StatsWindowController.mm index 268e61ea3..462b1166b 100644 --- a/macosx/StatsWindowController.mm +++ b/macosx/StatsWindowController.mm @@ -159,8 +159,6 @@ tr_session* fLib = NULL; alert.showsSuppressionButton = YES; [alert beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse returnCode) { - [alert.window orderOut:nil]; - if (alert.suppressionButton.state == NSControlStateValueOn) { [NSUserDefaults.standardUserDefaults setBool:NO forKey:@"WarningResetStats"]; From 0d948886f6d01af4c63c2ab7508498e59cd6b683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C5=93ur?= Date: Wed, 12 Oct 2022 18:56:30 +0800 Subject: [PATCH 2/2] orderOut: isn't needed with beginSheet:/endSheet: --- macosx/AboutWindowController.mm | 1 - macosx/BlocklistDownloaderViewController.mm | 2 -- macosx/FileRenameSheetController.mm | 5 +++-- macosx/GroupsPrefsController.mm | 2 -- macosx/URLSheetWindowController.mm | 2 -- 5 files changed, 3 insertions(+), 9 deletions(-) diff --git a/macosx/AboutWindowController.mm b/macosx/AboutWindowController.mm index d56040aec..5af7d7e40 100644 --- a/macosx/AboutWindowController.mm +++ b/macosx/AboutWindowController.mm @@ -80,7 +80,6 @@ AboutWindowController* fAboutBoxInstance = nil; - (IBAction)hideLicense:(id)sender { - [self.fLicenseSheet orderOut:nil]; [self.window endSheet:self.fLicenseSheet]; } diff --git a/macosx/BlocklistDownloaderViewController.mm b/macosx/BlocklistDownloaderViewController.mm index 181fa03eb..b3c51fffa 100644 --- a/macosx/BlocklistDownloaderViewController.mm +++ b/macosx/BlocklistDownloaderViewController.mm @@ -91,7 +91,6 @@ BlocklistDownloaderViewController* fBLViewController = nil; - (void)setFinished { [self.fPrefsController.window endSheet:self.fStatusWindow]; - [self.fStatusWindow orderOut:self]; fBLViewController = nil; } @@ -99,7 +98,6 @@ BlocklistDownloaderViewController* fBLViewController = nil; - (void)setFailed:(NSString*)error { [self.fPrefsController.window endSheet:self.fStatusWindow]; - [self.fStatusWindow orderOut:self]; NSAlert* alert = [[NSAlert alloc] init]; [alert addButtonWithTitle:NSLocalizedString(@"OK", "Blocklist -> button")]; diff --git a/macosx/FileRenameSheetController.mm b/macosx/FileRenameSheetController.mm index ec00f0b87..2e95253c2 100644 --- a/macosx/FileRenameSheetController.mm +++ b/macosx/FileRenameSheetController.mm @@ -58,10 +58,11 @@ typedef void (^CompletionBlock)(BOOL); modalForWindow:(NSWindow*)window completionHandler:(void (^)(BOOL))completionHandler { + // we capture renamer strongly to avoid it being deallocated before completionHandler + __block FileRenameSheetController* strongRenamer = renamer; [window beginSheet:renamer.window completionHandler:^(NSModalResponse returnCode) { completionHandler(returnCode == NSModalResponseOK); - - [renamer.window orderOut:self]; + strongRenamer = nil; }]; } diff --git a/macosx/GroupsPrefsController.mm b/macosx/GroupsPrefsController.mm index 7eeb7c613..38febed35 100644 --- a/macosx/GroupsPrefsController.mm +++ b/macosx/GroupsPrefsController.mm @@ -295,7 +295,6 @@ - (IBAction)cancelRules:(id)sender { - [self.groupRulesSheetWindow orderOut:nil]; [self.fTableView.window endSheet:self.groupRulesSheetWindow]; NSInteger index = [GroupsController.groups indexForRow:self.fTableView.selectedRow]; @@ -309,7 +308,6 @@ - (IBAction)saveRules:(id)sender { - [self.groupRulesSheetWindow orderOut:nil]; [self.fTableView.window endSheet:self.groupRulesSheetWindow]; NSInteger index = [GroupsController.groups indexForRow:self.fTableView.selectedRow]; diff --git a/macosx/URLSheetWindowController.mm b/macosx/URLSheetWindowController.mm index 3043e5503..91fa8170c 100644 --- a/macosx/URLSheetWindowController.mm +++ b/macosx/URLSheetWindowController.mm @@ -68,13 +68,11 @@ NSString* urlString = nil; - (void)openURLEndSheet:(id)sender { - [self.window orderOut:sender]; [NSApp endSheet:self.window returnCode:1]; } - (void)openURLCancelEndSheet:(id)sender { - [self.window orderOut:sender]; [NSApp endSheet:self.window returnCode:0]; }