Updated Branches: refs/heads/master 5a316d37b -> 958730846
WICKET-5154 Positioning of autocomplete popup does not take into account borders Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/95873084 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/95873084 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/95873084 Branch: refs/heads/master Commit: 95873084637d96908a5df08343b37846d3e38174 Parents: 5a316d3 Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Authored: Fri Apr 26 17:24:33 2013 +0200 Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Committed: Fri Apr 26 17:24:33 2013 +0200 ---------------------------------------------------------------------- .../autocomplete/AbstractAutoCompleteBehavior.java | 1 + .../html/autocomplete/AutoCompleteSettings.java | 28 +++++++++++++++ .../html/autocomplete/wicket-autocomplete.js | 11 ++++++ 3 files changed, 40 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/95873084/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java index 1d754dc..9105f73 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java @@ -152,6 +152,7 @@ public abstract class AbstractAutoCompleteBehavior extends AbstractDefaultAjaxBe sb.append(",useSmartPositioning: ").append(settings.getUseSmartPositioning()); sb.append(",useHideShowCoveredIEFix: ").append(settings.getUseHideShowCoveredIEFix()); sb.append(",showListOnEmptyInput: ").append(settings.getShowListOnEmptyInput()); + sb.append(",ignoreBordersWhenPositioning: ").append(settings.getIgnoreBordersWhenPositioning()); sb.append(",showListOnFocusGain: ").append(settings.getShowListOnFocusGain()); sb.append(",throttleDelay: ").append(settings.getThrottleDelay()); sb.append(",parameterName: '").append(settings.getParameterName()).append('\''); http://git-wip-us.apache.org/repos/asf/wicket/blob/95873084/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java index 4709ee7..8f784ad 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java @@ -57,6 +57,8 @@ public final class AutoCompleteSettings implements IClusterable private boolean useSmartPositioning = false; + private boolean ignoreBordersWhenPositioning = true; + private boolean useHideShowCoveredIEFix = true; private String cssClassName = null; @@ -156,6 +158,32 @@ public final class AutoCompleteSettings implements IClusterable } /** + * Indicates whether the popup positioning will take into account the borders of the input + * element and its ancestors. + * + * @return true if borders are ignored, false otherwise. + */ + public boolean getIgnoreBordersWhenPositioning() + { + return ignoreBordersWhenPositioning; + } + + /** + * Sets whether the popup positioning will take into account the borders of the input element + * and its ancestors (by including the <code>clientLeft</code> and <code>clientTop</code> DOM + * properties in the computation). + * + * @param ignoreBordersWhenPositioning + * the flag + * @return this {@link AutoCompleteSettings}. + */ + public AutoCompleteSettings setIgnoreBordersWhenPositioning(final boolean ignoreBordersWhenPositioning) + { + this.ignoreBordersWhenPositioning = ignoreBordersWhenPositioning; + return this; + } + + /** * Indicates whether the popup positioning will take into account browser window visible area or * not. (so always show popup bottom-right or not) * http://git-wip-us.apache.org/repos/asf/wicket/blob/95873084/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js index 5678e39..3301a19 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js @@ -570,12 +570,23 @@ function getPosition(obj) { var leftPosition = obj.offsetLeft || 0; var topPosition = obj.offsetTop || 0; + if (!cfg.ignoreBordersWhenPositioning) { + topPosition += obj.clientTop || 0; + leftPosition += obj.clientLeft || 0; + } + obj = obj.offsetParent; while (obj && obj !== document.documentElement && obj !== document.body) { topPosition += obj.offsetTop || 0; topPosition -= obj.scrollTop || 0; + if (!cfg.ignoreBordersWhenPositioning) { + topPosition += obj.clientTop || 0; + } leftPosition += obj.offsetLeft || 0; leftPosition -= obj.scrollLeft || 0; + if (!cfg.ignoreBordersWhenPositioning) { + leftPosition += obj.clientLeft || 0; + } obj = obj.offsetParent; }