]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed problem trying to print from a preview, whereby wrong printer
authorJulian Smart <julian@anthemion.co.uk>
Mon, 19 Dec 2005 20:38:47 +0000 (20:38 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Mon, 19 Dec 2005 20:38:47 +0000 (20:38 +0000)
class was used instead of Gnome printer class.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36493 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
src/generic/dcpsg.cpp
src/generic/printps.cpp

index 5ca0e2bdff64cab78665c6d8aa344fa2b476ece1..12e343047cba1724b8a9031a5bc104d3a695fc30 100644 (file)
@@ -52,6 +52,8 @@ wxGTK:
 
 - Fixed problem with choice editor in wxGrid whereby the editor
   lost focus when the combobox menu was shown.
+- Fixed problem trying to print from a preview, whereby wrong printer
+  class was used.
 
 wxMac:
 
index a93dffc55a76f34c9c4e4ecc2aa1c70ff4711f9a..3f7057b564d04ca9a6763a33d5430ccf24d74490 100644 (file)
@@ -1973,9 +1973,9 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string,
         //     it just crashes
 #ifndef __WIN32__
         wxPostScriptPrintNativeData *data =
-            (wxPostScriptPrintNativeData *) m_printData.GetNativeData();
+            wxDynamicCast(m_printData.GetNativeData(), wxPostScriptPrintNativeData);
 
-        if (!data->GetFontMetricPath().empty())
+        if (data && !data->GetFontMetricPath().empty())
         {
             afmName = data->GetFontMetricPath();
             afmName << wxFILE_SEP_PATH << name;
index 3b566ffefaf94d49784f2de14fc28a26ee1019f4..c3fd9a8a61e69be32794abe6498f5482e74b0c25 100644 (file)
@@ -148,12 +148,12 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
     // set by the user
     m_printDialogData.SetMinPage(minPage);
     m_printDialogData.SetMaxPage(maxPage);
-    
+
     if (m_printDialogData.GetFromPage() < minPage)
         m_printDialogData.SetFromPage( minPage );
     if (m_printDialogData.GetToPage() > maxPage)
         m_printDialogData.SetToPage( maxPage );
-    
+
     int
        pagesPerCopy = m_printDialogData.GetToPage()-m_printDialogData.GetFromPage()+1,
        totalPages = pagesPerCopy * m_printDialogData.GetNoCopies(),
@@ -233,13 +233,13 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
 wxDC* wxPostScriptPrinter::PrintDialog(wxWindow *parent)
 {
     wxDC* dc = (wxDC*) NULL;
-    
+
     wxGenericPrintDialog dialog( parent, &m_printDialogData );
     if (dialog.ShowModal() == wxID_OK)
     {
         dc = dialog.GetPrintDC();
         m_printDialogData = dialog.GetPrintDialogData();
-        
+
         if (dc == NULL)
             sm_lastError = wxPRINTER_ERROR;
         else
@@ -265,7 +265,7 @@ bool wxPostScriptPrinter::Setup(wxWindow *WXUNUSED(parent))
     }
 
     dialog->Destroy();
-    
+
     return (ret == wxID_OK);
 #endif
 
@@ -307,7 +307,16 @@ bool wxPostScriptPrintPreview::Print(bool interactive)
 {
     if (!m_printPrintout)
         return false;
+
+    // Assume that on Unix, the preview may use the PostScript
+    // (generic) version, but printing using the native system is required.
+    // TODO: make a generic print preview class from which wxPostScriptPrintPreview
+    // is derived.
+#ifdef __UNIX__
+    wxPrinter printer(& m_printDialogData);
+#else
     wxPostScriptPrinter printer(& m_printDialogData);
+#endif
     return printer.Print(m_previewFrame, m_printPrintout, interactive);
 }