You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2010/03/19 17:50:16 UTC

svn commit: r925318 - in /myfaces/tobago/branches/tobago-1.0.x: core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java

Author: lofwyr
Date: Fri Mar 19 16:50:16 2010
New Revision: 925318

URL: http://svn.apache.org/viewvc?rev=925318&view=rev
Log:
TOBAGO-532: Popup Z-Index-Problem with DatePicker and InputSuggest in IE
 - adding a div in non AJAX case, so that the structure is the same like in AJAX case.

Modified:
    myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java
    myfaces/tobago/branches/tobago-1.0.x/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java

Modified: myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java?rev=925318&r1=925317&r2=925318&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java (original)
+++ myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java Fri Mar 19 16:50:16 2010
@@ -27,10 +27,10 @@ import javax.faces.context.FacesContext;
 import javax.faces.event.PhaseId;
 import javax.faces.render.Renderer;
 import java.io.IOException;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.StringTokenizer;
-import java.util.HashMap;
 
 public class AjaxUtils {
 
@@ -38,6 +38,10 @@ public class AjaxUtils {
 
   public static final String AJAX_COMPONENTS = AjaxUtils.class.getName() + ".AJAX_COMPONENTS";
 
+  public static boolean isAjaxRequest(FacesContext facesContext) {
+    return facesContext.getExternalContext().getRequestMap().containsKey(AJAX_COMPONENTS);
+  }
+
   public static void checkParamValidity(FacesContext facesContext, UIComponent uiComponent, Class compClass) {
     if (facesContext == null) {
       throw new NullPointerException("facesContext may not be null");
@@ -54,7 +58,6 @@ public class AjaxUtils {
     }
   }
 
-
   public static void encodeAjaxComponent(FacesContext facesContext, UIComponent component) throws IOException {
     if (facesContext == null) {
       throw new NullPointerException("facesContext");
@@ -68,7 +71,6 @@ public class AjaxUtils {
     }
   }
 
-
   public static void processAjax(FacesContext facesContext, UIComponent component)
       throws IOException {
     if (component instanceof AjaxComponent) {
@@ -162,15 +164,21 @@ public class AjaxUtils {
   }
 
   public static void ensureDecoded(FacesContext facesContext, UIComponent component) {
+    if (component == null) {
+      LOG.warn("Ignore AjaxComponent: null");
+      return;
+    }
     Map<String, UIComponent> ajaxComponents = getAjaxComponents(facesContext);
     if (ajaxComponents != null) {
       for (UIComponent uiComponent : ajaxComponents.values()) {
-        UIComponent currentComponent = component;
-        while (currentComponent != null) {
+        // is component or a parent of it in the list?
+        UIComponent parent = component;
+        while (parent != null) {
           if (component == uiComponent) {
+            // nothing to do, because it was already decoded (in the list)
             return;
           }
-          currentComponent = currentComponent.getParent();
+          parent = parent.getParent();
         }
       }
       component.processDecodes(facesContext);

Modified: myfaces/tobago/branches/tobago-1.0.x/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java?rev=925318&r1=925317&r2=925318&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java (original)
+++ myfaces/tobago/branches/tobago-1.0.x/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java Fri Mar 19 16:50:16 2010
@@ -94,6 +94,12 @@ public class PopupRenderer extends Layou
     //contentStyle.append("top: ");
     //contentStyle.append(top);
     //contentStyle.append("; ");
+
+    if (!AjaxUtils.isAjaxRequest(facesContext)) {
+      writer.startElement(HtmlConstants.DIV, component);
+      writer.writeClassAttribute("tobago-popup-parent");
+    }
+
     if (component.isModal()) {
       writer.startElement(HtmlConstants.DIV, component);
       writer.writeIdAttribute(clientId);
@@ -159,6 +165,10 @@ public class PopupRenderer extends Layou
 
     writer.endElement(HtmlConstants.DIV);
 
+    if (!AjaxUtils.isAjaxRequest(facesContext)) {
+      writer.endElement(HtmlConstants.DIV);
+    }
+
     String setupScript = "Tobago.setupPopup('" + clientId + "', '"
         + component.getLeft() + "', '" + component.getTop() + "', " + component.isModal() + ");";
     writer.writeJavascript(setupScript);