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