adium 5051:565d34e57d54: Break a couple of retain cycles in the ...
commits at adium.im
commits at adium.im
Wed Sep 12 10:05:03 UTC 2012
details: http://hg.adium.im/adium/rev/565d34e57d54
revision: 5051:565d34e57d54
branch: (none)
author: Thijs Alkemade <thijsalkemade at gmail.com>
date: Wed Sep 12 12:04:11 2012 +0200
Break a couple of retain cycles in the handling of toolbar items, their menus and their views.
diffs (78 lines):
diff -r d474b6ea9184 -r 565d34e57d54 Plugins/Secure Messaging/ESSecureMessagingPlugin.m
--- a/Plugins/Secure Messaging/ESSecureMessagingPlugin.m Wed Sep 12 01:36:08 2012 +0200
+++ b/Plugins/Secure Messaging/ESSecureMessagingPlugin.m Wed Sep 12 12:04:11 2012 +0200
@@ -200,7 +200,12 @@
{
NSToolbarItem *item = [[notification userInfo] objectForKey:@"item"];
if ([toolbarItems containsObject:item]) {
+
+ [[item view] setMenu:nil];
+ [[item view] setToolbarItem:nil];
[item setView:nil];
+ [item setMenuFormRepresentation:nil];
+
[toolbarItems removeObject:item];
[validatedItems removeObject:item];
diff -r d474b6ea9184 -r 565d34e57d54 Source/BGEmoticonMenuPlugin.m
--- a/Source/BGEmoticonMenuPlugin.m Wed Sep 12 01:36:08 2012 +0200
+++ b/Source/BGEmoticonMenuPlugin.m Wed Sep 12 12:04:11 2012 +0200
@@ -131,6 +131,8 @@
NSToolbarItem *item = [[notification userInfo] objectForKey:@"item"];
if ([[item itemIdentifier] isEqualToString:TOOLBAR_EMOTICON_IDENTIFIER]) {
[item setView:nil];
+ [[item view] setMenu:nil];
+ [item setView:nil];
[toolbarItems removeObject:item];
}
}
diff -r d474b6ea9184 -r 565d34e57d54 Source/ESUserIconHandlingPlugin.m
--- a/Source/ESUserIconHandlingPlugin.m Wed Sep 12 01:36:08 2012 +0200
+++ b/Source/ESUserIconHandlingPlugin.m Wed Sep 12 12:04:11 2012 +0200
@@ -235,7 +235,12 @@
{
NSToolbarItem *item = [[notification userInfo] objectForKey:@"item"];
if ([toolbarItems containsObject:item]) {
+
+ [[item view] setMenu:nil];
+ [[item view] setToolbarItem:nil];
[item setView:nil];
+ [item setMenuFormRepresentation:nil];
+
[toolbarItems removeObject:item];
[validatedItems removeObject:item];
diff -r d474b6ea9184 -r 565d34e57d54 Source/GBApplescriptFiltersPlugin.m
--- a/Source/GBApplescriptFiltersPlugin.m Wed Sep 12 01:36:08 2012 +0200
+++ b/Source/GBApplescriptFiltersPlugin.m Wed Sep 12 12:04:11 2012 +0200
@@ -102,8 +102,11 @@
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(toolbarWillAddItem:)
name:NSToolbarWillAddItemNotification
- object:nil];
-
+ object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self
+ selector:@selector(toolbarDidRemove:)
+ name:NSToolbarDidRemoveItemNotification
+ object:nil];
//Start building the script menu
scriptMenu = nil;
[self buildScriptMenu]; //this also sets the submenu for the menu item.
@@ -713,4 +716,16 @@
}
}
+- (void)toolbarDidRemove:(NSNotification *)notification
+{
+ NSToolbarItem *item = [[notification userInfo] objectForKey:@"item"];
+
+ if (!notification || ([[item itemIdentifier] isEqualToString:SCRIPT_IDENTIFIER])) {
+ [[item view] setMenu:nil];
+ [[item view] setToolbarItem:nil];
+ [item setView:nil];
+ [item setMenuFormRepresentation:nil];
+ }
+}
+
@end
More information about the commits
mailing list