Most excellent.

I'm building 1.6 right now and will test this with gwt-dnd, using handlers
and the new methods.

On Tue, Mar 10, 2009 at 11:51 AM, Joel Webber 𐑯(ټ)𐑥 <j...@google.com>wrote:

> Fred,
> I just listed you as a reviewer on this code-review thread:
>   http://gwt-code-reviews.appspot.com/12802
>
> Bruce has been reviewing most of the details, but would you mind having a
> look to see if these APIs are sufficient to deal with the problems you've
> run into in Drag&Drop and GlassPanel?
>
> Many thanks,
> joel.
>
> On Tue, Mar 10, 2009 at 12:25 PM, Fred Sauer <fre...@google.com> wrote:
>
>> Joel,
>> I like the new proposed methods and I have no issues with the proposed
>> enable*Scrolling() methods.
>>
>> I've never had a need for both document.documentElement and document.body
>> at the same time. In fact whenever I've needed one, I *generally* need the
>> other when the rendering mode is toggled. That's hardly ever a complete
>> picture though. Here are the three ingredients I've found myself needing:
>>
>>    - Need to access document.documentElement or document.body, depending
>>    on rendering mode
>>    - Other things also depend on rendering mode so accessing
>>    $doc.compatMode is still necessary, which also has subtle issues, see
>>    http://code.google.com/p/google-web-toolkit/issues/detail?id=1981
>>    - Cross browser differences as you point out; as part of this also
>>    older flavors of our supported browsers behaving slightly differently
>>
>>
>> I was just looking at some of the crazy stuff I had to put in GlassPanel.
>> Below are a few use cases that pretty much cover my needs. You'll find a
>> number of TODOs and weird hacks:
>>
>> http://google-web-toolkit-incubator.googlecode.com/svn/trunk/src/com/google/gwt/widgetideas/client/impl/GlassPanelImplMozilla.java
>>
>> http://google-web-toolkit-incubator.googlecode.com/svn/trunk/src/com/google/gwt/widgetideas/client/impl/GlassPanelImpl.java
>>
>> http://google-web-toolkit-incubator.googlecode.com/svn/trunk/src/com/google/gwt/widgetideas/client/impl/GlassPanelImplIE6.java
>>
>> http://google-web-toolkit-incubator.googlecode.com/svn/trunk/src/com/google/gwt/widgetideas/client/impl/GlassPanelImplSafari.java
>>
>> On a side note, I see that the patch that ultimately went in for issues
>> 1400 (http://code.google.com/p/google-web-toolkit/issues/detail?id=1400)
>> doesn't actually expose "document root" to Java land, which results in the
>> necessity to use the violator pattern in
>> http://google-web-toolkit-incubator.googlecode.com/svn/trunk/src/com/google/gwt/widgetideas/client/impl/GlassPanelImpl.java
>>
>> Thanks
>> Fred
>>
>>
>>
>> On Tue, Mar 10, 2009 at 8:55 AM, Joel Webber 𐑯(ټ)𐑥 <j...@google.com>wrote:
>>
>>> I've done a bit more digging, and it looks like "document root" is even
>>> less useful than I originally thought. In my research, I missed the fact
>>> that all Safari versions report the document's scrollLeft/Top on the <body>
>>> element, even in strict mode. So this seems to imply that we *do* need
>>> explicit methods on the document for all these operations, because they can
>>> be different in subtle ways. So my new proposal is this:
>>> Document.
>>>   get/setScrollLeft/Top()
>>>   getClientWidth/Height()
>>>   enableHorizontal/VerticalScrolling()
>>>
>>> I really don't like the "enable scrolling" method very much, but I can't
>>> think of an obvious alternative that doesn't expose a magically-invented
>>> "viewport" element that has no standard corollary, and which invites
>>> developers to mess with it in ways that will probably just behave oddly.
>>>
>>> On Tue, Mar 10, 2009 at 10:43 AM, Joel Webber 𐑯(ټ)𐑥 <j...@google.com>wrote:
>>>
>>>> All,
>>>> I'm in the process of cleaning up the code in c.g.g.dom that depends
>>>> upon $doc (which it shouldn't, as this code is all intended to work with
>>>> multiple documents) and upon DocumentRootImpl (which it *really* shouldn't,
>>>> for the same reason). This is forcing me to answer the question "just what
>>>> the heck *is* this document root element, anyway?". The best
>>>> characterization I can come up with is something like:
>>>>
>>>>   "the element, which is either document.body or
>>>> document.documentElement, which you need to
>>>>   use if you want to work with document scrolling, client size (i.e. the
>>>> window's client area), and the
>>>>   magic 'body offset' on some browsers".
>>>>
>>>> It's not a standard DOM element or property, but it's definitely needed.
>>>> I originally created the method Document.getDocumentRootElement(), but this
>>>> just feels kind of wrong. The only alternative approach I can think of 
>>>> would
>>>> be to explicitly define methods such as Document.scrollLeft/Top,
>>>> Document.clientLeft/Top/Width/Height, and Document.getBodyOffsetLeft/Top()
>>>> (the last of which already exists). However, this still leaves the 
>>>> element's
>>>> CSS properties -- so, for example, if you want to turn off document
>>>> scrolling, you have to set the "document root" element's overflow style. To
>>>> do this using the same pattern, I would have to add something ugly like
>>>> Document.enableScrolling() (like the existing Window.enableScrolling()), or
>>>> perhaps Document.getStyle() (the former of which feels really weirdly
>>>> special-cased, and the latter of which feels wrong, because the Document
>>>> object doesn't technically have a style).
>>>>
>>>> One other completely simplifying possibility would be to *only* provide
>>>> document.getDocumentElement(), and simply redefine it to return the <body>
>>>> element in quirks-mode. Does anyone know if the "real"
>>>> document.documentElement serves any purpose in quirks mode? If not, I'm
>>>> inclined to simply redefine it, which would make all these problems go 
>>>> away.
>>>>
>>>> @Fred: I seem to recall discussing some of the ins and outs of this with
>>>> you in the past. Any opinions?
>>>>
>>>> Thanks,
>>>> joel.
>>>>
>>>
>>>
>>
>>
>> --
>> Fred Sauer
>>  Developer Advocate
>> Google Inc. 1600 Amphitheatre Parkway
>> Mountain View, CA 94043
>> fre...@google.com
>>
>>
>


-- 
Fred Sauer
Developer Advocate
Google Inc. 1600 Amphitheatre Parkway
Mountain View, CA 94043
fre...@google.com

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to