r2739 - added support for both mouse interaction styles:

r2739 - added support for both mouse interaction styles:


Author: scottjehl
Date: Fri Jun 12 14:47:51 2009
New Revision: 2739
Modified:
branches/labs/selectmenu/ui.selectmenu.js
Log:
added support for both mouse interaction styles:
- mousedown-drag-mouseup
or
- click-drag-click
Modified: branches/labs/selectmenu/ui.selectmenu.js
==============================================================================
--- branches/labs/selectmenu/ui.selectmenu.js    (original)
+++ branches/labs/selectmenu/ui.selectmenu.js    Fri Jun 12 14:47:51 2009
@@ -42,9 +42,15 @@
        //click toggle for menu visibility
        this.newelement
-        .bind('click', function(){
+        .bind('mousedown', function(){
            self._closeOthers();
-            self._toggle();
+            self.open();
+            //make sure a click won't open/close instantly
+            self._safemouseup = false;
+            setTimeout(function(){self._safemouseup = true;}, 100);
+            return false;
+        })
+        .bind('click',function(){
            return false;
        })
        .keydown(function(event){
@@ -105,6 +111,10 @@
                .data('optionClasses', s_options[i].classes)
                .mouseup(function(){
                    self.value($(this).data('index'));
+                    if(self._safemouseup){
+                        self.close(true);
+                    }
+                    return false;
                })
                .bind('mouseover focus', function(){
                    
$(this).parent().find('.ui-selectmenu-item-selected').addClass(activeClass);
@@ -159,10 +169,6 @@
        
        //transfer menu click to menu button
        this.list
-        .click(function(){
-            self.newelement.trigger('click');    // (should be abstracted out)
-            return false;
-        })
        .keydown(function(event){
            var ret = true;
@@ -232,6 +238,8 @@
            .attr('for',this.element.attr('id'))
            .unbind('click');
    },
+    
+    _safemouseup: true,
    
    _prevChar: ['',0],