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 - Fixed problem with choice editor in wxGrid whereby the editor
lost focus when the combobox menu was shown. lost focus when the combobox menu was shown.
- Fixed problem trying to print from a preview, whereby wrong printer
class was used.
wxMac: wxMac:

View File

@@ -1973,9 +1973,9 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string,
// it just crashes // it just crashes
#ifndef __WIN32__ #ifndef __WIN32__
wxPostScriptPrintNativeData *data = wxPostScriptPrintNativeData *data =
(wxPostScriptPrintNativeData *) m_printData.GetNativeData(); wxDynamicCast(m_printData.GetNativeData(), wxPostScriptPrintNativeData);
if (!data->GetFontMetricPath().empty()) if (data && !data->GetFontMetricPath().empty())
{ {
afmName = data->GetFontMetricPath(); afmName = data->GetFontMetricPath();
afmName << wxFILE_SEP_PATH << name; afmName << wxFILE_SEP_PATH << name;

View File

@@ -148,12 +148,12 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
// set by the user // set by the user
m_printDialogData.SetMinPage(minPage); m_printDialogData.SetMinPage(minPage);
m_printDialogData.SetMaxPage(maxPage); m_printDialogData.SetMaxPage(maxPage);
if (m_printDialogData.GetFromPage() < minPage) if (m_printDialogData.GetFromPage() < minPage)
m_printDialogData.SetFromPage( minPage ); m_printDialogData.SetFromPage( minPage );
if (m_printDialogData.GetToPage() > maxPage) if (m_printDialogData.GetToPage() > maxPage)
m_printDialogData.SetToPage( maxPage ); m_printDialogData.SetToPage( maxPage );
int int
pagesPerCopy = m_printDialogData.GetToPage()-m_printDialogData.GetFromPage()+1, pagesPerCopy = m_printDialogData.GetToPage()-m_printDialogData.GetFromPage()+1,
totalPages = pagesPerCopy * m_printDialogData.GetNoCopies(), totalPages = pagesPerCopy * m_printDialogData.GetNoCopies(),
@@ -233,13 +233,13 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
wxDC* wxPostScriptPrinter::PrintDialog(wxWindow *parent) wxDC* wxPostScriptPrinter::PrintDialog(wxWindow *parent)
{ {
wxDC* dc = (wxDC*) NULL; wxDC* dc = (wxDC*) NULL;
wxGenericPrintDialog dialog( parent, &m_printDialogData ); wxGenericPrintDialog dialog( parent, &m_printDialogData );
if (dialog.ShowModal() == wxID_OK) if (dialog.ShowModal() == wxID_OK)
{ {
dc = dialog.GetPrintDC(); dc = dialog.GetPrintDC();
m_printDialogData = dialog.GetPrintDialogData(); m_printDialogData = dialog.GetPrintDialogData();
if (dc == NULL) if (dc == NULL)
sm_lastError = wxPRINTER_ERROR; sm_lastError = wxPRINTER_ERROR;
else else
@@ -265,7 +265,7 @@ bool wxPostScriptPrinter::Setup(wxWindow *WXUNUSED(parent))
} }
dialog->Destroy(); dialog->Destroy();
return (ret == wxID_OK); return (ret == wxID_OK);
#endif #endif
@@ -307,7 +307,16 @@ bool wxPostScriptPrintPreview::Print(bool interactive)
{ {
if (!m_printPrintout) if (!m_printPrintout)
return false; 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); wxPostScriptPrinter printer(& m_printDialogData);
#endif
return printer.Print(m_previewFrame, m_printPrintout, interactive); return printer.Print(m_previewFrame, m_printPrintout, interactive);
} }