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:
Julian Smart 2005-07-18 14:39:54 +00:00
parent 822fc19ef0
commit fde0548028

View File

@ -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;
}