adium/adium

Parents d474b6ea9184
Children de29b6d93baf
Break a couple of retain cycles in the handling of toolbar items, their menus and their views.
--- 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];
--- 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];
}
}
--- 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];
--- 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