// 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);
return DoPreview(p1, p2);
}
-bool wxRichTextPrinting::PrintFile(const wxString& richTextFile)
+bool wxRichTextPrinting::PrintFile(const wxString& richTextFile, bool showPrintDialog)
{
SetRichTextBufferPrinting(new wxRichTextBuffer);
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;
}
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;
}