You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/04/26 17:24:54 UTC

git commit: WICKET-5154 Positioning of autocomplete popup does not take into account borders

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 <mg...@apache.org>
Authored: Fri Apr 26 17:24:33 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@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;
 			}