]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Fixes #3234, refs #3094. Added the inTarget code back to the popup closing function.
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Sat, 26 Mar 2011 15:44:49 +0000 (15:44 +0000)
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Sat, 26 Mar 2011 15:44:49 +0000 (15:44 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@8842 36083f99-b078-4883-b0ff-0f9b5a30f544

js/lib/ui.js

index 030390823df1cfdeb7c411f5d9636d75a9f7cef7..ecf4cc763a03591f0106f42c4f1038711844de78 100644 (file)
@@ -107,18 +107,37 @@ elgg.ui.popsUp = function(event) {
  */
 elgg.ui.popupClose = function(event) {
        $eventTarget = $(event.target);
+       var inTarget = false;
        var $popups = $('[rel=popup]');
 
+       // if the click event target isn't in a popup target, fade all of them out.
        $popups.each(function(i, e) {
-               var $e = $(e);
-               var $target = $(elgg.getUrlFragment($e.attr('href')) + ':visible');
-               if ($target.length > 0) {
-                       $target.fadeOut();
-                       $e.removeClass('elgg-state-active');
+               var target = elgg.getUrlFragment($(e).attr('href')) + ':visible';
+               var $target = $(target);
+
+               if (!$target.is(':visible')) {
+                       return;
+               }
+               
+               // didn't click inside the target
+               if ($eventTarget.closest(target).length > 0) {
+                       inTarget = true;
+                       return false;
                }
        });
 
-       $('body').die('click', elgg.ui.popClose);
+       if (!inTarget) {
+               $popups.each(function(i, e) {
+                       var $e = $(e);
+                       var $target = $(elgg.getUrlFragment($e.attr('href')) + ':visible');
+                       if ($target.length > 0) {
+                               $target.fadeOut();
+                               $e.removeClass('elgg-state-active');
+                       }
+               });
+
+               $('body').die('click', elgg.ui.popClose);
+       }
 }
 
 /**