From 44eef2aeed3f2f0b19faf55f41e63bc23a504c65 Mon Sep 17 00:00:00 2001 From: "dcone%netscape.com" Date: Fri, 10 Feb 2006 22:49:28 +0000 Subject: [PATCH] 118890 r=rods sr=attinasi a=asa. Fixed printing in print preview --- widget/src/mac/nsDeviceContextSpecX.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/widget/src/mac/nsDeviceContextSpecX.cpp b/widget/src/mac/nsDeviceContextSpecX.cpp index 44a7798f915b..bb65905aee1c 100644 --- a/widget/src/mac/nsDeviceContextSpecX.cpp +++ b/widget/src/mac/nsDeviceContextSpecX.cpp @@ -46,6 +46,7 @@ #include "nsIServiceManager.h" #include "nsIPrintOptions.h" +#include "CoreServices.h" /** ------------------------------------------------------- * Construct the nsDeviceContextSpecX @@ -79,12 +80,21 @@ NS_IMPL_ISUPPORTS2(nsDeviceContextSpecX, nsIDeviceContextSpec, nsIPrintingContex NS_IMETHODIMP nsDeviceContextSpecX::Init(nsIPrintSettings* aPS, PRBool aQuiet) { nsresult rv; + OSStatus status; + nsCOMPtr printOptionsService = do_GetService("@mozilla.org/gfx/printoptions;1", &rv); if (NS_FAILED(rv)) return rv; + // are we doing a printpreview.. then don't start setting up for the printing + PRBool doingPrintPreview; + + aPS->GetIsPrintPreview(&doingPrintPreview); + // Because page setup can get called at any time, we can't use the session APIs here. - OSStatus status = ::PMBegin(); - if (status != noErr) return NS_ERROR_FAILURE; + if(!doingPrintPreview) { + status = ::PMBegin(); + if (status != noErr) return NS_ERROR_FAILURE; + } mBeganPrinting = PR_TRUE; @@ -118,6 +128,13 @@ NS_IMETHODIMP nsDeviceContextSpecX::Init(nsIPrintSettings* aPS, PRBool aQuiet) { ::InitCursor(); + //CFStringRef pathRef = CFStringCreateWithCString(NULL,"file://Macintosh HD/Developer/Examples/Printing/App/build/PrintDialogPDE.plugin",kCFStringEncodingUTF8); + CFStringRef pathRef = CFStringCreateWithCString(NULL,"Developer:Examples:Printing:App:build:PrintDialogPDE.plugin",kCFStringEncodingUTF8); + if(pathRef){ + CFURLRef bundleURL=CFURLCreateWithFileSystemPath(NULL,pathRef,kCFURLPOSIXPathStyle,false); + CFPlugInRef plugin = ::CFPlugInCreate(NULL,bundleURL); + } + Boolean accepted = false; status = ::PMPrintDialog(mPrintSettings, mPageFormat, &accepted); if (! accepted)