Author: a.izobov
Date: 2007-06-20 06:08:59 -0400 (Wed, 20 Jun 2007)
New Revision: 1233
Modified:
trunk/richfaces/suggestionbox/src/main/resources/org/richfaces/renderkit/html/scripts/suggestionbox.js
Log:
http://jira.jboss.com/jira/browse/RF-57 fixed
Modified:
trunk/richfaces/suggestionbox/src/main/resources/org/richfaces/renderkit/html/scripts/suggestionbox.js
===================================================================
---
trunk/richfaces/suggestionbox/src/main/resources/org/richfaces/renderkit/html/scripts/suggestionbox.js 2007-06-20
09:21:32 UTC (rev 1232)
+++
trunk/richfaces/suggestionbox/src/main/resources/org/richfaces/renderkit/html/scripts/suggestionbox.js 2007-06-20
10:08:59 UTC (rev 1233)
@@ -15,6 +15,7 @@
this.entryCount = 0;
this.keyEvent = false;
this.oldValue = this.element.value;
+ this.skipHover = false;
var needIframe = (RichFaces.navigatorType() == "MSIE");
@@ -290,10 +291,18 @@
onHover: function(event) {
var element = Event.findElement(event, 'TR');
- if (this.index != element.autocompleteIndex) {
- this.index = element.autocompleteIndex;
- this.render();
- }
+ if (!this.skipHover) {
+ if (this.index != element.autocompleteIndex) {
+ this.index = element.autocompleteIndex;
+ this.render();
+ }
+ if (event.type == 'mousemove') {
+ Event.stopObserving(element, "mousemove", this.onHover);
+ }
+ } else {
+ this.skipHover = false;
+ Event.observe(element, "mousemove",
this.onHover.bindAsEventListener(this));
+ }
Event.stop(event);
},
@@ -306,6 +315,11 @@
this.hide();
},
+ onMouseOut: function(event) {
+ var element = Event.findElement(event, 'TR');
+ Event.stopObserving(element, "mousemove", this.onHover);
+ },
+
onBlur: function(event) {
if (this.isUnloaded()) return;
if (!this.active) return;
@@ -372,11 +386,15 @@
} else
entryOffsetHeight = entry.offsetHeight;
+ var oldScrollTop = scroll.scrollTop;
if (realOffset > scroll.scrollTop + scroll.clientHeight -
entryOffsetHeight) {
scroll.scrollTop = realOffset - scroll.clientHeight +
entryOffsetHeight;
} else if (realOffset < scroll.scrollTop) {
scroll.scrollTop = realOffset;
}
+ if (oldScrollTop != scroll.scrollTop) {
+ this.skipHover = true;
+ }
}
// remove hightliit from inactive entry
if (this.prevIndex >= 0) {
@@ -504,6 +522,7 @@
addObservers: function(element) {
Event.observe(element, "mouseover",
this.onHover.bindAsEventListener(this));
Event.observe(element, "click",
this.onClick.bindAsEventListener(this));
+ Event.observe(element, "mouseout",
this.onMouseOut.bindAsEventListener(this));
},
onObserverEvent: function(event) {