From 4fd99d2c52b377fc74ff047d7a019e390882c439 Mon Sep 17 00:00:00 2001 From: daboe01 Date: Sat, 14 Mar 2026 19:25:50 +0100 Subject: [PATCH] fixed: tokenfield CPControlTextDidBeginEditingNotification notification --- AppKit/CPTokenField.j | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 1de22bebd..71fcdde9a 100644 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -349,6 +349,12 @@ CPTokenFieldDeleteButtonType = 1; if (theBinding) [theBinding reverseSetValueFor:@"objectValue"]; + if (!_isEditing) + { + _isEditing = YES; + [self textDidBeginEditing:[CPNotification notificationWithName:CPControlTextDidBeginEditingNotification object:self userInfo:nil]]; + } + [self textDidChange:[CPNotification notificationWithName:CPControlTextDidChangeNotification object:self userInfo:nil]]; _shouldNotifyTarget = YES; @@ -498,6 +504,8 @@ CPTokenFieldDeleteButtonType = 1; [self _resignFirstKeyResponder]; + _isEditing = NO; + if (_shouldNotifyTarget) { _shouldNotifyTarget = NO; @@ -1032,6 +1040,16 @@ CPTokenFieldDeleteButtonType = 1; CPTokenFieldTextDidChangeValue = [self stringValue]; #endif + // Has to be enabled, and it also has to be editable or selectable. + if (![self isEnabled] || !([self isEditable] || [self isSelectable])) + return; + + if ([self isEditable] && !_isEditing) + { + _isEditing = YES; + [self textDidBeginEditing:[CPNotification notificationWithName:CPControlTextDidBeginEditingNotification object:self userInfo:nil]]; + } + // Leave the default _propagateCurrentDOMEvent setting in place. This might be YES or NO depending // on if something that could be a browser shortcut was pressed or not, such as Cmd-R to reload. // If it was NO we want to leave it at NO however and only enable it in insertText:. This is what