From a23692f070dc2682defb005bd7287ad18091732a Mon Sep 17 00:00:00 2001
From: David Webster <Dave.Webster@bhmi.com>
Date: Mon, 19 Aug 2002 02:28:02 +0000
Subject: [PATCH] Weekly catchup as well as better font and fontdlg support

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16595 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 src/os2/app.cpp      |  7 ++--
 src/os2/font.cpp     | 21 ++++++----
 src/os2/fontdlg.cpp  |  4 +-
 src/os2/fontutil.cpp | 35 +++++++++-------
 src/os2/toplevel.cpp | 42 ++++++++++++++++---
 src/os2/utils.cpp    | 20 ++++-----
 src/os2/window.cpp   | 57 ++++++++++++++++++--------
 src/os2/wx23.def     | 97 ++++++++++++++++++++++++++++++++++++--------
 8 files changed, 207 insertions(+), 76 deletions(-)

diff --git a/src/os2/app.cpp b/src/os2/app.cpp
index 1e1a4a4456..f6b538d15a 100644
--- a/src/os2/app.cpp
+++ b/src/os2/app.cpp
@@ -683,7 +683,6 @@ wxApp::wxApp()
     argc = 0;
     argv = NULL;
     m_nPrintMode = wxPRINT_WINDOWS;
-    m_exitOnFrameDelete = TRUE;
     m_bAuto3D = TRUE;
     m_hMq = 0;
     m_maxSocketHandles = 0;
