]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/printmac.cpp
crash upon hide fix
[wxWidgets.git] / src / mac / printmac.cpp
index 50c666ce95ea10502c74889e8f89dd60c1061a55..60d15137cff0c1269f91d9f91133a0d9174d1b0f 100644 (file)
@@ -29,6 +29,8 @@
 #include "wx/msgdlg.h"
 #endif
 
+#include "wx/mac/private.h"
+
 #include "wx/mac/printmac.h"
 #include "wx/dcprint.h"
 #include "wx/printdlg.h"
@@ -137,17 +139,18 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
   wxBeginBusyCursor();
 
   wxWindow *win = CreateAbortWindow(parent, printout);
-  wxYield();
+  wxSafeYield(win,true);
 
   if (!win)
   {
     wxEndBusyCursor();
     wxMessageBox("Sorry, could not create an abort dialog.", "Print Error", wxOK, parent);
     delete dc;
+    return FALSE;
   }
   sm_abortWindow = win;
   sm_abortWindow->Show(TRUE);
-  wxYield();
+  wxSafeYield(win,true);
 
   printout->OnBeginPrinting();
   
@@ -178,8 +181,8 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
       {
                GrafPtr thePort ;
                GetPort( &thePort ) ;
-               wxYield() ;
-               SetPort( thePort ) ;
+               wxSafeYield(win,true);
+        SetPort( thePort ) ;
 
         dc->StartPage();
         keepGoing = printout->OnPrintPage(pn);
@@ -273,7 +276,7 @@ void wxMacPrintPreview::DetermineScaling(void)
        
        m_previewPrintout->SetPPIScreen( 72 , 72 ) ;
        m_previewPrintout->SetPPIPrinter( 72 , 72 ) ;
-       m_previewPrintout->SetPageSizeMM( 8 * 25.6 , 11 * 25.6 ) ;
+       m_previewPrintout->SetPageSizeMM( (int) (8.0 * 25.6), (int) (11.0 * 25.6) );
        m_previewPrintout->SetPageSizePixels( 8 * 72 , 11 * 72 ) ;
     m_pageWidth = 8 * 72 ;
     m_pageHeight = 11 * 72 ;
@@ -292,7 +295,10 @@ void wxMacPrintPreview::DetermineScaling(void)
                m_pageWidth = x ;
                m_pageHeight =  y ;
                m_isOk = true ;
-
+       }
+       else
+       {
+         m_isOk = false ;
        }
     // At 100%, the page should look about page-size on the screen.
     // m_previewScale = (float)((float)screenWidth/(float)printerWidth);