]> git.saurik.com Git - wxWidgets.git/blobdiff - src/richtext/richtextprint.cpp
Fixed inconsistent calculation of line height in paragraph layout
[wxWidgets.git] / src / richtext / richtextprint.cpp
index b491ac947b33b9a94581d0e4314f6ea3cb4fe36a..55c0dbf8cfb6485eb9924dfa6b16ad7f6b0f259b 100644 (file)
@@ -345,8 +345,8 @@ void wxRichTextPrintout::CalculateScaling(wxDC* dc, wxRect& textRect, wxRect& he
 
     // The dimensions used for indentation etc. have to be unscaled
     // during printing to be correct when scaling is applied.
-    // if (!IsPreview())
-        m_richTextBuffer->SetScale(scale);
+    // Also, correct the conversions in wxRTC using DC instead of print DC.
+    m_richTextBuffer->SetScale(scale * float(dc->GetPPI().x)/float(ppiPrinterX));
 
     // Calculate margins
     int marginLeft = wxRichTextObject::ConvertTenthsMMToPixels(ppiPrinterX, m_marginLeft);
@@ -537,7 +537,7 @@ bool wxRichTextPrinting::PreviewBuffer(const wxRichTextBuffer& buffer)
     return DoPreview(p1, p2);
 }
 
-bool wxRichTextPrinting::PrintFile(const wxString& richTextFile)
+bool wxRichTextPrinting::PrintFile(const wxString& richTextFile, bool showPrintDialog)
 {
     SetRichTextBufferPrinting(new wxRichTextBuffer);
 
@@ -550,19 +550,19 @@ bool wxRichTextPrinting::PrintFile(const wxString& richTextFile)
     wxRichTextPrintout *p = CreatePrintout();
     p->SetRichTextBuffer(m_richTextBufferPrinting);
 
-    bool ret = DoPrint(p);
+    bool ret = DoPrint(p, showPrintDialog);
     delete p;
     return ret;
 }
 
-bool wxRichTextPrinting::PrintBuffer(const wxRichTextBuffer& buffer)
+bool wxRichTextPrinting::PrintBuffer(const wxRichTextBuffer& buffer, bool showPrintDialog)
 {
     SetRichTextBufferPrinting(new wxRichTextBuffer(buffer));
 
     wxRichTextPrintout *p = CreatePrintout();
     p->SetRichTextBuffer(m_richTextBufferPrinting);
 
-    bool ret = DoPrint(p);
+    bool ret = DoPrint(p, showPrintDialog);
     delete p;
     return ret;
 }
@@ -587,12 +587,12 @@ bool wxRichTextPrinting::DoPreview(wxRichTextPrintout *printout1, wxRichTextPrin
     return true;
 }
 
-bool wxRichTextPrinting::DoPrint(wxRichTextPrintout *printout)
+bool wxRichTextPrinting::DoPrint(wxRichTextPrintout *printout, bool showPrintDialog)
 {
     wxPrintDialogData printDialogData(*GetPrintData());
     wxPrinter printer(&printDialogData);
 
-    if (!printer.Print(m_parentWindow, printout, true))
+    if (!printer.Print(m_parentWindow, printout, showPrintDialog))
     {
         return false;
     }