On Nov 26, 1:59 am, David T <[email protected]> wrote:
> Hi All,
>
> I'm trying to use the provided PopupPanel.center() method to center a
> popup panel on the screen. This works fine on Opera and Safari
> centering the popup relative to the browser window. In Firefox though
> it centers the popup relative to the entire page.
>
> I've tried to implement my own center method as follows:
>
> private void center() {
>         popup.setPopupPositionAndShow(new PositionCallback() {
>
>                 public void setPosition(int offsetWidth, int offsetHeight)
>                 {
>                         int[] winSize = windowSize();
>                         int left = (winSize[0] - offsetWidth) >> 1;
>                         int top = (winSize[1] - offsetHeight) >> 1;
>                         popup.setPopupPosition(Window.getScrollLeft() + left,
> Window.getScrollTop() + top);
>                 }
>
>         });
>
> }
>
> public final native int[] windowSize() /*-{
>         var myWidth = 0, myHeight = 0;
>         if (typeof(window.innerWidth) == 'number') {
>                 //Non-IE
>                 myWidth = window.innerWidth;
>                 myHeight = window.innerHeight;
>         } else if (document.documentElement &&
>                 (document.documentElement.clientWidth ||
> document.documentElement.clientHeight)) {
>                 //IE 6+ in 'standards compliant mode'
>                 myWidth = document.documentElement.clientWidth;
>                 myHeight = document.documentElement.clientHeight;
>         } else if (document.body && (document.body.clientWidth ||
> document.body.clientHeight)) {
>                 //IE 4 compatible
>                 myWidth = document.body.clientWidth;
>                 myHeight = document.body.clientHeight;
>         }
>         return [myWidth, myHeight];
>
> }-*/;
>
> But this doesn't work as the windowSize() method returns 0 for reasons
> I don't know.

You use 'window' and 'document', which refer to the hidden iframe's
window and document your GWT code is loaded in (your
<permutation>.cache.html). You should always use $wnd and $doc in JSNI
code.

(and I agree PopupPanel.center() should use window.innerHeight/Width
where possible; at least when the document is smaller than the window;
have you filed a bug?)

--

You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.


Reply via email to