Changeset 273

Show
Ignore:
Timestamp:
17-04-2008 17:41:44 (5 years ago)
Author:
jppavao
Message:

Fixed a bug that prevented MSN JIDs from being inserted correctly in any sheet that takes JID input from the user. Fixes #240.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/lilypad/Sources/LPJIDEntryView.m

    r271 r273  
    192192                 
    193193                [m_servicePopUp selectItemAtIndex:[m_servicePopUp indexOfItemWithRepresentedObject:m_selectedServiceHostname]]; 
    194                 [self p_synchronizeJIDTabViewWithSelectedService]; 
    195         } 
     194        } 
     195         
     196        // Always synchronize the views as the tab pane associated with a given transport may have changed if we 
     197        // got registered with that transport in the meanwhile. 
     198        [self p_synchronizeJIDTabViewWithSelectedService]; 
    196199} 
    197200 
     
    342345        NSTextField *prevEntryField = [self JIDEntryTextField]; 
    343346        NSString *enteredText = [prevEntryField stringValue]; 
    344          
    345         if ([enteredText rangeOfString:@"@"].location != NSNotFound) { 
    346                 NSString *jidUsername = [enteredText JIDUsernameComponent]; 
    347                 NSString *jidHostname = [enteredText JIDHostnameComponent]; 
    348                 NSString *updatedEnteredText = enteredText; 
    349                  
     347        NSString *updatedEnteredText = enteredText; 
     348         
     349        NSString *jidUsername = [enteredText JIDUsernameComponent]; 
     350        NSString *jidHostname = [enteredText JIDHostnameComponent]; 
     351         
     352        if ([enteredText rangeOfString:@"@"].location != NSNotFound && 
     353                ![[[m_JIDTabView selectedTabViewItem] identifier] isEqualToString:@"transport"]) 
     354        { 
    350355                NSInteger indexOfEnteredHost = [m_servicePopUp indexOfItemWithRepresentedObject:jidHostname]; 
    351356                 
     
    357362                        [self setSelectedServiceHostname:@""]; 
    358363                } 
    359                  
    360                 // -setSelectedServiceHostname: may have changed the active text entry field 
    361                 NSTextField *curEntryField = [self JIDEntryTextField]; 
    362                  
    363                 if (updatedEnteredText != enteredText || prevEntryField != curEntryField) { 
    364                         [curEntryField setStringValue:updatedEnteredText]; 
    365                 } 
    366                 if (prevEntryField != curEntryField) { 
    367                         // Move the text caret to the end of the entered text 
    368                         [[curEntryField currentEditor] setSelectedRange:NSMakeRange([updatedEnteredText length], 0)]; 
    369                 } 
     364        } 
     365         
     366        if ([[[m_JIDTabView selectedTabViewItem] identifier] isEqualToString:@"transport"]) { 
     367                NSArray *realJIDComponents = [(jidUsername ? jidUsername : jidHostname) componentsSeparatedByString:@"%"]; 
     368                 
     369                if ([realJIDComponents count] >= 2) { 
     370                        updatedEnteredText = [realJIDComponents componentsJoinedByString:@"@"]; 
     371                } 
     372        } 
     373         
     374        // -setSelectedServiceHostname: may have changed the active text entry field 
     375        NSTextField *curEntryField = [self JIDEntryTextField]; 
     376         
     377        if (updatedEnteredText != enteredText || prevEntryField != curEntryField) { 
     378                [curEntryField setStringValue:updatedEnteredText]; 
     379        } 
     380        if (prevEntryField != curEntryField) { 
     381                // Move the text caret to the end of the entered text 
     382                [[curEntryField currentEditor] setSelectedRange:NSMakeRange([updatedEnteredText length], 0)]; 
    370383        } 
    371384