X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/57bd4c6031d438f11af0ec540136f49a928b923c..b356aa554a82f4d82f0c12abb83eb4656204fe7a:/src/common/paper.cpp diff --git a/src/common/paper.cpp b/src/common/paper.cpp index bc29b2acc1..f301fd01c2 100644 --- a/src/common/paper.cpp +++ b/src/common/paper.cpp @@ -79,7 +79,7 @@ WX_DECLARE_LIST(wxPrintPaperType, wxPrintPaperTypeList); #include "wx/listimpl.cpp" WX_DEFINE_LIST(wxPrintPaperTypeList) -wxPrintPaperDatabase* wxThePrintPaperDatabase = (wxPrintPaperDatabase*) NULL; +wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL; wxPrintPaperDatabase::wxPrintPaperDatabase() { @@ -274,13 +274,15 @@ wxPrintPaperType *wxPrintPaperDatabase::FindPaperTypeByPlatformId(int id) wxPrintPaperType *wxPrintPaperDatabase::FindPaperType(const wxSize& sz) { - typedef wxStringToPrintPaperTypeHashMap::iterator iterator; - - for (iterator it = m_map->begin(), en = m_map->end(); it != en; ++it) + // Take the item ordering into account so that the more common types + // are likely to be taken into account first. This fixes problems with, + // for example, Letter reverting to A4 in the page setup dialog because + // it was wrongly translated to Note. + for ( size_t i = 0; i < GetCount(); i++ ) { - wxPrintPaperType* paperType = it->second; - wxSize paperSize = paperType->GetSize() ; - if ( abs( paperSize.x - sz.x ) < 10 && abs( paperSize.y - sz.y ) < 10 ) + wxPrintPaperType* const paperType = Item(i); + const wxSize paperSize = paperType->GetSize() ; + if ( abs(paperSize.x - sz.x) < 10 && abs(paperSize.y - sz.y) < 10 ) return paperType; }