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