diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index b7b8824ba..c223e6c4a 100755 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -138,6 +138,11 @@ var CPScrollDestinationNone = 0, return _autocompleteMenu; } +- (void)_complete:(_CPAutocompleteMenu)anAutocompleteMenu +{ + [self _autocompleteWithEvent:nil]; +} + - (void)_autocompleteWithEvent:(CPEvent)anEvent { if (![self _inputElement].value && (![_autocompleteMenu contentArray] || ![self hasThemeState:CPThemeStateAutocompleting])) @@ -647,10 +652,13 @@ var CPScrollDestinationNone = 0, if (CPTokenFieldInputOwner && CPTokenFieldInputOwner._preventResign) return false; - if (!CPTokenFieldInputResigning && !CPTokenFieldFocusInput) + if (!CPTokenFieldInputResigning && [[CPTokenFieldInputOwner window] isKeyWindow]) { - [[CPTokenFieldInputOwner window] makeFirstResponder:nil]; - return; + // If we lost focus somehow but we're not resigning and we're still in the key window, we'll need to take it back. + window.setTimeout(function() + { + CPTokenFieldDOMInputElement.focus(); + }, 0.0); } CPTokenFieldHandleBlur(anEvent, CPTokenFieldDOMInputElement); diff --git a/AppKit/_CPAutocompleteMenu.j b/AppKit/_CPAutocompleteMenu.j index 78d1be533..f0cbc3fe0 100644 --- a/AppKit/_CPAutocompleteMenu.j +++ b/AppKit/_CPAutocompleteMenu.j @@ -73,6 +73,8 @@ var _CPAutocompleteMenuMaximumHeight = 307; [tableView setDataSource:self]; [tableView setDelegate:self]; + [tableView setTarget:self]; + [tableView setAction:@selector(complete:)]; [tableView setAllowsMultipleSelection:NO]; [tableView setHeaderView:nil]; [tableView setCornerView:nil]; @@ -251,6 +253,11 @@ var _CPAutocompleteMenuMaximumHeight = 307; return [contentArray objectAtIndex:row]; } +- (@action)complete:(id)sender +{ + [textField _complete:self]; +} + @end