done On Fri, Jun 19, 2009 at 17:55, Igor Vaynberg <[email protected]>wrote:
> any plans to check this into trunk? > > On Fri, Jun 19, 2009 at 2:27 AM, <[email protected]> wrote: > > Author: jcompagner > > Date: Fri Jun 19 09:27:06 2009 > > New Revision: 786424 > > > > URL: http://svn.apache.org/viewvc?rev=786424&view=rev > > Log: > > more fixes for auto compleet (IE and so on) > > > > Modified: > > > > wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js > > > > Modified: > wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js > > URL: > http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js?rev=786424&r1=786423&r2=786424&view=diff > > > ============================================================================== > > --- > wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js > (original) > > +++ > wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js > Fri Jun 19 09:27:06 2009 > > @@ -53,9 +53,7 @@ > > var objonchange; > > var objonchangeoriginal; > > > > - // holds the eventual margins, padding, etc. of the menu > container. > > - // it is computed when the menu is first rendered, and then > reused. > > - var initialDelta = -1; > > + var ignoreOneFocusGain = false; // on FF, clicking an option in > the popup would make field loose focus; focus() call only has effect in FF > after popup is hidden, so the re-focusing must not show popup again in this > case > > > > // holds a throttler, for not sending many requests if the user > types > > // too quickly. > > @@ -90,6 +88,7 @@ > > > > obj.onblur=function(event){ > > if(mouseactive==1){ > > + ignoreOneFocusGain = true; > > Wicket.$(elementId).focus(); > > return killEvent(event); > > } > > @@ -98,20 +97,21 @@ > > } > > > > obj.onfocus=function(event){ > > - if (cfg.showListOnFocusGain) { > > + if (!ignoreOneFocusGain && cfg.showListOnFocusGain) { > > if (cfg.showCompleteListOnFocusGain) { > > updateChoices(true); > > } else { > > updateChoices(); > > } > > } > > + ignoreOneFocusGain = false; > > if(typeof > objonfocus=="function")objonfocus.apply(this,[event]); > > } > > > > obj.onkeydown=function(event){ > > switch(wicketKeyCode(Wicket.fixEvent(event))){ > > case KEY_UP: > > - if(selected>-1)selected--; > > + if(selected>-1) selected--; > > if(selected==-1){ > > hideAutoComplete(); > > } else { > > @@ -120,9 +120,7 @@ > > if(Wicket.Browser.isSafari())return killEvent(event); > > break; > > case KEY_DOWN: > > - if(selected<elementCount-1){ > > - selected++; > > - } > > + if(selected<elementCount-1) selected++; > > if(visible==0){ > > updateChoices(); > > } else { > > @@ -327,16 +325,17 @@ > > } > > > > function getPosition(obj) { > > - var leftPosition=0; > > - var topPosition=0; > > - do { > > + var leftPosition = obj.offsetLeft || 0; > > + var topPosition = obj.offsetTop || 0; > > + obj = obj.offsetParent; > > + while (obj && obj != document.documentElement && obj != > document.body) { > > topPosition += obj.offsetTop || 0; > > topPosition -= obj.scrollTop || 0; > > leftPosition += obj.offsetLeft || 0; > > leftPosition -= obj.scrollLeft || 0; > > obj = obj.offsetParent; > > - } while (obj); > > - > > + } > > + > > return [leftPosition,topPosition]; > > } > > > > @@ -362,9 +361,15 @@ > > if(typeof objonchange=="function") > objonchange.apply(wicketGet(elementId),[event]); > > } > > hideAutoComplete(); > > + if (Wicket.Focus.getFocusedElement() != input) > > + { > > + ignoreOneFocusGain = true; > > + input.focus(); > > + } > > }; > > > > var mouseOverFunc = function(event) { > > + mouseactive=1; // Opera needs this as mousemove for menu > is not always triggered > > selected = getElementIndex(this); > > render(); > > showAutoComplete(); > > @@ -452,18 +457,17 @@ > > if (classNames != origClassNames) > > node.className = classNames; > > > > - if ((cfg.maxHeight > -1) && (height < > cfg.maxHeight)) > > + if (cfg.maxHeight > -1) > > height+=node.offsetHeight; > > > > node = node.nextSibling; > > } > > if (cfg.maxHeight > -1) { > > - // If we don't exceed the maximum size, we add > the extra space > > - // that may be there due to padding, margins, > etc. > > - if (initialDelta == -1) > > - initialDelta = > menu.parentNode.offsetHeight - height; > > - height = height<cfg.maxHeight ? height+initialDelta : > cfg.maxHeight; > > - menu.parentNode.style.height=height+"px"; > > + if (height<cfg.maxHeight) { > > + menu.parentNode.style.height="auto"; > > + } else { > > + menu.parentNode.style.height=cfg.maxHeight+"px"; > > + } > > } > > } > > > > > > > > >
