Patch from Andre Reitz to correct a couple of bugs
1. Error when fetching papersize from dev-mode somebody changed if {...} else if {...} else {...} to: ............. if {...} else {...} 2. Error when getting bin from devmode: - no translation to wxPRINTBIN_... constants when getting from devMode->dmDefaultSource - but: translation when setting to devMode->dmDefaultSource git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34884 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
822fc19ef0
commit
fde0548028
@ -176,8 +176,33 @@ bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
|
||||
if (devMode->dmFields & DM_COPIES)
|
||||
data.SetNoCopies( devMode->dmCopies );
|
||||
|
||||
if (devMode->dmFields & DM_DEFAULTSOURCE)
|
||||
data.SetBin( (wxPrintBin)devMode->dmDefaultSource );
|
||||
//// Bin
|
||||
if (devMode->dmFields & DM_DEFAULTSOURCE) {
|
||||
switch (devMode->dmDefaultSource) {
|
||||
case DMBIN_ONLYONE : data.SetBin(wxPRINTBIN_ONLYONE ); break;
|
||||
case DMBIN_LOWER : data.SetBin(wxPRINTBIN_LOWER ); break;
|
||||
case DMBIN_MIDDLE : data.SetBin(wxPRINTBIN_MIDDLE ); break;
|
||||
case DMBIN_MANUAL : data.SetBin(wxPRINTBIN_MANUAL ); break;
|
||||
case DMBIN_ENVELOPE : data.SetBin(wxPRINTBIN_ENVELOPE ); break;
|
||||
case DMBIN_ENVMANUAL : data.SetBin(wxPRINTBIN_ENVMANUAL ); break;
|
||||
case DMBIN_AUTO : data.SetBin(wxPRINTBIN_AUTO ); break;
|
||||
case DMBIN_TRACTOR : data.SetBin(wxPRINTBIN_TRACTOR ); break;
|
||||
case DMBIN_SMALLFMT : data.SetBin(wxPRINTBIN_SMALLFMT ); break;
|
||||
case DMBIN_LARGEFMT : data.SetBin(wxPRINTBIN_LARGEFMT ); break;
|
||||
case DMBIN_LARGECAPACITY : data.SetBin(wxPRINTBIN_LARGECAPACITY ); break;
|
||||
case DMBIN_CASSETTE : data.SetBin(wxPRINTBIN_CASSETTE ); break;
|
||||
case DMBIN_FORMSOURCE : data.SetBin(wxPRINTBIN_FORMSOURCE ); break;
|
||||
default:
|
||||
if (devMode->dmDefaultSource>=DMBIN_USER) {
|
||||
data.SetBin((wxPrintBin)((devMode->dmDefaultSource)-DMBIN_USER+(int)wxPRINTBIN_USER));
|
||||
} else {
|
||||
data.SetBin(wxPRINTBIN_DEFAULT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
data.SetBin(wxPRINTBIN_DEFAULT);
|
||||
}
|
||||
|
||||
//// Printer name
|
||||
if (devMode->dmDeviceName[0] != 0)
|
||||
@ -228,22 +253,24 @@ bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
|
||||
}
|
||||
}
|
||||
|
||||
if (!foundPaperSize && (devMode->dmFields & DM_PAPERWIDTH) && (devMode->dmFields & DM_PAPERLENGTH))
|
||||
{
|
||||
// DEVMODE is in tenths of a milimeter
|
||||
data.SetPaperSize( wxSize(devMode->dmPaperWidth / 10, devMode->dmPaperLength / 10) );
|
||||
data.SetPaperId( wxPAPER_NONE );
|
||||
m_customWindowsPaperId = devMode->dmPaperSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Often will reach this for non-standard paper sizes (sizes which
|
||||
// wouldn't be in wxWidget's paper database). Setting
|
||||
// m_customWindowsPaperId to devMode->dmPaperSize should be enough
|
||||
// to get this paper size working.
|
||||
data.SetPaperSize( wxSize(0,0) );
|
||||
data.SetPaperId( wxPAPER_NONE );
|
||||
m_customWindowsPaperId = devMode->dmPaperSize;
|
||||
if (!foundPaperSize) {
|
||||
if ((devMode->dmFields & DM_PAPERWIDTH) && (devMode->dmFields & DM_PAPERLENGTH))
|
||||
{
|
||||
// DEVMODE is in tenths of a millimeter
|
||||
data.SetPaperSize( wxSize(devMode->dmPaperWidth / 10, devMode->dmPaperLength / 10) );
|
||||
data.SetPaperId( wxPAPER_NONE );
|
||||
m_customWindowsPaperId = devMode->dmPaperSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Often will reach this for non-standard paper sizes (sizes which
|
||||
// wouldn't be in wxWidget's paper database). Setting
|
||||
// m_customWindowsPaperId to devMode->dmPaperSize should be enough
|
||||
// to get this paper size working.
|
||||
data.SetPaperSize( wxSize(0,0) );
|
||||
data.SetPaperId( wxPAPER_NONE );
|
||||
m_customWindowsPaperId = devMode->dmPaperSize;
|
||||
}
|
||||
}
|
||||
|
||||
//// Duplex
|
||||
@ -518,7 +545,7 @@ bool wxWindowsPrintNativeData::TransferFrom( const wxPrintData &data )
|
||||
case wxPRINTBIN_FORMSOURCE: devMode->dmDefaultSource = DMBIN_FORMSOURCE; break;
|
||||
|
||||
default:
|
||||
devMode->dmDefaultSource = (short)(DMBIN_USER + data.GetBin() - wxPRINTBIN_USER);
|
||||
devMode->dmDefaultSource = (short)(DMBIN_USER + data.GetBin() - wxPRINTBIN_USER); // 256 + data.GetBin() - 14 = 242 + data.GetBin()
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user