Bug 1712724 - Don't trigger select on programmatic focus during keyboard events. r=smaug

Depends on D115900

Differential Revision: https://phabricator.services.mozilla.com/D115901
This commit is contained in:
Emilio Cobos Álvarez
2021-05-26 11:21:44 +00:00
parent 13476ca805
commit 71a286281a
5 changed files with 46 additions and 12 deletions

View File

@@ -3739,16 +3739,19 @@ nsresult HTMLInputElement::PostHandleEvent(EventChainPostVisitor& aVisitor) {
// for text and password fields when the field was focused by the
// keyboard or a navigation, the platform allows it, and it wasn't
// just because we raised a window.
//
// While it'd usually make sense, we don't do this for JS callers
// because it causes some compat issues, see bug 1712724 for example.
nsFocusManager* fm = nsFocusManager::GetFocusManager();
if (fm && IsSingleLineTextControl(false) &&
!aVisitor.mEvent->AsFocusEvent()->mFromRaise &&
SelectTextFieldOnFocus()) {
Document* document = GetComposedDoc();
if (document) {
if (Document* document = GetComposedDoc()) {
uint32_t lastFocusMethod;
fm->GetLastFocusMethod(document->GetWindow(), &lastFocusMethod);
if (lastFocusMethod & (nsIFocusManager::FLAG_BYKEY |
nsIFocusManager::FLAG_BYMOVEFOCUS)) {
nsIFocusManager::FLAG_BYMOVEFOCUS) &&
!(lastFocusMethod & nsIFocusManager::FLAG_BYJS)) {
RefPtr<nsPresContext> presContext =
GetPresContext(eForComposedDoc);
DispatchSelectEvent(presContext);