WebKit:
authorsullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 26 Mar 2004 21:49:35 +0000 (21:49 +0000)
committersullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 26 Mar 2004 21:49:35 +0000 (21:49 +0000)
        - fixed <rdar://problem/3576334>: Printing "empty" page gives print error,
        leaves browser window UI broken

        Reviewed by Dave.

        * WebView.subproj/WebHTMLView.m:
        (-[WebHTMLView knowsPageRange:]):
        AppKit printing mechanism can't handle the case where you tell it there is
        nothing at all to print, so when we hit that case we give it a degenerate
        1-pixel rect to print. This prints a blank page (with correctly-placed
        header & footer if so configured), which matches other browsers' behavior for
        this page.

        * Plugins.subproj/npruntime.h:
        cvs keeps thinking I've removed a blank line from this auto-copied file.
        Richard said to just check it in to see if it stops doing this.

WebBrowser:

        fixed <rdar://problem/3603092>: "new folder" menu item is enabled but
        does nothing when current collection is history

        Reviewed by Dave.

        * BookmarksViewController.m:
        (-[BookmarksViewController newBookmarkFolder:]):
        If displayed contents can't accept new items, make a new collection
        even if outline view is focused.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@6265 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/ChangeLog
WebKit/Plugins.subproj/npruntime.h
WebKit/WebView.subproj/WebHTMLView.m

index 639b32a06141a8660a55e23b87f732dcdf779d58..d51754aa4a3acf18adfdb205fc7a84a90dd94a31 100644 (file)
@@ -1,3 +1,22 @@
+2004-03-26  John Sullivan  <sullivan@apple.com>
+
+        - fixed <rdar://problem/3576334>: Printing "empty" page gives print error, 
+        leaves browser window UI broken
+
+        Reviewed by Dave.
+
+        * WebView.subproj/WebHTMLView.m:
+        (-[WebHTMLView knowsPageRange:]):
+        AppKit printing mechanism can't handle the case where you tell it there is
+        nothing at all to print, so when we hit that case we give it a degenerate
+        1-pixel rect to print. This prints a blank page (with correctly-placed
+        header & footer if so configured), which matches other browsers' behavior for
+        this page.
+
+        * Plugins.subproj/npruntime.h:
+        cvs keeps thinking I've removed a blank line from this auto-copied file.
+        Richard said to just check it in to see if it stops doing this.
+        
 === Safari-134 ===
 
 2004-03-26  John Sullivan  <sullivan@apple.com>
index 3420171cd1d210a3233e014bbf52017f634dab11..abf0103090840bb0c749a11d4f25c2bcf1fd37b0 100644 (file)
@@ -48,7 +48,6 @@
 extern "C" {
 #endif
 
-
 /*
     This API is used to facilitate binding code written in 'C' to JavaScript
     objects.  In particular it is used to support the extended Netscape 
index 7c795fc5b38b84418b85fae9cc917770768ddbba..bbb127e2c8690fbedeeace0dc572a1c77f2c5d0e 100644 (file)
@@ -1870,9 +1870,19 @@ static WebHTMLView *lastHitView = nil;
     float totalScaleFactor = [self _scaleFactorForPrintOperation:printOperation];
     float userScaleFactor = [printOperation _web_pageSetupScaleFactor];
     [_private->pageRects release];
-    _private->pageRects = [[[self _bridge] computePageRectsWithPrintWidthScaleFactor:userScaleFactor
-                                                                         printHeight:[self _calculatePrintHeight]/totalScaleFactor] retain];
+    NSArray *newPageRects = [[self _bridge] computePageRectsWithPrintWidthScaleFactor:userScaleFactor
+                                                                          printHeight:[self _calculatePrintHeight]/totalScaleFactor];
+    // AppKit gets all messed up if you give it a zero-length page count (see 3576334), so if we
+    // hit that case we'll pass along a degenerate 1 pixel square to print. This will print
+    // a blank page (with correct-looking header and footer if that option is on), which matches
+    // the behavior of IE and Camino at least.
+    if ([newPageRects count] == 0) {
+        newPageRects = [NSArray arrayWithObject:[NSValue valueWithRect: NSMakeRect(0, 0, 1, 1)]];
+    }
+    _private->pageRects = [newPageRects retain];
+    
     range->length = [_private->pageRects count];
+    
     return YES;
 }