adium 2213:e94e761383c1: Avoid infinite-looping when a meta cont...

commits at adium.im commits at adium.im
Sun May 17 01:20:09 UTC 2009


details:	http://hg.adium.im/adium/rev/e94e761383c1
revision:	2213:e94e761383c1
author:		Zachary West <zacw at adium.im>
date:		Sat May 16 21:19:54 2009 -0400

Avoid infinite-looping when a meta contact's contact on a particular account doesn't exist.

diffstat:

 Source/AIAdvancedInspectorPane.h |   2 ++
 Source/AIAdvancedInspectorPane.m |  12 ++++++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diffs (42 lines):

diff -r 1fe21d79ded7 -r e94e761383c1 Source/AIAdvancedInspectorPane.h
--- a/Source/AIAdvancedInspectorPane.h	Sat May 16 20:56:30 2009 -0400
+++ b/Source/AIAdvancedInspectorPane.h	Sat May 16 21:19:54 2009 -0400
@@ -32,6 +32,8 @@
 	IBOutlet	NSButton						*checkBox_alwaysShow;
 	IBOutlet	NSButton						*checkBox_autoJoin;
 	
+	BOOL										switchingContacts;
+	
 	AIAccountMenu								*accountMenu;
 	AIContactMenu								*contactMenu;
 	
diff -r 1fe21d79ded7 -r e94e761383c1 Source/AIAdvancedInspectorPane.m
--- a/Source/AIAdvancedInspectorPane.m	Sat May 16 20:56:30 2009 -0400
+++ b/Source/AIAdvancedInspectorPane.m	Sat May 16 21:19:54 2009 -0400
@@ -149,6 +149,9 @@
 #pragma mark Menus
 -(void)reloadPopup
 {	
+	if (switchingContacts)
+		return;
+	
 	[accountMenu rebuildMenu];
 	
 	[button_addGroup setMenu:[adium.contactController groupMenuWithTarget:self]];
@@ -205,9 +208,14 @@
 
 - (void)contactMenu:(AIContactMenu *)inContactMenu didSelectContact:(AIListContact *)inContact
 {
+	// Avoid triggering a full reload when this ends up creating a new contact.
+	switchingContacts = YES;
+	
 	currentSelectedContact = [adium.contactController contactWithService:inContact.service
-																 account:currentSelectedAccount
-																	 UID:inContact.UID];
+																  account:currentSelectedAccount
+																	  UID:inContact.UID];
+	
+	switchingContacts = NO;
 	
 	// Update the groups.
 	[tableView_groups reloadData];




More information about the commits mailing list