From 4dc55027531c688d9eebb88485b4789a143aa2cb Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 20 Jul 2003 18:40:24 +0000 Subject: [PATCH] fixed suppressing of wxFontMapper questions which was broken by GUI/base separation changes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22155 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/fontmap.h | 7 +++++++ src/common/fmapbase.cpp | 16 +++++++++++++++- src/common/fontmap.cpp | 13 +++++++++---- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/include/wx/fontmap.h b/include/wx/fontmap.h index f13cf47a50..7e3481db5b 100644 --- a/include/wx/fontmap.h +++ b/include/wx/fontmap.h @@ -141,6 +141,13 @@ protected: wxString m_configRootPath; #endif // wxUSE_CONFIG + // the real implementation of the base class version of CharsetToEncoding() + // + // returns wxFONTENCODING_UNKNOWN if encoding is unknown and we shouldn't + // ask the user about it, wxFONTENCODING_SYSTEM if it is unknown but we + // should/could ask the user + int NonInteractiveCharsetToEncoding(const wxString& charset); + private: // the global fontmapper object or NULL static wxFontMapper *sm_instance; diff --git a/src/common/fmapbase.cpp b/src/common/fmapbase.cpp index f39c95e01d..b49754d7f9 100644 --- a/src/common/fmapbase.cpp +++ b/src/common/fmapbase.cpp @@ -362,6 +362,20 @@ void wxFontMapperBase::RestorePath(const wxString& pathOld) wxFontEncoding wxFontMapperBase::CharsetToEncoding(const wxString& charset, bool WXUNUSED(interactive)) +{ + int enc = NonInteractiveCharsetToEncoding(charset); + if ( enc == wxFONTENCODING_UNKNOWN ) + { + // we should return wxFONTENCODING_SYSTEM from here for unknown + // encodings + enc = wxFONTENCODING_SYSTEM; + } + + return (wxFontEncoding)enc; +} + +int +wxFontMapperBase::NonInteractiveCharsetToEncoding(const wxString& charset) { wxFontEncoding encoding = wxFONTENCODING_SYSTEM; @@ -382,7 +396,7 @@ wxFontMapperBase::CharsetToEncoding(const wxString& charset, if ( value == wxFONTENCODING_UNKNOWN ) { // don't try to find it, in particular don't ask the user - return wxFONTENCODING_SYSTEM; + return value; } if ( value >= 0 && value <= wxFONTENCODING_MAX ) diff --git a/src/common/fontmap.cpp b/src/common/fontmap.cpp index 4df6f648b1..ed0b001b0d 100644 --- a/src/common/fontmap.cpp +++ b/src/common/fontmap.cpp @@ -108,11 +108,16 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset, bool interactive) { // try the ways not needing the users intervention first - wxFontEncoding - encoding = wxFontMapperBase::CharsetToEncoding(charset, interactive); + int encoding = wxFontMapperBase::NonInteractiveCharsetToEncoding(charset); // if we failed to find the encoding, ask the user -- unless disabled - if ( (encoding == wxFONTENCODING_SYSTEM) && interactive ) + if ( encoding == wxFONTENCODING_UNKNOWN ) + { + // this is the special value which disables asking the user (he had + // chosen to suppress this the last time) + encoding = wxFONTENCODING_SYSTEM; + } + else if ( (encoding == wxFONTENCODING_SYSTEM) && interactive ) { // prepare the dialog data @@ -171,7 +176,7 @@ wxFontMapper::CharsetToEncoding(const wxString& charset, bool interactive) #endif // wxUSE_CONFIG } - return encoding; + return (wxFontEncoding)encoding; } // ---------------------------------------------------------------------------- -- 2.45.2