Reviewed by John.
authorantti <antti@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 11 Jul 2007 08:10:16 +0000 (08:10 +0000)
committerantti <antti@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 11 Jul 2007 08:10:16 +0000 (08:10 +0000)
commitceb76d6d7d6d47eab9e40132a3a9039bee917116
treeab2676e54e14e05a23ddfaf1df65bb37bc585b21
parentd66e1d60f32d01db01b46586b9a89d6069503389
    Reviewed by John.

        Fix <rdar://problem/4570550>
        Hang in layout/layoutBlock/layoutBlockChildren preparing to print certain Mail messages

        When printing from Mail, WebHTMLView is a subview of the view that is actually printed and does not
        receive calls that would set it to printing mode. Method adjustPageHeightNew is called repeatedly (for each page) during
        printing and it enables printing mode temporarily for each call. This triggers two full style recalcs and layouts
        each time making printing at least O(n^2).

        Instead of enabling printing mode and resetting it back immediatly do the resetting asynchronously, after
        all adjustPageHeightNew calls are done. Normal Safari printing is not affected as adjustPageHeightNew is only
        called in case WebHTMLView is embedded in the view that is being printed.

        No automatic test possible, requires printing and non-Safari client.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView adjustPageHeightNew:top:bottom:limit:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@24186 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit/ChangeLog
WebKit/WebView/WebHTMLView.mm