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)
|
if (devMode->dmFields & DM_COPIES)
|
||||||
data.SetNoCopies( devMode->dmCopies );
|
data.SetNoCopies( devMode->dmCopies );
|
||||||
|
|
||||||
if (devMode->dmFields & DM_DEFAULTSOURCE)
|
//// Bin
|
||||||
data.SetBin( (wxPrintBin)devMode->dmDefaultSource );
|
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
|
//// Printer name
|
||||||
if (devMode->dmDeviceName[0] != 0)
|
if (devMode->dmDeviceName[0] != 0)
|
||||||
@ -228,22 +253,24 @@ bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!foundPaperSize && (devMode->dmFields & DM_PAPERWIDTH) && (devMode->dmFields & DM_PAPERLENGTH))
|
if (!foundPaperSize) {
|
||||||
{
|
if ((devMode->dmFields & DM_PAPERWIDTH) && (devMode->dmFields & DM_PAPERLENGTH))
|
||||||
// DEVMODE is in tenths of a milimeter
|
{
|
||||||
data.SetPaperSize( wxSize(devMode->dmPaperWidth / 10, devMode->dmPaperLength / 10) );
|
// DEVMODE is in tenths of a millimeter
|
||||||
data.SetPaperId( wxPAPER_NONE );
|
data.SetPaperSize( wxSize(devMode->dmPaperWidth / 10, devMode->dmPaperLength / 10) );
|
||||||
m_customWindowsPaperId = devMode->dmPaperSize;
|
data.SetPaperId( wxPAPER_NONE );
|
||||||
}
|
m_customWindowsPaperId = devMode->dmPaperSize;
|
||||||
else
|
}
|
||||||
{
|
else
|
||||||
// Often will reach this for non-standard paper sizes (sizes which
|
{
|
||||||
// wouldn't be in wxWidget's paper database). Setting
|
// Often will reach this for non-standard paper sizes (sizes which
|
||||||
// m_customWindowsPaperId to devMode->dmPaperSize should be enough
|
// wouldn't be in wxWidget's paper database). Setting
|
||||||
// to get this paper size working.
|
// m_customWindowsPaperId to devMode->dmPaperSize should be enough
|
||||||
data.SetPaperSize( wxSize(0,0) );
|
// to get this paper size working.
|
||||||
data.SetPaperId( wxPAPER_NONE );
|
data.SetPaperSize( wxSize(0,0) );
|
||||||
m_customWindowsPaperId = devMode->dmPaperSize;
|
data.SetPaperId( wxPAPER_NONE );
|
||||||
|
m_customWindowsPaperId = devMode->dmPaperSize;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//// Duplex
|
//// Duplex
|
||||||
@ -518,7 +545,7 @@ bool wxWindowsPrintNativeData::TransferFrom( const wxPrintData &data )
|
|||||||
case wxPRINTBIN_FORMSOURCE: devMode->dmDefaultSource = DMBIN_FORMSOURCE; break;
|
case wxPRINTBIN_FORMSOURCE: devMode->dmDefaultSource = DMBIN_FORMSOURCE; break;
|
||||||
|
|
||||||
default:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user