Applied patch [ 1208256 ] Fixes bug #1193626 [wxPrintData asserts on or ignores...]
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34401 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -49,6 +49,8 @@ private:
|
|||||||
void* m_devMode;
|
void* m_devMode;
|
||||||
void* m_devNames;
|
void* m_devNames;
|
||||||
|
|
||||||
|
short m_customWindowsPaperId;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_DYNAMIC_CLASS(wxWindowsPrintNativeData)
|
DECLARE_DYNAMIC_CLASS(wxWindowsPrintNativeData)
|
||||||
};
|
};
|
||||||
|
@@ -128,6 +128,7 @@ wxWindowsPrintNativeData::wxWindowsPrintNativeData()
|
|||||||
{
|
{
|
||||||
m_devMode = (void*) NULL;
|
m_devMode = (void*) NULL;
|
||||||
m_devNames = (void*) NULL;
|
m_devNames = (void*) NULL;
|
||||||
|
m_customWindowsPaperId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxWindowsPrintNativeData::~wxWindowsPrintNativeData()
|
wxWindowsPrintNativeData::~wxWindowsPrintNativeData()
|
||||||
@@ -209,6 +210,7 @@ bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
|
|||||||
{
|
{
|
||||||
data.SetPaperId( paper->GetId() );
|
data.SetPaperId( paper->GetId() );
|
||||||
data.SetPaperSize( wxSize(paper->GetWidth() / 10,paper->GetHeight() / 10) );
|
data.SetPaperSize( wxSize(paper->GetWidth() / 10,paper->GetHeight() / 10) );
|
||||||
|
m_customWindowsPaperId = 0;
|
||||||
foundPaperSize = true;
|
foundPaperSize = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -218,6 +220,7 @@ bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
|
|||||||
wxFAIL_MSG(wxT("Paper database wasn't initialized in wxPrintData::ConvertFromNative."));
|
wxFAIL_MSG(wxT("Paper database wasn't initialized in wxPrintData::ConvertFromNative."));
|
||||||
data.SetPaperId( wxPAPER_NONE );
|
data.SetPaperId( wxPAPER_NONE );
|
||||||
data.SetPaperSize( wxSize(0,0) );
|
data.SetPaperSize( wxSize(0,0) );
|
||||||
|
m_customWindowsPaperId = 0;
|
||||||
|
|
||||||
GlobalUnlock(hDevMode);
|
GlobalUnlock(hDevMode);
|
||||||
return false;
|
return false;
|
||||||
@@ -227,18 +230,19 @@ bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
|
|||||||
if (!foundPaperSize && (devMode->dmFields & DM_PAPERWIDTH) && (devMode->dmFields & DM_PAPERLENGTH))
|
if (!foundPaperSize && (devMode->dmFields & DM_PAPERWIDTH) && (devMode->dmFields & DM_PAPERLENGTH))
|
||||||
{
|
{
|
||||||
// DEVMODE is in tenths of a milimeter
|
// DEVMODE is in tenths of a milimeter
|
||||||
data.SetPaperId( wxPAPER_NONE );
|
|
||||||
data.SetPaperSize( wxSize(devMode->dmPaperWidth / 10, devMode->dmPaperLength / 10) );
|
data.SetPaperSize( wxSize(devMode->dmPaperWidth / 10, devMode->dmPaperLength / 10) );
|
||||||
|
data.SetPaperId( wxPAPER_NONE );
|
||||||
|
m_customWindowsPaperId = devMode->dmPaperSize;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Shouldn't really get here
|
// Often will reach this for non-standard paper sizes (sizes which
|
||||||
wxFAIL_MSG(wxT("Couldn't find paper size from DEVMODE."));
|
// wouldn't be in wxWidget's paper database). Setting
|
||||||
data.SetPaperId( wxPAPER_NONE );
|
// m_customWindowsPaperId to devMode->dmPaperSize should be enough
|
||||||
|
// to get this paper size working.
|
||||||
data.SetPaperSize( wxSize(0,0) );
|
data.SetPaperSize( wxSize(0,0) );
|
||||||
|
data.SetPaperId( wxPAPER_NONE );
|
||||||
GlobalUnlock(hDevMode);
|
m_customWindowsPaperId = devMode->dmPaperSize;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//// Duplex
|
//// Duplex
|
||||||
@@ -417,6 +421,9 @@ bool wxWindowsPrintNativeData::TransferFrom( const wxPrintData &data )
|
|||||||
// DEVMODE is in tenths of a milimeter
|
// DEVMODE is in tenths of a milimeter
|
||||||
devMode->dmPaperWidth = (short)(data.GetPaperSize().x * 10);
|
devMode->dmPaperWidth = (short)(data.GetPaperSize().x * 10);
|
||||||
devMode->dmPaperLength = (short)(data.GetPaperSize().y * 10);
|
devMode->dmPaperLength = (short)(data.GetPaperSize().y * 10);
|
||||||
|
if(m_customWindowsPaperId != 0)
|
||||||
|
devMode->dmPaperSize = m_customWindowsPaperId;
|
||||||
|
else
|
||||||
devMode->dmPaperSize = DMPAPER_USER;
|
devMode->dmPaperSize = DMPAPER_USER;
|
||||||
devMode->dmFields |= DM_PAPERWIDTH;
|
devMode->dmFields |= DM_PAPERWIDTH;
|
||||||
devMode->dmFields |= DM_PAPERLENGTH;
|
devMode->dmFields |= DM_PAPERLENGTH;
|
||||||
|
Reference in New Issue
Block a user