OLD | NEW |
1 | 1 |
2 // Helpers | 2 // Helpers |
3 | 3 |
4 function $(id) { | 4 function $(id) { |
5 return document.getElementById(id); | 5 return document.getElementById(id); |
6 } | 6 } |
7 | 7 |
8 // TODO(arv): Remove these when classList is available in HTML5. | 8 // TODO(arv): Remove these when classList is available in HTML5. |
9 // https://bugs.webkit.org/show_bug.cgi?id=20709 | 9 // https://bugs.webkit.org/show_bug.cgi?id=20709 |
10 function hasClass(el, name) { | 10 function hasClass(el, name) { |
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
676 * @param {Element} menu The menu element. | 676 * @param {Element} menu The menu element. |
677 * @constructor | 677 * @constructor |
678 */ | 678 */ |
679 function OptionMenu(button, menu) { | 679 function OptionMenu(button, menu) { |
680 this.button = button; | 680 this.button = button; |
681 this.menu = menu; | 681 this.menu = menu; |
682 this.button.onmousedown = bind(this.handleMouseDown, this); | 682 this.button.onmousedown = bind(this.handleMouseDown, this); |
683 this.button.onkeydown = bind(this.handleKeyDown, this); | 683 this.button.onkeydown = bind(this.handleKeyDown, this); |
684 this.boundHideMenu_ = bind(this.hideMenu, this); | 684 this.boundHideMenu_ = bind(this.hideMenu, this); |
685 this.boundMaybeHide_ = bind(this.maybeHide_, this); | 685 this.boundMaybeHide_ = bind(this.maybeHide_, this); |
| 686 this.menu.onmouseover = bind(this.handleMouseOver, this); |
| 687 this.menu.onmouseout = bind(this.handleMouseOut, this); |
| 688 this.menu.onmouseup = bind(this.handleMouseUp, this); |
686 } | 689 } |
687 | 690 |
688 OptionMenu.prototype = { | 691 OptionMenu.prototype = { |
689 showMenu: function() { | 692 showMenu: function() { |
690 this.menu.style.display = 'block'; | 693 this.menu.style.display = 'block'; |
691 this.button.focus(); | 694 this.button.focus(); |
692 | 695 |
693 // Listen to document and window events so that we hide the menu when the | 696 // Listen to document and window events so that we hide the menu when the |
694 // user clicks outside the menu or tabs away or the whole window is blurred. | 697 // user clicks outside the menu or tabs away or the whole window is blurred. |
695 document.addEventListener('focus', this.boundMaybeHide_, true); | 698 document.addEventListener('focus', this.boundMaybeHide_, true); |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
798 this.showMenu(); | 801 this.showMenu(); |
799 } | 802 } |
800 break; | 803 break; |
801 } | 804 } |
802 }, | 805 }, |
803 | 806 |
804 selectedIndex_: -1, | 807 selectedIndex_: -1, |
805 setSelectedIndex: function(i) { | 808 setSelectedIndex: function(i) { |
806 if (i != this.selectedIndex_) { | 809 if (i != this.selectedIndex_) { |
807 var items = this.menu.children; | 810 var items = this.menu.children; |
808 var oldItem = this.items[this.selectedIndex_]; | 811 var oldItem = items[this.selectedIndex_]; |
809 if (oldItem) { | 812 if (oldItem) { |
810 oldItem.removeAttribute('selected'); | 813 oldItem.removeAttribute('selected'); |
811 } | 814 } |
812 var newItem = items[i]; | 815 var newItem = items[i]; |
813 if (newItem) { | 816 if (newItem) { |
814 newItem.setAttribute('selected', 'selected'); | 817 newItem.setAttribute('selected', 'selected'); |
815 } | 818 } |
816 this.selectedIndex_ = i; | 819 this.selectedIndex_ = i; |
817 } | 820 } |
818 }, | 821 }, |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1074 el.addEventListener('dragover', bind(this.handleDragOver, this)); | 1077 el.addEventListener('dragover', bind(this.handleDragOver, this)); |
1075 el.addEventListener('dragleave', bind(this.handleDragLeave, this)); | 1078 el.addEventListener('dragleave', bind(this.handleDragLeave, this)); |
1076 el.addEventListener('drop', bind(this.handleDrop, this)); | 1079 el.addEventListener('drop', bind(this.handleDrop, this)); |
1077 el.addEventListener('dragend', bind(this.handleDragEnd, this)); | 1080 el.addEventListener('dragend', bind(this.handleDragEnd, this)); |
1078 el.addEventListener('drag', bind(this.handleDrag, this)); | 1081 el.addEventListener('drag', bind(this.handleDrag, this)); |
1079 el.addEventListener('mousedown', bind(this.handleMouseDown, this)); | 1082 el.addEventListener('mousedown', bind(this.handleMouseDown, this)); |
1080 } | 1083 } |
1081 }; | 1084 }; |
1082 | 1085 |
1083 dnd.init(); | 1086 dnd.init(); |
OLD | NEW |