From 69f25dbff71d9864ce7ce46c47003413f8b7deb2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 23 Jul 2014 11:10:14 -0400 Subject: [PATCH] Dialog: Track the instance as soon as the dialog is opened Fixes #10152 --- ui/dialog.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ui/dialog.js b/ui/dialog.js index 470676cbe..5561a96cd 100644 --- a/ui/dialog.js +++ b/ui/dialog.js @@ -273,6 +273,11 @@ return $.widget( "ui.dialog", { that._trigger( "focus" ); }); + // Track the dialog immediately upon openening in case a focus event + // somehow occurs outside of the dialog before an element inside the + // dialog is focused (#10152) + this._makeFocusTarget(); + this._trigger( "open" ); }, @@ -584,14 +589,18 @@ return $.widget( "ui.dialog", { _trackFocus: function() { this._on( this.widget(), { - "focusin": function( event ) { - this._untrackInstance(); - this._trackingInstances().unshift( this ); + focusin: function( event ) { + this._makeFocusTarget(); this._focusedElement = $( event.target ); } }); }, + _makeFocusTarget: function() { + this._untrackInstance(); + this._trackingInstances().unshift( this ); + }, + _untrackInstance: function() { var instances = this._trackingInstances(), exists = $.inArray( this, instances ); -- 2.39.5