Fixed problem trying to print from a preview, whereby wrong printer

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
This commit is contained in:
Julian Smart
2005-12-19 20:38:47 +00:00
parent 0b6d76bfd4
commit 398c701f70
3 changed files with 18 additions and 7 deletions

View 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:

View 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;

View 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);
}