Adium

Changeset 23026

Show
Ignore:
Timestamp:
04/03/2008 10:49:49 AM (8 months ago)
Author:
evands
Message:

Keep a reference to the authorization request window controller around so that we can properly handle being told to close it later. I believe this fixes #9482.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Plugins/Purple Service/adiumPurpleAccounts.m

    r21947 r23026  
    5858        if (message && strlen(message)) [infoDict setObject:[NSString stringWithUTF8String:message] forKey:@"Reason"]; 
    5959 
     60        //Note that CBPurpleAccount will retain ownership of this object to keep it around for us in case adiumPurpleAccountRequestClose() is called. 
    6061        return [accountLookup(account) authorizationRequestWithDict:infoDict];; 
    6162} 
  • trunk/Plugins/Purple Service/adiumPurpleRequest.m

    r22832 r23026  
    121121        requestController = [ESPurpleRequestWindowController showInputWindowWithDict:infoDict]; 
    122122         
    123         return (requestController ? requestController : [NSNull null])
     123        return requestController
    124124} 
    125125 
     
    136136                           (secondary ? secondary : "")); 
    137137         
    138         return [NSNull null]
     138        return nil
    139139} 
    140140 
     
    236236        } 
    237237 
    238         return (requestController ? requestController : [NSNull null])
     238        return requestController
    239239} 
    240240 
     
    323323        } 
    324324     
    325         return (requestController ? requestController : [NSNull null])
     325        return requestController
    326326} 
    327327 
     
    332332                                                                  void *user_data) 
    333333{ 
    334         id                                      requestController = nil; 
    335334        NSString                        *titleString = (title ? [NSString stringWithUTF8String:title] : nil); 
    336335         
     
    379378        } 
    380379         
    381         AILog(@"adiumPurpleRequestFile() returning %@",(requestController ? requestController : [NSNull null])); 
    382         return (requestController ? requestController : [NSNull null]); 
     380        return NULL; 
    383381} 
    384382 
  • trunk/Plugins/Purple Service/CBPurpleAccount.h

    r22996 r23026  
    126126- (void)removeContact:(AIListContact *)theContact; 
    127127 
    128 - (id)authorizationRequestWithDict:(NSDictionary*)dict; 
     128- (NSWindowController *)authorizationRequestWithDict:(NSDictionary*)dict; 
    129129 
    130130- (void)addChat:(AIChat *)chat; 
  • trunk/Plugins/Purple Service/CBPurpleAccount.m

    r22996 r23026  
    604604} 
    605605 
    606 - (id)authorizationRequestWithDict:(NSDictionary*)dict { 
    607         return [[[AIObject sharedAdiumInstance] contactController] showAuthorizationRequestWithDict:dict 
    608                                                                                                                                                                          forAccount:self]; 
     606- (NSWindowController *)authorizationRequestWithDict:(NSDictionary*)dict { 
     607        //We will release the returned window controller in -[self authorizationWindowController:authorizationWithDict:didAuthorize:] 
     608        return [[[[AIObject sharedAdiumInstance] contactController] showAuthorizationRequestWithDict:dict 
     609                                                                                                                                                                          forAccount:self] release]; 
    609610} 
    610611 
     
    620621                } 
    621622                 
     623                //libpurple will remove its reference to the handle for this request, which is inWindowController, in response to this callback invocation 
    622624                [purpleThread doAuthRequestCbValue:callback withUserDataValue:[[[infoDict objectForKey:@"userData"] retain] autorelease]]; 
    623625        } 
     626         
     627        /* Retained in -[self authorizationRequestWithDict:].  We kept it around before now in case libpurle wanted us to close it early, such as because the 
     628         * account disconnected. 
     629         */ 
     630        [inWindowController autorelease]; 
    624631} 
    625632