Return the correct style element for PopupPanels in FireFox on Mac, which uses an extra div. The JavaDoc explains that all style should apply to the inner div. Patch by: jlabanca Review by: rjrjr Issue: 3214 git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4379 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/ui/PopupPanel.java b/user/src/com/google/gwt/user/client/ui/PopupPanel.java index 8cfeeba..6064c12 100644 --- a/user/src/com/google/gwt/user/client/ui/PopupPanel.java +++ b/user/src/com/google/gwt/user/client/ui/PopupPanel.java
@@ -769,7 +769,12 @@ @Override protected Element getContainerElement() { - return impl.getContainerElement(DOM.getFirstChild(super.getContainerElement())); + return impl.getContainerElement(getPopupImplElement()); + } + + @Override + protected Element getStyleElement() { + return impl.getStyleElement(getPopupImplElement()); } /** @@ -847,6 +852,18 @@ } /** + * Get the element that {@link PopupImpl} uses. PopupImpl creates an element + * that goes inside of the outer element, so all methods in PopupImpl are + * relative to the first child of the outer element, not the outer element + * itself. + * + * @return the Element that {@link PopupImpl} creates and expects + */ + private Element getPopupImplElement() { + return DOM.getFirstChild(super.getContainerElement()); + } + + /** * Positions the popup, called after the offset width and height of the popup are known. * * @param relativeObject the ui object to position relative to
diff --git a/user/src/com/google/gwt/user/client/ui/impl/PopupImpl.java b/user/src/com/google/gwt/user/client/ui/impl/PopupImpl.java index 9af98c1..d8897cc 100644 --- a/user/src/com/google/gwt/user/client/ui/impl/PopupImpl.java +++ b/user/src/com/google/gwt/user/client/ui/impl/PopupImpl.java
@@ -31,6 +31,10 @@ return popup; } + public Element getStyleElement(Element popup) { + return DOM.getParent(popup); + } + public void onHide(Element popup) { }
diff --git a/user/src/com/google/gwt/user/client/ui/impl/PopupImplMozilla.java b/user/src/com/google/gwt/user/client/ui/impl/PopupImplMozilla.java index a11fe48..eaa6c94 100644 --- a/user/src/com/google/gwt/user/client/ui/impl/PopupImplMozilla.java +++ b/user/src/com/google/gwt/user/client/ui/impl/PopupImplMozilla.java
@@ -99,6 +99,11 @@ } @Override + public Element getStyleElement(Element outerElem) { + return isMac ? outerElem : super.getStyleElement(outerElem); + } + + @Override public void setClip(Element popup, String rect) { super.setClip(popup, rect); DOM.setStyleAttribute(popup, "display", "none");