diff options
author | Scott González <scott.gonzalez@gmail.com> | 2014-07-23 11:10:14 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2014-07-23 11:10:14 -0400 |
commit | 69f25dbff71d9864ce7ce46c47003413f8b7deb2 (patch) | |
tree | 66ae32ee8c4799e7e15e7ea419491db20e2e3941 | |
parent | 1071346aea784e0f22c85f260499135f76482f9f (diff) | |
download | jquery-ui-69f25dbff71d9864ce7ce46c47003413f8b7deb2.tar.gz jquery-ui-69f25dbff71d9864ce7ce46c47003413f8b7deb2.zip |
Dialog: Track the instance as soon as the dialog is opened
Fixes #10152
-rw-r--r-- | ui/dialog.js | 15 |
1 files 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 ); |