From 14691ae6feea2732ec5aeae57b4275aa0e4d1beb Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Tue, 23 Oct 2012 10:31:10 -0400 Subject: Dialog: Save the active element that opened the dialog and restore focus to that. Fixes #8730 - Dialog: Restore focus to opener. --- ui/jquery.ui.dialog.js | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'ui/jquery.ui.dialog.js') diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 2b9846b3a..6617c344e 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -248,6 +248,13 @@ $.widget("ui.dialog", { this.overlay.destroy(); } + if ( !this.opener.filter( ":focusable" ).focus().length ) { + // Hiding a focused element doesn't trigger blur in WebKit + // so in case we have nothing to focus on, explicitly blur the active element + // https://bugs.webkit.org/show_bug.cgi?id=47182 + $( this.document[ 0 ].activeElement ).blur(); + } + if ( this.options.hide ) { this._hide( this.uiDialog, this.options.hide, function() { that._trigger( "close", event ); @@ -278,6 +285,8 @@ $.widget("ui.dialog", { options = this.options, uiDialog = this.uiDialog; + this.opener = $( this.document[ 0 ].activeElement ); + this._size(); this._position( options.position ); uiDialog.show( options.show ); -- cgit v1.2.3