@@ -859,13 +858,13 @@ bool wxApp::ProcessIdle()
 
 void wxApp::ExitMainLoop()
 {
-    m_bKeepGoing = FALSE;
-}
+    ::WinPostMsg(NULL, WM_QUIT, 0, 0);
+} // end of wxApp::ExitMainLoop
 
 bool wxApp::Pending()
 {
     return (::WinPeekMsg(vHabmain, (PQMSG)&svCurrentMsg, (HWND)NULL, 0, 0, PM_NOREMOVE) != 0);
-}
+} // end of wxApp::Pending
 
 void wxApp::Dispatch()
 {
diff --git a/src/os2/font.cpp b/src/os2/font.cpp
index 1429413d81..de67ef4211 100644
--- a/src/os2/font.cpp
+++ b/src/os2/font.cpp
@@ -348,14 +348,19 @@ void wxFontRefData::Init(
     m_bNativeFontInfoOk = TRUE;
     m_vNativeFontInfo = rInfo;
 
-    if (m_hPS == NULLHANDLE)
+    if (hPS == NULLHANDLE)
     {
         m_hPS = ::WinGetPS(HWND_DESKTOP);
         m_bInternalPS = TRUE;
     }
     else
         m_hPS = (HPS)hPS;
-}
+
+    m_nFontId     = 0;
+    m_bTemporary  = FALSE;
+    m_pFM         = (PFONTMETRICS)NULL;
+    m_nNumFonts   = 0;
+} // end of wxFontRefData::Init
 
 wxFontRefData::~wxFontRefData()
 {
@@ -449,11 +454,11 @@ bool wxFontRefData::Alloc(
     else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System Monospaced") == 0)
         m_nFamily = wxTELETYPE;
     else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System VIO") == 0)
-        m_nFamily = wxTELETYPE;
+        m_nFamily = wxDEFAULT;
     else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System Proportional") == 0)
         m_nFamily = wxMODERN;
     else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Arial") == 0)
-        m_nFamily = wxMODERN;
+        m_nFamily = wxSWISS;
     else
         m_nFamily = wxSWISS;
 
@@ -608,11 +613,11 @@ wxFontFamily wxNativeFontInfo::GetFamily() const
     else if (strcmp(fm.szFamilyname, "System Monospaced") == 0)
         nFamily = wxTELETYPE;
     else if (strcmp(fm.szFamilyname, "System VIO") == 0)
-        nFamily = wxTELETYPE;
+        nFamily = wxDEFAULT;
     else if (strcmp(fm.szFamilyname, "System Proportional") == 0)
         nFamily = wxMODERN;
     else if (strcmp(fm.szFamilyname, "Arial") == 0)
-        nFamily = wxMODERN;
+        nFamily = wxSWISS;
     else
         nFamily = wxSWISS;
     return (wxFontFamily)nFamily;
@@ -714,7 +719,7 @@ void wxNativeFontInfo::SetFamily(
             break;
 
         case wxMODERN:
-            sFacename = wxT("Arial") ;
+            sFacename = wxT("Courier New") ;
             break;
 
         case wxSWISS:
@@ -723,7 +728,7 @@ void wxNativeFontInfo::SetFamily(
 
         case wxDEFAULT:
         default:
-            sFacename = wxT("System Proportional") ;
+            sFacename = wxT("System VIO") ;
     }
 
     if (!wxStrlen(fa.szFacename) )
diff --git a/src/os2/fontdlg.cpp b/src/os2/fontdlg.cpp
index 1cb0f7981b..9b796e6527 100644
--- a/src/os2/fontdlg.cpp
+++ b/src/os2/fontdlg.cpp
@@ -81,14 +81,16 @@ int wxFontDialog::ShowModal()
         // Debugging
         //
         wxFont                      vChosenFont(vInfo);
+
         int                         nFamily;
-        int                         nPointSize;
+        int                         nPointSize = vFontDlg.lEmHeight;
         int                         nStyle;
         int                         nWeight;
         bool                        bUnderlined;
         wxString                    sFaceName;
         wxNativeFontInfo*           pInfo;
 
+        vChosenFont.SetPointSize(nPointSize);
         nFamily = vChosenFont.GetFamily();
         nPointSize = vChosenFont.GetPointSize();
         nStyle = vChosenFont.GetStyle();
diff --git a/src/os2/fontutil.cpp b/src/os2/fontutil.cpp
index d8560ba678..069b7d7f68 100644
--- a/src/os2/fontutil.cpp
+++ b/src/os2/fontutil.cpp
@@ -288,7 +288,7 @@ void wxFillLogFont(
     // Determine the number of fonts.
     //
     if((lNumFonts = ::GpiQueryFonts( *phPS
-                                    ,QF_PUBLIC
+                                    ,QF_PUBLIC | QF_PRIVATE
                                     ,NULL
                                     ,&lTemp
                                     ,(LONG) sizeof(FONTMETRICS)
@@ -335,7 +335,8 @@ void wxFillLogFont(
     pFattrs->lMatch = 0;
 
     pFaceName->usSize = sizeof(FACENAMEDESC);
-    pFaceName->usWidthClass = FWIDTH_NORMAL;
+    pFaceName->usWeightClass = FWEIGHT_DONT_CARE;
+    pFaceName->usWidthClass = FWIDTH_DONT_CARE;
     pFaceName->usReserved = 0;
     pFaceName->flOptions = 0;
 
@@ -465,7 +466,7 @@ void wxOS2SelectMatchingFontByName(
             break;
 
         case wxMODERN:
-            sFaceName = wxT("Arial") ;
+            sFaceName = wxT("Courier New") ;
             break;
 
         case wxSWISS:
@@ -474,7 +475,7 @@ void wxOS2SelectMatchingFontByName(
 
         case wxDEFAULT:
         default:
-            sFaceName = wxT("System Proportional") ;
+            sFaceName = wxT("System VIO") ;
     }
 
     switch (pFont->GetWeight())
@@ -532,7 +533,7 @@ void wxOS2SelectMatchingFontByName(
         int                         nEmHeight = 0;
         int                         nXHeight = 0;
 
-        anDiff[0] = wxGpiStrcmp(pFM[i].szFamilyname, zFontFaceName);
+        anDiff[0] = wxGpiStrcmp(pFM[i].szFacename, zFontFaceName);
         anDiff[1] = abs(pFM[i].lEmHeight - nPointSize);
         anDiff[2] = abs(pFM[i].usWeightClass -  usWeightClass);
         anDiff[3] = abs((pFM[i].fsSelection & 0x2f) -  fsSelection);
@@ -600,16 +601,20 @@ void wxOS2SelectMatchingFontByName(
     //
     // Fill in the FATTRS with the best match from FONTMETRICS
     //
-    pFattrs->usRecordLength = sizeof(FATTRS);            // sets size of structure
-    pFattrs->fsSelection    = pFM[nIndex].fsSelection; // uses default selection
-    pFattrs->lMatch         = pFM[nIndex].lMatch;      // force match
-    pFattrs->idRegistry     = pFM[nIndex].idRegistry;  // uses default registry
-    pFattrs->usCodePage     = pFM[nIndex].usCodePage;  // code-page
-    pFattrs->lMaxBaselineExt = 0;   // OUTLINE fonts need this set to 0 as they use other attributes to match
-    pFattrs->lAveCharWidth   = 0;   // OUTLINE fonts need this set to 0 as they use other attributes to match
-    pFattrs->fsType    = 0;// pfm->fsType;              /* uses default type       */
-    pFattrs->fsFontUse = 0;
-
+    pFattrs->usRecordLength  = sizeof(FATTRS);              // Sets size of structure
+    pFattrs->fsSelection     = pFM[nIndex].fsSelection;     // Uses default selection
+    pFattrs->lMatch          = pFM[nIndex].lMatch;          // Force match
+    pFattrs->idRegistry      = pFM[nIndex].idRegistry;      // Uses default registry
+    pFattrs->usCodePage      = pFM[nIndex].usCodePage;      // Code-page
+    pFattrs->fsType          = 0;          // Uses default type
+    pFattrs->lMaxBaselineExt = 0;
+    pFattrs->lAveCharWidth   = 0;
+    pFattrs->fsFontUse       = FATTR_FONTUSE_OUTLINE |      // only outline fonts allowed
+                               FATTR_FONTUSE_TRANSFORMABLE; // may be transformed
+#if 0
+    pFattrs->lMaxBaselineExt = pFM[nIndex].lMaxBaselineExt;
+    pFattrs->lAveCharWidth   = pFM[nIndex].lAveCharWidth;
+#endif
     wxStrcpy(pFattrs->szFacename, pFM[nIndex].szFacename);
     // Debug
     strcpy(zFontFaceName, pFM[nIndex].szFacename);
diff --git a/src/os2/toplevel.cpp b/src/os2/toplevel.cpp
index 237037106b..834fe8af40 100644
--- a/src/os2/toplevel.cpp
+++ b/src/os2/toplevel.cpp
@@ -592,20 +592,50 @@ bool wxTopLevelWindowOS2::Create(
 
 wxTopLevelWindowOS2::~wxTopLevelWindowOS2()
 {
-    wxTopLevelWindows.DeleteObject(this);
+    if (this == m_spHiddenParent)
+    {
+        //
+        // Stop [infinite] recursion which would otherwise happen when we do
+        // "delete ms_hiddenParent" below -- and we're not interested in doing
+        // anything of the rest below for that window because the rest of
+        // wxWindows doesn't even know about it
+        //
+        return;
+    }
 
     if (wxModelessWindows.Find(this))
         wxModelessWindows.DeleteObject(this);
 
     //
-    // If this is the last top-level window, exit.
+    // After destroying an owned window, Windows activates the next top level
+    // window in Z order but it may be different from our owner (to reproduce
+    // this simply Alt-TAB to another application and back before closing the
+    // owned frame) whereas we always want to yield activation to our parent
+    //
+    if (HasFlag(wxFRAME_FLOAT_ON_PARENT))
+    {
+        wxWindow*                   pParent = GetParent();
+
+        if (pParent)
+        {
+            ::WinSetWindowPos( GetHwndOf(pParent)
+                              ,HWND_TOP
+                              ,0, 0, 0, 0
+                              ,SWP_ZORDER
+                             );
+        }
+    }
+
+    //
+    // If this is the last top-level window, we're going to exit and we should
+    // delete ms_hiddenParent now to avoid leaking it
     //
-    if (wxTheApp && (wxTopLevelWindows.Number() == 0))
+    if (IsLastBeforeExit())
     {
-        wxTheApp->SetTopWindow(NULL);
-        if ( wxTheApp->GetExitOnFrameDelete() )
+        if (m_spHiddenParent)
         {
-            ::WinPostMsg(NULL, WM_QUIT, 0, 0);
+            delete m_spHiddenParent;
+            m_spHiddenParent = NULL;
         }
     }
 } // end of wxTopLevelWindowOS2::~wxTopLevelWindowOS2
diff --git a/src/os2/utils.cpp b/src/os2/utils.cpp
index 1475bbef3d..6710cdf97c 100644
--- a/src/os2/utils.cpp
+++ b/src/os2/utils.cpp
@@ -198,7 +198,7 @@ bool wxShell(
     return (rc != 0);
 }
 
-// Shutdown or reboot the PC 
+// Shutdown or reboot the PC
 bool wxShutdown(wxShutdownFlags wFlags)
 {
     // TODO
@@ -1232,7 +1232,7 @@ void wxOS2SetFont(
         return;
 
     //
-    // The fonts available for Presentation Params are just three
+    // The fonts available for Presentation Params are just a few
     // outline fonts, the rest are available to the GPI, so we must
     // map the families to one of these three
     //
@@ -1243,25 +1243,25 @@ void wxOS2SetFont(
             break;
 
         case wxDECORATIVE:
+            strcpy(zFacename, "WarpSans");
+            break;
+
         case wxROMAN:
-            strcpy(zFacename,"Tms Rmn");
+            strcpy(zFacename,"Times New Roman");
             break;
 
         case wxTELETYPE:
-            strcpy(zFacename, "Courier");
+            strcpy(zFacename, "Courier New");
             break;
 
         case wxMODERN:
-            strcpy(zFacename, "System VIO");
-            break;
-
-        case wxSWISS:
-            strcpy(zFacename, "Helv");
+            strcpy(zFacename, "Courier New");
             break;
 
         case wxDEFAULT:
         default:
-            strcpy(zFacename, "System VIO");
+        case wxSWISS:
+            strcpy(zFacename, "Helvetica");
             break;
     }
 
diff --git a/src/os2/window.cpp b/src/os2/window.cpp
index f7fcfaead5..87e89399f7 100644
--- a/src/os2/window.cpp
+++ b/src/os2/window.cpp
@@ -442,19 +442,15 @@ bool wxWindowOS2::Create(
     // Generic OS/2 Windows have no Control Data but other classes
     // that call OS2Create may have some.
     //
-    bool                            bRetVal = OS2Create( (PSZ)wxCanvasClassName
-                                                        ,rName.c_str()
-                                                        ,ulCreateFlags
-                                                        ,rPos
-                                                        ,rSize
-                                                        ,NULL         // Control Data
-                                                        ,dwExStyle
-                                                        ,TRUE         // Child
-                                                       );
-
-    if (bRetVal)
-        ::WinSubclassWindow(m_hWnd, (PFNWP)wxWndProc);
-    return(bRetVal);
+    return(OS2Create( (PSZ)wxCanvasClassName
+                     ,rName.c_str()
+                     ,ulCreateFlags
+                     ,rPos
+                     ,rSize
+                     ,NULL         // Control Data
+                     ,dwExStyle
+                     ,TRUE         // Child
+                    ));
 } // end of wxWindowOS2::Create
 
 // ---------------------------------------------------------------------------
@@ -3311,7 +3307,7 @@ bool wxWindowOS2::HandleSetFocus(
 } // end of wxWindowOS2::HandleSetFocus
 
 bool wxWindowOS2::HandleKillFocus(
-  WXHWND                            WXUNUSED(hWnd)
+  WXHWND                            hWnd
 )
 {
 #if wxUSE_CARET
@@ -3324,11 +3320,38 @@ bool wxWindowOS2::HandleKillFocus(
     }
 #endif // wxUSE_CARET
 
+#if wxUSE_TEXTCTRL
+    // 
+    // If it's a wxTextCtrl don't send the event as it will be done
+    // after the control gets to process it.
+    //
+    wxTextCtrl*                     pCtrl = wxDynamicCastThis(wxTextCtrl);
+
+    if (pCtrl)
+    {
+        return FALSE;
+    }
+#endif
+
+    // 
+    // Don't send the event when in the process of being deleted.  This can
+    // only cause problems if the event handler tries to access the object.
+    //
+    if ( m_isBeingDeleted )
+    {
+        return FALSE;
+    }
+
     wxFocusEvent                    vEvent( wxEVT_KILL_FOCUS
                                            ,m_windowId
                                           );
 
     vEvent.SetEventObject(this);
+
+    // 
+    // wxFindWinFromHandle() may return NULL, it is ok
+    //
+    vEvent.SetWindow(wxFindWinFromHandle(hWnd));
     return GetEventHandler()->ProcessEvent(vEvent);
 } // end of wxWindowOS2::HandleKillFocus
 
@@ -4101,7 +4124,9 @@ bool wxWindowOS2::HandleChar(
     if (isASCII)
     {
         //
-        // If 1 -> 26, translate to CTRL plus a letter.
+        // If 1 -> 26, translate to either special keycode or just set
+        // ctrlDown.  IOW, Ctrl-C should result in keycode == 3 and
+        // ControlDown() == TRUE.
         //
         vId = (int)wParam;
         if ((vId > 0) && (vId < 27))
@@ -4122,7 +4147,7 @@ bool wxWindowOS2::HandleChar(
 
                 default:
                     bCtrlDown = TRUE;
-                    vId = vId + 'a' - 1;
+                    break;
             }
         }
     }
diff --git a/src/os2/wx23.def b/src/os2/wx23.def
index dad736e0e3..300a3b0e50 100644
--- a/src/os2/wx23.def
+++ b/src/os2/wx23.def
@@ -4,7 +4,7 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL
 CODE LOADONCALL
 
 EXPORTS
-;From library:  F:\Dev\Wx2\WxWindows\lib\wx.lib
+;From library:  F:\DEV\WX2\WXWINDOWS\LIB\wx.lib
   ;From object file:  dummy.cpp
     ;PUBDEFs (Symbols available from object file):
       wxDummyChar
@@ -68,6 +68,8 @@ EXPORTS
       OnCmdLineHelp__9wxAppBaseFR15wxCmdLineParser
       ;wxTrap()
       wxTrap__Fv
+      ;wxAppBase::OnRun()
+      OnRun__9wxAppBaseFv
       ;wxAppBase::OnExit()
       OnExit__9wxAppBaseFv
       ;wxAssertIsEqual(int,int)
@@ -257,12 +259,12 @@ EXPORTS
       sm_classwxFontData__10wxFontData
       ;wxPageSetupDialogData::SetPaperSize(wxPaperSize)
       SetPaperSize__21wxPageSetupDialogDataF11wxPaperSize
-      ;wxFontData::~wxFontData()
-      __dt__10wxFontDataFv
       ;wxConstructorForwxColourData()
       wxConstructorForwxColourData__Fv
       ;wxColourData::~wxColourData()
       __dt__12wxColourDataFv
+      ;wxFontData::~wxFontData()
+      __dt__10wxFontDataFv
       ;wxPrintData::wxPrintData(const wxPrintData&)
       __ct__11wxPrintDataFRC11wxPrintData
       ;wxPrintDialogData::sm_classwxPrintDialogData
@@ -1605,14 +1607,20 @@ EXPORTS
       ;wxEncodingConverter::wxEncodingConverter()
       __ct__19wxEncodingConverterFv
       CompareCharsetItems
+      ;wxEncodingConverter::Convert(const char*,wchar_t*)
+      Convert__19wxEncodingConverterFPCcPw
       ;wxEncodingConverter::Init(wxFontEncoding,wxFontEncoding,int)
       Init__19wxEncodingConverterF14wxFontEncodingT1i
+      ;wxEncodingConverter::Convert(const wchar_t*,char*)
+      Convert__19wxEncodingConverterFPCwPc
       ;wxEncodingConverter::Convert(const wxString&)
       Convert__19wxEncodingConverterFRC8wxString
       ;wxEncodingConverter::GetPlatformEquivalents(wxFontEncoding,int)
       GetPlatformEquivalents__19wxEncodingConverterF14wxFontEncodingi
       ;wxEncodingConverter::Convert(const char*,char*)
       Convert__19wxEncodingConverterFPCcPc
+      ;wxEncodingConverter::Convert(const wchar_t*,wchar_t*)
+      Convert__19wxEncodingConverterFPCwPw
   ;From object file:  ..\common\event.cpp
     ;PUBDEFs (Symbols available from object file):
       ;wxSetCursorEvent::sm_classwxSetCursorEvent
@@ -3470,14 +3478,14 @@ EXPORTS
       sm_classwxLocaleModule__14wxLocaleModule
       ;wxLanguageInfoArray::RemoveAt(unsigned int,unsigned int)
       RemoveAt__19wxLanguageInfoArrayFUiT1
-      ;wxLocale::GetSystemEncoding()
-      GetSystemEncoding__8wxLocaleFv
+      ;wxLocale::CreateLanguagesDB()
+      CreateLanguagesDB__8wxLocaleFv
       ;wxLocale::~wxLocale()
       __dt__8wxLocaleFv
       ;wxLocale::GetSystemLanguage()
       GetSystemLanguage__8wxLocaleFv
-      ;wxLocale::CreateLanguagesDB()
-      CreateLanguagesDB__8wxLocaleFv
+      ;wxLocale::GetSystemEncoding()
+      GetSystemEncoding__8wxLocaleFv
       ;wxLanguageInfoArray::Index(const wxLanguageInfo&,unsigned long) const
       Index__19wxLanguageInfoArrayCFRC14wxLanguageInfoUl
       ;wxLanguageInfoArray::wxLanguageInfoArray(const wxLanguageInfoArray&)
@@ -4431,6 +4439,8 @@ EXPORTS
       FindClass__11wxClassInfoFPCc
       ;wxObject::sm_classwxObject
       sm_classwxObject__8wxObject
+      ;wxClassInfo::~wxClassInfo()
+      __dt__11wxClassInfoFv
       ;wxClassInfo::InitializeClasses()
       InitializeClasses__11wxClassInfoFv
   ;From object file:  ..\common\odbc.cpp
@@ -4581,10 +4591,12 @@ EXPORTS
       SetZoom__18wxPrintPreviewBaseFi
       ;wxPrintout::GetPageInfo(int*,int*,int*,int*)
       GetPageInfo__10wxPrintoutFPiN31
-      ;wxPrinterBase::~wxPrinterBase()
-      __dt__13wxPrinterBaseFv
+      ;wxPreviewControlBar::OnFirst()
+      OnFirst__19wxPreviewControlBarFv
       ;wxPreviewControlBar::sm_eventTable
       sm_eventTable__19wxPreviewControlBar
+      ;wxPrinterBase::~wxPrinterBase()
+      __dt__13wxPrinterBaseFv
       ;wxPreviewFrame::CreateCanvas()
       CreateCanvas__14wxPreviewFrameFv
       ;wxPreviewControlBar::CreateButtons()
@@ -4615,6 +4627,8 @@ EXPORTS
       OnBeginDocument__10wxPrintoutFiT1
       ;wxPrintPreviewBase::Init(wxPrintout*,wxPrintout*)
       Init__18wxPrintPreviewBaseFP10wxPrintoutT1
+      ;wxPreviewControlBar::OnGoto()
+      OnGoto__19wxPreviewControlBarFv
       ;wxPrintout::~wxPrintout()
       __dt__10wxPrintoutFv
       ;wxPrintout::OnEndDocument()
@@ -4672,6 +4686,8 @@ EXPORTS
       __dt__14wxPreviewFrameFv
       ;wxPreviewControlBar::OnPrevious()
       OnPrevious__19wxPreviewControlBarFv
+      ;wxPreviewControlBar::OnLast()
+      OnLast__19wxPreviewControlBarFv
       ;wxPreviewControlBar::GetEventTable() const
       GetEventTable__19wxPreviewControlBarCFv
       ;wxPreviewFrame::wxPreviewFrame(wxPrintPreviewBase*,wxFrame*,const wxString&,const wxPoint&,const wxSize&,long,const wxString&)
@@ -5404,13 +5420,53 @@ EXPORTS
       __vft18wxwxListStringNode10wxNodeBase
   ;From object file:  ..\common\strconv.cpp
     ;PUBDEFs (Symbols available from object file):
+      ;wxCSConv::wxCSConv(const wxCSConv&)
+      __ct__8wxCSConvFRC8wxCSConv
+      __vft8wxCSConv8wxMBConv
+      __vft12wxMBConvUTF78wxMBConv
+      ;wxMBConv::cMB2WC(const char*) const
+      cMB2WC__8wxMBConvCFPCc
+      ;wxCSConv::SetName(const char*)
+      SetName__8wxCSConvFPCc
+      ;wxMBConvUTF7::MB2WC(wchar_t*,const char*,unsigned int) const
+      MB2WC__12wxMBConvUTF7CFPwPCcUi
       ;wxStrConvModule::sm_classwxStrConvModule
       sm_classwxStrConvModule__15wxStrConvModule
+      ;wxMBConvUTF8::WC2MB(char*,const wchar_t*,unsigned int) const
+      WC2MB__12wxMBConvUTF8CFPcPCwUi
+      ;wxMBConvUTF8::MB2WC(wchar_t*,const char*,unsigned int) const
+      MB2WC__12wxMBConvUTF8CFPwPCcUi
+      __vft12wxMBConvUTF88wxMBConv
       wxConvCurrent
-      wxConvFile
+      ;wxMBConv::WC2MB(char*,const wchar_t*,unsigned int) const
+      WC2MB__8wxMBConvCFPcPCwUi
+      ;wxCSConv::Clear()
+      Clear__8wxCSConvFv
+      ;wxCSConv::~wxCSConv()
+      __dt__8wxCSConvFv
+      ;wxCSConv::operator=(const wxCSConv&)
+      __as__8wxCSConvFRC8wxCSConv
+      wxConvUTF7
+      wxConvLocal
+      wxConvUTF8
+      ;wxMBConvUTF7::WC2MB(char*,const wchar_t*,unsigned int) const
+      WC2MB__12wxMBConvUTF7CFPcPCwUi
+      ;wxCSConv::WC2MB(char*,const wchar_t*,unsigned int) const
+      WC2MB__8wxCSConvCFPcPCwUi
+      ;wxCSConv::MB2WC(wchar_t*,const char*,unsigned int) const
+      MB2WC__8wxCSConvCFPwPCcUi
+      ;wxCSConv::LoadNow()
+      LoadNow__8wxCSConvFv
+      ;wxCSConv::wxCSConv(const char*)
+      __ct__8wxCSConvFPCc
       wxConvLibc
+      ;wxMBConv::MB2WC(wchar_t*,const char*,unsigned int) const
+      MB2WC__8wxMBConvCFPwPCcUi
       ;wxConstructorForwxStrConvModule()
       wxConstructorForwxStrConvModule__Fv
+      __vft8wxMBConv
+      ;wxMBConv::cWC2MB(const wchar_t*) const
+      cWC2MB__8wxMBConvCFPCw
   ;From object file:  ..\common\stream.cpp
     ;PUBDEFs (Symbols available from object file):
       ;wxStreamBuffer::SetBufferIO(void*,unsigned int,unsigned long)
@@ -5616,6 +5672,8 @@ EXPORTS
       find_first_of__8wxStringCFPCcUi
       ;operator+(const wxString&,const wxString&)
       __pl__FRC8wxStringT1
+      ;wxString::wxString(const wchar_t*,wxMBConv&,unsigned int)
+      __ct__8wxStringFPCwR8wxMBConvUi
       ;wxString::wxString(const void*,const void*)
       __ct__8wxStringFPCvT1
       ;wxArrayString::Sort(int(*)(const wxString&,const wxString&))
@@ -5688,8 +5746,6 @@ EXPORTS
       AfterLast__8wxStringCFc
       ;wxString::find(char,unsigned int) const
       find__8wxStringCFcUi
-      ;wxVsnprintf(char*,unsigned int,const char*,char*)
-      wxVsnprintf__FPcUiPCcT1
       ;wxString::rfind(const wxString&,unsigned int) const
       rfind__8wxStringCFRC8wxStringUi
       ;wxString::replace(unsigned int,unsigned int,const char*,unsigned int)
@@ -5731,6 +5787,8 @@ EXPORTS
       __pl__FRC8wxStringPCc
       ;wxArrayString::operator==(const wxArrayString&) const
       __eq__13wxArrayStringCFRC13wxArrayString
+      ;wxString::operator=(const wchar_t*)
+      __as__8wxStringFPCw
       ;wxString::StartsWith(const char*,wxString*) const
       StartsWith__8wxStringCFPCcP8wxString
       ;wxArrayString::Remove(const char*)
@@ -5769,8 +5827,6 @@ EXPORTS
       ToDouble__8wxStringCFPd
       ;wxString::wxString(char,unsigned int)
       __ct__8wxStringFcUi
-      ;wxSnprintf(char*,unsigned int,const char*,...)
-      wxSnprintf__FPcUiPCce
       ;wxString::ToULong(unsigned long*,int) const
       ToULong__8wxStringCFPUli
       ;wxString::Right(unsigned int) const
@@ -6067,6 +6123,8 @@ EXPORTS
       __dt__20wxTopLevelWindowBaseFv
       ;wxTopLevelWindowBase::OnCloseWindow(wxCloseEvent&)
       OnCloseWindow__20wxTopLevelWindowBaseFR12wxCloseEvent
+      ;wxTopLevelWindowBase::IsLastBeforeExit() const
+      IsLastBeforeExit__20wxTopLevelWindowBaseCFv
       ;wxTopLevelWindowBase::DoScreenToClient(int*,int*) const
       DoScreenToClient__20wxTopLevelWindowBaseCFPiT1
       ;wxTopLevelWindowBase::Destroy()
@@ -7140,10 +7198,17 @@ EXPORTS
       wxGetTopLevelParent__FP8wxWindow
   ;From object file:  ..\common\wxchar.cpp
     ;PUBDEFs (Symbols available from object file):
+      wcslen
+      ;wxMB2WC(wchar_t*,const char*,unsigned int)
+      wxMB2WC__FPwPCcUi
+      ;wxVsnprintf(char*,unsigned int,const char*,char*)
+      wxVsnprintf__FPcUiPCcT1
+      ;wxWC2MB(char*,const wchar_t*,unsigned int)
+      wxWC2MB__FPcPCwUi
+      ;wxSnprintf(char*,unsigned int,const char*,...)
+      wxSnprintf__FPcUiPCce
       ;wxOKlibc()
       wxOKlibc__Fv
-      ;wcslen(const wchar_t*)
-      wcslen__FPCw
   ;From object file:  ..\common\wxexpr.cpp
     ;PUBDEFs (Symbols available from object file):
       ;wxExpr::GetAttributeValue(const wxString&,long&) const
-- 
2.50.0

