]> source.dussan.org Git - jquery-ui.git/commitdiff
Effects: Backporting 8108ec8 - Fixes #7595 - Wrapper-creating jquery-ui animations...
authorCorey Frang <gnarf@gnarf.net>
Tue, 2 Aug 2011 21:58:52 +0000 (16:58 -0500)
committerCorey Frang <gnarf@gnarf.net>
Tue, 2 Aug 2011 21:58:52 +0000 (16:58 -0500)
ui/jquery.effects.core.js

index 46627158ebde740b2ce7a920cf679f7e1cfeff77..156bfdf32b41befbe779d23e602f04152adcc1bd 100644 (file)
@@ -367,9 +367,16 @@ $.extend($.effects, {
                                        border: 'none',
                                        margin: 0,
                                        padding: 0
-                               });
+                               }),
+                       active = document.activeElement;
 
                element.wrap(wrapper);
+
+               // Fixes #7595 - Elements lose focus when wrapped.
+               if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+                       $( active ).focus();
+               }
+               
                wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually loose the reference to the wrapped element
 
                // transfer positioning properties to the wrapper
@@ -394,8 +401,18 @@ $.extend($.effects, {
        },
 
        removeWrapper: function(element) {
-               if (element.parent().is('.ui-effects-wrapper'))
-                       return element.parent().replaceWith(element);
+               var parent,
+                       active = document.activeElement;
+               
+               if (element.parent().is('.ui-effects-wrapper')) {
+                       parent = element.parent().replaceWith(element);
+                       // Fixes #7595 - Elements lose focus when wrapped.
+                       if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+                               $( active ).focus();
+                       }
+                       return parent;
+               }
+                       
                return element;
        },