[SCM] audacity/master: Backport upstream preliminary changes for wxWidgets 3.0.1

bdrung at users.alioth.debian.org bdrung at users.alioth.debian.org
Wed Oct 8 22:59:40 UTC 2014


The following commit has been merged in the master branch:
commit d5cfb3149fe7eb9c5578d69d8423b6f121276fcb
Author: Benjamin Drung <bdrung at debian.org>
Date:   Thu Oct 9 00:52:01 2014 +0200

    Backport upstream preliminary changes for wxWidgets 3.0.1

diff --git a/debian/patches/backport-wx30-r13403.patch b/debian/patches/backport-wx30-r13403.patch
new file mode 100644
index 0000000..9b4c98b
--- /dev/null
+++ b/debian/patches/backport-wx30-r13403.patch
@@ -0,0 +1,1419 @@
+Description: Preliminary changes for wxWidgets 3.0.1
+ We can't go to 3.0.1 yet as there are still build issues on
+ Linux and OSX.  You can get Windows to build, but there's
+ still some display issues.
+ .
+ These changes should work with wxWidgets 2.8.12 as well, so
+ we can take our time to get things working properly before
+ switching over.
+Origin: backport, https://code.google.com/p/audacity/source/detail?r=13403
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -292,7 +292,7 @@
+ AC_MSG_NOTICE([Checking that the chosen version of wxWidgets is 2.8.x])
+ 
+ case "${wx_version}" in
+-  2.8.*)
++  2.8.* | 3.0.*)
+     echo "Great, you're using wxWidgets ${wx_version}!"
+     ;;
+   *)
+--- a/lib-src/FileDialog/FileDialog.cpp
++++ b/lib-src/FileDialog/FileDialog.cpp
+@@ -49,16 +49,16 @@
+ // FileDialog convenience functions
+ //----------------------------------------------------------------------------
+ 
+-wxString FileSelector(const wxChar *title,
+-                      const wxChar *defaultDir,
+-                      const wxChar *defaultFileName,
+-                      const wxChar *defaultExtension,
+-                      const wxChar *filter,
++wxString FileSelector(const wxString & title,
++                      const wxString & defaultDir,
++                      const wxString & defaultFileName,
++                      const wxString & defaultExtension,
++                      const wxString & filter,
+                       int flags,
+                       wxWindow *parent,
+                       wxString label, fdCallback cb, void *cbdata)
+ {
+-   // The defaultExtension, if non-NULL, is
++   // The defaultExtension, if non-empty, is
+    // appended to the filename if the user fails to type an extension. The new
+    // implementation (taken from wxFileSelectorEx) appends the extension
+    // automatically, by looking at the filter specification. In fact this
+@@ -70,21 +70,13 @@
+    // suitable filter.
+ 
+    wxString filter2;
+-   if (defaultExtension && !filter)
++   if (!defaultExtension.empty() && filter.empty())
+       filter2 = wxString(wxT("*.")) + defaultExtension;
+-   else if (filter)
++   else if (!filter.empty())
+       filter2 = filter;
+ 
+-   wxString defaultDirString;
+-   if (defaultDir)
+-      defaultDirString = defaultDir;
+-
+-   wxString defaultFilenameString;
+-   if (defaultFileName)
+-      defaultFilenameString = defaultFileName;
+-
+-   FileDialog fileDialog(parent, title, defaultDirString,
+-                         defaultFilenameString, filter2,
++   FileDialog fileDialog(parent, title, defaultDir,
++                         defaultFileName, filter2,
+                          flags);
+ 
+    // Enable the extra button if desired
+@@ -94,7 +86,7 @@
+    }
+ 
+    // if filter is of form "All files (*)|*|..." set correct filter index
+-   if ((wxStrlen(defaultExtension) != 0) && (filter2.Find(wxT('|')) != wxNOT_FOUND))
++   if (!defaultExtension.empty() && filter2.find(wxT('|')) != wxString::npos)
+    {
+       int filterIndex = 0;
+       
+--- a/lib-src/FileDialog/FileDialog.h
++++ b/lib-src/FileDialog/FileDialog.h
+@@ -43,11 +43,11 @@
+ //----------------------------------------------------------------------------
+ 
+ wxString 
+-FileSelector(const wxChar *message = wxFileSelectorPromptStr,
+-             const wxChar *default_path = NULL,
+-             const wxChar *default_filename = NULL,
+-             const wxChar *default_extension = NULL,
+-             const wxChar *wildcard = wxFileSelectorDefaultWildcardStr,
++FileSelector(const wxString & message = wxFileSelectorPromptStr,
++             const wxString & default_path = wxEmptyString,
++             const wxString & default_filename = wxEmptyString,
++             const wxString & default_extension = wxEmptyString,
++             const wxString & wildcard = wxFileSelectorDefaultWildcardStr,
+              int flags = 0,
+              wxWindow *parent = NULL,
+              wxString label = wxEmptyString,
+--- a/lib-src/FileDialog/win/FileDialogPrivate.cpp
++++ b/lib-src/FileDialog/win/FileDialogPrivate.cpp
+@@ -209,7 +209,7 @@
+             {
+                CommDlg_OpenSave_SetControlText( hwndDialog,
+                                                pshHelp,
+-                                               (LPTSTR)me->m_buttonlabel.c_str());
++                                               (LPCTSTR)me->m_buttonlabel.c_str());
+             }
+          }
+          else if (CDN_HELP == (pNotifyCode->hdr).code)
+@@ -515,7 +515,7 @@
+ void FileDialog::SetPath(const wxString& path)
+ {
+    wxString ext;
+-   wxSplitPath(path, &m_dir, &m_fileName, &ext);
++   wxFileName::SplitPath(path, &m_dir, &m_fileName, &ext);
+    if ( !ext.empty() )
+       m_fileName << wxT('.') << ext;
+ }
+@@ -717,7 +717,7 @@
+       }
+    }
+    
+-   of.lpstrFilter  = (LPTSTR)filterBuffer.c_str();
++   of.lpstrFilter  = (LPCTSTR)filterBuffer.c_str();
+    of.nFilterIndex = m_filterIndex + 1;
+    
+    ParseFilter(of.nFilterIndex);
+--- a/lib-src/lib-widget-extra/configure.ac
++++ b/lib-src/lib-widget-extra/configure.ac
+@@ -131,7 +131,7 @@
+ AC_MSG_NOTICE([Checking that the chosen version of wxWidgets is 2.8.x])
+ 
+ case "${wx_version}" in
+-  2.8.*)
++  2.8.* | 3.0.*)
+     echo "Great, you're using wxWidgets ${wx_version}!"
+     ;;
+   *)
+--- a/src/AudacityApp.cpp
++++ b/src/AudacityApp.cpp
+@@ -606,7 +606,7 @@
+       if (!cmd.IsEmpty()) {
+          wxCommandEvent e(EVT_OPEN_AUDIO_FILE);
+          e.SetString(data);
+-         project->AddPendingEvent(e);
++         project->GetEventHandler()->AddPendingEvent(e);
+       }
+ 
+       return true;
+@@ -1295,7 +1295,11 @@
+          }
+ 
+          if (option < argc - 1 &&
+-             argv[option + 1] &&
++#if wxCHECK_VERSION(3,0,0)
++            !argv[option + 1].IsEmpty() &&
++#else
++            argv[option + 1] &&
++#endif
+              !wxString(wxT("-blocksize")).CmpNoCase(argv[option])) {
+             long theBlockSize;
+             if (wxString(argv[option + 1]).ToLong(&theBlockSize)) {
+--- a/src/AudacityLogger.cpp
++++ b/src/AudacityLogger.cpp
+@@ -286,7 +286,7 @@
+    wxString fName = _("log.txt");
+ 
+    fName = FileSelector(_("Save log to:"),
+-                        NULL,
++                        wxEmptyString,
+                         fName,
+                         wxT("txt"),
+                         wxT("*.txt"),
+--- a/src/Benchmark.cpp
++++ b/src/Benchmark.cpp
+@@ -245,7 +245,7 @@
+    wxString fName = wxT("benchmark.txt");
+ 
+    fName = FileSelector(wxT("Export Benchmark Data As:"),
+-                        NULL, fName, wxT("txt"), wxT("*.txt"), wxFD_SAVE | wxRESIZE_BORDER, this);
++                        wxEmptyString, fName, wxT("txt"), wxT("*.txt"), wxFD_SAVE | wxRESIZE_BORDER, this);
+ 
+    if (fName == wxT(""))
+       return;
+--- a/src/FileIO.cpp
++++ b/src/FileIO.cpp
+@@ -76,6 +76,7 @@
+ void FileIO::SetCatalogInfo()
+ {
+ #ifdef __WXMAC__
++#if !wxCHECK_VERSION(3, 0, 0)
+    if (!mOpen ) {
+       return;
+    }
+@@ -91,6 +92,7 @@
+ 
+    SetCatalogInfo(type);
+ #endif
++#endif
+ 
+    return;
+ }
+@@ -98,6 +100,7 @@
+ void FileIO::SetCatalogInfo(wxUint32 type)
+ {
+ #ifdef __WXMAC__
++#if !wxCHECK_VERSION(3, 0, 0)
+    if (!mOpen ) {
+       return;
+    }
+@@ -106,6 +109,7 @@
+ 
+    fn.MacSetTypeAndCreator(type, AUDACITY_CREATOR);
+ #endif
++#endif
+ 
+    return;
+ }
+--- a/src/FreqWindow.cpp
++++ b/src/FreqWindow.cpp
+@@ -43,10 +43,10 @@
+ #pragma hdrstop
+ #endif
+ 
+-#ifndef WX_PRECOMP
+ #include <wx/brush.h>
+ #include <wx/button.h>
+ #include <wx/choice.h>
++#include <wx/font.h>
+ #include <wx/image.h>
+ #include <wx/dcmemory.h>
+ #include <wx/msgdlg.h>
+@@ -56,7 +56,6 @@
+ #include <wx/sizer.h>
+ #include <wx/stattext.h>
+ #include <wx/statusbr.h>
+-#endif
+ 
+ #include <wx/textfile.h>
+ 
+@@ -124,7 +123,7 @@
+    if (!p)
+       return;
+ 
+-   mFreqFont = wxFont(fontSize, wxSWISS, wxNORMAL, wxNORMAL);
++   mFreqFont = wxFont(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
+    mArrowCursor = new wxCursor(wxCURSOR_ARROW);
+    mCrossCursor = new wxCursor(wxCURSOR_CROSS);
+ 
+@@ -1223,7 +1222,7 @@
+    wxString fName = _("spectrum.txt");
+ 
+    fName = FileSelector(_("Export Spectral Data As:"),
+-                        NULL, fName, wxT("txt"), wxT("*.txt"), wxFD_SAVE | wxRESIZE_BORDER, this);
++                        wxEmptyString, fName, wxT("txt"), wxT("*.txt"), wxFD_SAVE | wxRESIZE_BORDER, this);
+ 
+    if (fName == wxT(""))
+       return;
+--- a/src/Internat.cpp
++++ b/src/Internat.cpp
+@@ -188,7 +188,7 @@
+          wxMessageBox(_("The specified filename could not be converted due to Unicode character use."));
+ 
+          name = FileSelector(_("Specify New Filename:"),
+-                             NULL,
++                             wxEmptyString,
+                              name,
+                              f.GetExt(),
+                              wxT("*.") + f.GetExt(),
+--- a/src/LabelDialog.cpp
++++ b/src/LabelDialog.cpp
+@@ -565,7 +565,7 @@
+    wxString fName = mTrackNames[mTrackNames.GetCount() - 1].AfterFirst(wxT('-')).Mid(1);
+ 
+    fName = FileSelector(_("Export Labels As:"),
+-                        NULL,
++                        wxEmptyString,
+                         fName.c_str(),
+                         wxT("txt"),
+                         wxT("*.txt"),
+--- a/src/Lyrics.cpp
++++ b/src/Lyrics.cpp
+@@ -230,12 +230,12 @@
+ 
+ void Lyrics::SetDrawnFont(wxDC *dc)
+ {
+-   dc->SetFont(wxFont(mKaraokeFontSize, wxSWISS, wxNORMAL, wxNORMAL));
++   dc->SetFont(wxFont(mKaraokeFontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
+ }
+ 
+ void Lyrics::SetHighlightFont() // for kHighlightLyrics
+ {
+-   wxFont newFont(mKaraokeFontSize, wxSWISS, wxNORMAL, wxNORMAL);
++   wxFont newFont(mKaraokeFontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
+    mHighlightTextCtrl->SetDefaultStyle(wxTextAttr(wxNullColour, wxNullColour, newFont));
+    mHighlightTextCtrl->SetStyle(0, mHighlightTextCtrl->GetLastPosition(),
+                                  wxTextAttr(wxNullColour, wxNullColour, newFont));
+--- a/src/Menus.cpp
++++ b/src/Menus.cpp
+@@ -2422,7 +2422,7 @@
+    //       The workaround is to queue a context menu event, allowing the key press
+    //       event to complete.
+    wxContextMenuEvent e(wxEVT_CONTEXT_MENU, GetId());
+-   mTrackPanel->AddPendingEvent(e);
++   mTrackPanel->GetEventHandler()->AddPendingEvent(e);
+ }
+ 
+ void AudacityProject::OnTrackMute()
+@@ -2898,7 +2898,7 @@
+    }
+ 
+    fName = FileSelector(_("Export Labels As:"),
+-                        NULL,
++                        wxEmptyString,
+                         fName,
+                         wxT("txt"),
+                         wxT("*.txt"),
+@@ -2979,7 +2979,7 @@
+       wxString fName = wxT("");
+ 
+       fName = FileSelector(_("Export MIDI As:"),
+-         NULL,
++         wxEmptyString,
+          fName,
+          wxT(".mid|.gro"),
+          _("MIDI file (*.mid)|*.mid|Allegro file (*.gro)|*.gro"),
+--- a/src/MixerBoard.cpp
++++ b/src/MixerBoard.cpp
+@@ -331,8 +331,14 @@
+    #endif // wxUSE_TOOLTIPS
+ 
+    #ifdef __WXMAC__
++#if wxCHECK_VERSION(3, 0, 0)
++      wxSizeEvent event(GetSize(), GetId());
++      event.SetEventObject(this);
++      GetEventHandler()->ProcessEvent(event);
++#else
+       wxSizeEvent dummyEvent;
+       this->OnSize(dummyEvent);
++#endif
+       UpdateGain();
+    #endif
+ }
+--- a/src/PitchName.h
++++ b/src/PitchName.h
+@@ -18,7 +18,7 @@
+ #ifndef __AUDACITY_PITCHNAME__
+ #define __AUDACITY_PITCHNAME__
+ 
+-#include <wx/defs.h>
++#include <wx/wx.h>
+ 
+ // FreqToMIDInote takes a frequency in Hz (exponential scale relative to
+ // alphabetic pitch names) and returns a pitch ID number (linear
+--- a/src/PlatformCompatibility.cpp
++++ b/src/PlatformCompatibility.cpp
+@@ -37,9 +37,7 @@
+    static wxString path;
+ 
+    if (!found) {
+-      wxStandardPaths std;
+-
+-      path = std.GetExecutablePath();
++      path = wxStandardPaths::Get().GetExecutablePath();
+ 
+       found = true;
+    }
+--- a/src/Project.cpp
++++ b/src/Project.cpp
+@@ -85,9 +85,11 @@
+ #include <wx/arrimpl.cpp>       // this allows for creation of wxObjArray
+ 
+ #if defined(__WXMAC__)
++#if !wxCHECK_VERSION(3, 0, 0)
+ #include <CoreServices/CoreServices.h>
+ #include <wx/mac/private.h>
+ #endif
++#endif
+ 
+ #include "Project.h"
+ 
+@@ -278,10 +280,12 @@
+       }
+ 
+ #if defined(__WXMAC__)
++#if !wxCHECK_VERSION(3, 0, 0)
+       if (format.GetFormatId() == kDragPromisedFlavorFindFile) {
+          return true;
+       }
+ #endif
++#endif
+ 
+       return false;
+    }
+@@ -305,6 +309,7 @@
+    bool GetData()
+    {
+       bool foundSupported = false;
++#if !wxCHECK_VERSION(3, 0, 0)
+       bool firstFileAdded = false;
+       OSErr result;
+ 
+@@ -356,13 +361,14 @@
+             break;
+          }
+       }
+-
++#endif
+       return foundSupported;
+    }
+ 
+    bool OnDrop(wxCoord x, wxCoord y)
+    {
+       bool foundSupported = false;
++#if !wxCHECK_VERSION(3, 0, 0)
+       bool firstFileAdded = false;
+       OSErr result;
+ 
+@@ -387,7 +393,7 @@
+             return true;
+          }
+       }
+-
++#endif
+       return CurrentDragHasSupportedFormat();
+    }
+ 
+@@ -1717,7 +1723,7 @@
+       wxCommandEvent e(EVT_CAPTURE_KEY);
+       e.SetEventObject(&event);
+ 
+-      if (w->ProcessEvent(e)) {
++      if (w->GetEventHandler()->ProcessEvent(e)) {
+          return false;
+       }
+    }
+@@ -3261,9 +3267,11 @@
+    }
+ 
+ #ifdef __WXMAC__
++#if !wxCHECK_VERSION(3, 0, 0)
+    wxFileName fn(mFileName);
+    fn.MacSetTypeAndCreator(AUDACITY_PROJECT_TYPE, AUDACITY_CREATOR);
+ #endif
++#endif
+ 
+    if (bWantSaveCompressed)
+       mWantSaveCompressed = false; // Don't want this mode for AudacityProject::WriteXML() any more.
+--- a/src/Sequence.cpp
++++ b/src/Sequence.cpp
+@@ -1047,8 +1047,8 @@
+                _("Sequence has block file with length %s > mMaxSamples %s.\nTruncating to mMaxSamples."),
+                Internat::ToString(((wxLongLong)(bb->f->GetLength())).ToDouble(), 0).c_str(),
+                Internat::ToString(((wxLongLong)mMaxSamples).ToDouble(), 0).c_str());
+-         ::wxMessageBox(sMsg, _("Warning - Length in Writing Sequence"), wxICON_EXCLAMATION | wxOK);
+-         ::wxLogWarning(sMsg);
++         wxMessageBox(sMsg, _("Warning - Length in Writing Sequence"), wxICON_EXCLAMATION | wxOK);
++         wxLogWarning(sMsg);
+          bb->f->SetLength(mMaxSamples);
+       }
+ 
+--- a/src/Tags.cpp
++++ b/src/Tags.cpp
+@@ -474,7 +474,7 @@
+ 
+       while (*attrs) {
+          wxString attr = *attrs++;
+-         if (!*attr)
++         if (attr.IsEmpty())
+             break;
+          wxString value = *attrs++;
+ 
+--- a/src/TrackPanel.cpp
++++ b/src/TrackPanel.cpp
+@@ -5124,7 +5124,7 @@
+       // The activate event is used to make the
+       // parent window 'come alive' if it didn't have focus.
+       wxActivateEvent e;
+-      GetParent()->ProcessEvent(e);
++      GetParent()->GetEventHandler()->ProcessEvent(e);
+ 
+       // wxTimers seem to be a little unreliable, so this
+       // "primes" it to make sure it keeps going for a while...
+@@ -5562,7 +5562,7 @@
+    int trackKind = pTrack->GetKind();
+    currentTool = selectTool; // the default.
+ 
+-   if( event.ButtonIsDown(3) || event.RightUp()){
++   if (event.ButtonIsDown(wxMOUSE_BTN_RIGHT) || event.RightUp()){
+       currentTool = zoomTool;
+    } else if( trackKind == Track::Time ){
+       currentTool = envelopeTool;
+@@ -8382,7 +8382,7 @@
+    mSliderOffset = 0;
+ 
+    int fontSize = 10;
+-   mFont.Create(fontSize, wxSWISS, wxNORMAL, wxNORMAL);
++   mFont.Create(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
+ 
+    int allowableWidth = GetTrackInfoWidth() - 2; // 2 to allow for left/right borders
+    int textWidth, textHeight;
+--- a/src/TrackPanelAx.cpp
++++ b/src/TrackPanelAx.cpp
+@@ -307,20 +307,20 @@
+          {
+             /* i18n-hint: This is for screen reader software and indicates that
+                on this track mute is on.*/
+-            *name->Append( _( " Mute On" ) );
++            name->Append( _( " Mute On" ) );
+          }
+ 
+          if( t->GetSolo() )
+          {
+             /* i18n-hint: This is for screen reader software and indicates that
+                on this track solo is on.*/
+-            *name->Append( _( " Solo On" ) );
++            name->Append( _( " Solo On" ) );
+          }
+          if( t->GetSelected() )
+          {
+             /* i18n-hint: This is for screen reader software and indicates that
+                this track is selected.*/
+-            *name->Append( _( " Select On" ) );
++            name->Append( _( " Select On" ) );
+          }
+          if( t->IsSyncLockSelected() )
+          {
+@@ -328,7 +328,7 @@
+                this track is shown with a sync-locked icon.*/
+             // The absence of a dash between Sync and Locked is deliberate -
+             // if present, Jaws reads it as "dash".
+-            *name->Append( _( " Sync Lock Selected" ) );
++            name->Append( _( " Sync Lock Selected" ) );
+          }
+       }
+    }
+--- a/src/commands/ScriptCommandRelay.cpp
++++ b/src/commands/ScriptCommandRelay.cpp
+@@ -57,7 +57,7 @@
+    wxASSERT(cmd != NULL);
+    AppCommandEvent ev;
+    ev.SetCommand(cmd);
+-   project->AddPendingEvent(ev);
++   project->GetEventHandler()->AddPendingEvent(ev);
+ }
+ 
+ /// This is the function which actually obeys one command.  Rather than applying
+--- a/src/effects/BassTreble.cpp
++++ b/src/effects/BassTreble.cpp
+@@ -35,6 +35,7 @@
+ #include <wx/checkbox.h>
+ #include <wx/slider.h>
+ #include <wx/sizer.h>
++#include <wx/textctrl.h>
+ 
+ // Used to communicate the type of the filter.
+ static const int bassType = 0; //Low Shelf
+--- a/src/effects/Compressor.h
++++ b/src/effects/Compressor.h
+@@ -14,6 +14,8 @@
+ class wxString;
+ 
+ #include <wx/defs.h>
++#include <wx/dc.h>
++#include <wx/dcclient.h>
+ #include <wx/bitmap.h>
+ #include <wx/button.h>
+ #include <wx/checkbox.h>
+--- a/src/effects/Contrast.cpp
++++ b/src/effects/Contrast.cpp
+@@ -496,7 +496,7 @@
+    wxString fName = wxT("contrast.txt");
+ 
+    fName = FileSelector(_("Export Contrast Result As:"),
+-                        NULL, fName, wxT("txt"), wxT("*.txt"), wxFD_SAVE | wxRESIZE_BORDER, this);
++                        wxEmptyString, fName, wxT("txt"), wxT("*.txt"), wxFD_SAVE | wxRESIZE_BORDER, this);
+ 
+    if (fName == wxT(""))
+       return;
+--- a/src/effects/VST/VSTEffect.cpp
++++ b/src/effects/VST/VSTEffect.cpp
+@@ -3579,7 +3579,7 @@
+       wxCommandEvent sw(EVT_SIZEWINDOW);
+       sw.SetInt(w);
+       sw.SetExtraLong(h);
+-      mDlg->AddPendingEvent(sw);
++      mDlg->GetEventHandler()->AddPendingEvent(sw);
+    }
+ 
+    return;
+@@ -3590,7 +3590,7 @@
+    // Tell the dialog to refresh effect information
+    if (mDlg) {
+       wxCommandEvent ud(EVT_UPDATEDISPLAY);
+-      mDlg->AddPendingEvent(ud);
++      mDlg->GetEventHandler()->AddPendingEvent(ud);
+    }
+ }
+ 
+--- a/src/effects/nyquist/Nyquist.cpp
++++ b/src/effects/nyquist/Nyquist.cpp
+@@ -703,7 +703,7 @@
+          // See also http://bugzilla.audacityteam.org/show_bug.cgi?id=642#c9
+          // for further info about this thread safety question.
+          wxString prevlocale = wxSetlocale(LC_NUMERIC, NULL);
+-         wxSetlocale(LC_NUMERIC, wxT("C"));
++         wxSetlocale(LC_NUMERIC, wxString(wxT("C")));
+ 
+          nyx_init();
+          nyx_set_os_callback(StaticOSCallback, (void *)this);
+--- a/src/export/ExportPCM.cpp
++++ b/src/export/ExportPCM.cpp
+@@ -587,10 +587,12 @@
+       AddID3Chunk(fName, metadata, sf_format);
+ 
+ #ifdef __WXMAC__
++#if !wxCHECK_VERSION(3, 0, 0)
+    wxFileName fn(fName);
+    fn.MacSetTypeAndCreator(sf_header_mactype(sf_format & SF_FORMAT_TYPEMASK),
+                            AUDACITY_CREATOR);
+ #endif
++#endif
+ 
+    return updateResult;
+ }
+--- a/src/import/ImportRaw.cpp
++++ b/src/import/ImportRaw.cpp
+@@ -337,7 +337,7 @@
+ 
+       if (sf_format_check(&info)) {
+          mEncodingSubtype[mNumEncodings] = subtype;
+-         encodings.Add(LAT1CTOWX(sf_encoding_index_name(i)));
++         encodings.Add(sf_encoding_index_name(i));
+ 
+          if ((mEncoding & SF_FORMAT_SUBMASK) == subtype)
+             selection = mNumEncodings;
+--- a/src/ondemand/ODManager.cpp
++++ b/src/ondemand/ODManager.cpp
+@@ -311,7 +311,7 @@
+          AudacityProject::AllProjectsDeleteLock();
+          AudacityProject* proj = GetActiveProject();
+          if(proj)
+-            proj->AddPendingEvent( event );
++            proj->GetEventHandler()->AddPendingEvent(event);
+          AudacityProject::AllProjectsDeleteUnlock();
+       }
+       mTerminateMutex.Lock();
+--- a/src/ondemand/ODTask.cpp
++++ b/src/ondemand/ODTask.cpp
+@@ -158,7 +158,7 @@
+          if(IsTaskAssociatedWithProject(gAudacityProjects[i]))
+          {
+             //this assumes tasks are only associated with one project.
+-            gAudacityProjects[i]->AddPendingEvent( event );
++            gAudacityProjects[i]->GetEventHandler()->AddPendingEvent(event);
+             //mark the changes so that the project can be resaved.
+             gAudacityProjects[i]->GetUndoManager()->SetODChangesFlag();
+             break;
+--- a/src/prefs/KeyConfigPrefs.cpp
++++ b/src/prefs/KeyConfigPrefs.cpp
+@@ -420,7 +420,7 @@
+       nevent.SetDirection(!e.ShiftDown());
+       nevent.SetEventObject(t);
+       nevent.SetCurrentFocus(t);
+-      t->GetParent()->ProcessEvent(nevent);
++      t->GetParent()->GetEventHandler()->ProcessEvent(nevent);
+       return;
+    }
+ 
+@@ -465,7 +465,7 @@
+       nevent.SetDirection(!e.ShiftDown());
+       nevent.SetEventObject(t);
+       nevent.SetCurrentFocus(t);
+-      t->GetParent()->ProcessEvent(nevent);
++      t->GetParent()->GetEventHandler()->ProcessEvent(nevent);
+ 
+       return;
+    }
+--- a/src/toolbars/ControlToolBar.cpp
++++ b/src/toolbars/ControlToolBar.cpp
+@@ -607,9 +607,14 @@
+       }
+       else {
+          // msmeyer: Show error message if stream could not be opened
+-         wxMessageBox(_(
+-            "Error while opening sound device. "
++         wxMessageBox(
++#if wxCHECK_VERSION(3,0,0)
++            _("Error while opening sound device. "
++            "Please check the playback device settings and the project sample rate."),
++#else
++            _("Error while opening sound device. "
+             wxT("Please check the playback device settings and the project sample rate.")),
++#endif
+             _("Error"), wxOK | wxICON_EXCLAMATION, this);
+       }
+    }
+--- a/src/toolbars/DeviceToolBar.cpp
++++ b/src/toolbars/DeviceToolBar.cpp
+@@ -72,8 +72,14 @@
+    ToolBar::Create(parent);
+ 
+    // Simulate a size event to set initial meter placement/size
++#if wxCHECK_VERSION(3, 0, 0)
++   wxSizeEvent event(GetSize(), GetId());
++   event.SetEventObject(this);
++   GetEventHandler()->ProcessEvent(event);
++#else
+    wxSizeEvent dummy;
+    OnSize(dummy);
++#endif
+ }
+ 
+ void DeviceToolBar::RecreateTipWindows()
+--- a/src/toolbars/SelectionBar.cpp
++++ b/src/toolbars/SelectionBar.cpp
+@@ -106,7 +106,7 @@
+ void SelectionBar::Populate()
+ {
+    // This will be inherited by all children:
+-   SetFont(wxFont(9, wxSWISS, wxNORMAL, wxNORMAL));
++   SetFont(wxFont(9, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
+ 
+    wxFlexGridSizer *mainSizer;
+    wxBoxSizer *hSizer;
+--- a/src/toolbars/ToolManager.cpp
++++ b/src/toolbars/ToolManager.cpp
+@@ -47,10 +47,6 @@
+ #include <wx/minifram.h>
+ #include <wx/popupwin.h>
+ 
+-#if defined(__WXMAC__)
+-#include <wx/mac/uma.h>
+-#endif
+-
+ #include "ToolManager.h"
+ #include "ControlToolBar.h"
+ #include "DeviceToolBar.h"
+@@ -744,7 +740,7 @@
+       int bo = mBotDock->GetOrder( bar );
+ 
+       // Save
+-      gPrefs->Write( wxT("Dock"), to ? TopDockID : bo ? BotDockID : NoDockID );
++      gPrefs->Write( wxT("Dock"), (int) (to ? TopDockID : bo ? BotDockID : NoDockID ));
+       gPrefs->Write( wxT("Order"), to + bo );
+       gPrefs->Write( wxT("Show"), IsVisible( ndx ) );
+ 
+--- a/src/toolbars/ToolsToolBar.cpp
++++ b/src/toolbars/ToolsToolBar.cpp
+@@ -57,23 +57,6 @@
+ 
+ IMPLEMENT_CLASS(ToolsToolBar, ToolBar);
+ 
+-// Strings to convert a tool number into a status message
+-// These MUST be in the same order as the ids above.
+-static const wxChar * MessageOfTool[numTools] = {
+-   wxTRANSLATE("Click and drag to select audio"),
+-   wxTRANSLATE("Click and drag to edit the amplitude envelope"),
+-   wxTRANSLATE("Click and drag to edit the samples"),
+-#if defined( __WXMAC__ )
+-   wxTRANSLATE("Click to Zoom In, Shift-Click to Zoom Out"),
+-#elif defined( __WXMSW__ )
+-   wxTRANSLATE("Drag to Zoom Into Region, Right-Click to Zoom Out"),
+-#elif defined( __WXGTK__ )
+-   wxTRANSLATE("Left=Zoom In, Right=Zoom Out, Middle=Normal"),
+-#endif
+-   wxTRANSLATE("Click and drag to move a track in time"),
+-   wxT("") // multi-mode tool
+-};
+-
+ ////////////////////////////////////////////////////////////
+ /// Methods for ToolsToolBar
+ ////////////////////////////////////////////////////////////
+@@ -96,6 +79,19 @@
+    wxASSERT( zoomTool     == zoomTool     - firstTool );
+    wxASSERT( drawTool     == drawTool     - firstTool );
+    wxASSERT( multiTool    == multiTool    - firstTool );
++
++   mMessageOfTool[selectTool] = _("Click and drag to select audio");
++   mMessageOfTool[envelopeTool] = _("Click and drag to edit the amplitude envelope");
++   mMessageOfTool[slideTool] = _("Click and drag to edit the samples");
++#if defined( __WXMAC__ )
++   mMessageOfTool[zoomTool] = _("Click to Zoom In, Shift-Click to Zoom Out");
++#elif defined( __WXMSW__ )
++   mMessageOfTool[zoomTool] = _("Drag to Zoom Into Region, Right-Click to Zoom Out");
++#elif defined( __WXGTK__ )
++   mMessageOfTool[zoomTool] = _("Left=Zoom In, Right=Zoom Out, Middle=Normal");
++#endif
++   mMessageOfTool[drawTool] = _("Click and drag to move a track in time");
++   mMessageOfTool[multiTool] = wxT(""); // multi-mode tool
+ }
+ 
+ ToolsToolBar::~ToolsToolBar()
+@@ -258,7 +254,8 @@
+ {
+    wxASSERT( ToolNumber >= 0 );
+    wxASSERT( ToolNumber < numTools );
+-   return wxGetTranslation(MessageOfTool[ ToolNumber ]);
++
++   return mMessageOfTool[ToolNumber];
+ }
+ 
+ 
+--- a/src/toolbars/ToolsToolBar.h
++++ b/src/toolbars/ToolsToolBar.h
+@@ -79,6 +79,8 @@
+    wxGridSizer *mToolSizer;
+    int mCurrentTool;
+ 
++   const wxChar *mMessageOfTool[numTools];
++
+  public:
+ 
+    DECLARE_CLASS(ToolsToolBar);
+--- a/src/widgets/ASlider.cpp
++++ b/src/widgets/ASlider.cpp
+@@ -1191,7 +1191,7 @@
+                nevent.SetDirection( !event.ShiftDown() );
+                nevent.SetEventObject( mParent );
+                nevent.SetCurrentFocus( mParent );
+-               mParent->GetParent()->ProcessEvent( nevent );
++               mParent->GetParent()->GetEventHandler()->ProcessEvent(nevent);
+             }
+             break;
+ 
+@@ -1203,7 +1203,7 @@
+                if (def && def->IsEnabled()) {
+                   wxCommandEvent cevent(wxEVT_COMMAND_BUTTON_CLICKED,
+                         def->GetId());
+-                  mParent->ProcessEvent(cevent);
++                  mParent->GetEventHandler()->ProcessEvent(cevent);
+                }
+             }
+ 
+@@ -1228,7 +1228,7 @@
+    int intValue = (int)( ( mCurrentValue - mMinValue ) * 1000.0f /
+                          ( mMaxValue - mMinValue ) );
+    e.SetInt( intValue );
+-   mParent->ProcessEvent( e );
++   mParent->GetEventHandler()->ProcessEvent(e);
+ }
+ 
+ int LWSlider::ValueToPosition(float val)
+--- a/src/widgets/ExpandingToolBar.cpp
++++ b/src/widgets/ExpandingToolBar.cpp
+@@ -72,6 +72,7 @@
+ #include <wx/window.h>
+ #endif
+ 
++#include <wx/wx.h>
+ #include <wx/dcmemory.h>
+ #include <wx/log.h>
+ #include <wx/dragimag.h>
+--- a/src/widgets/Grabber.cpp
++++ b/src/widgets/Grabber.cpp
+@@ -89,7 +89,7 @@
+    e.SetEventObject(parent);
+ 
+    // Queue the event
+-   parent->AddPendingEvent(e);
++   parent->GetEventHandler()->AddPendingEvent(e);
+ }
+ 
+ //
+--- a/src/widgets/Grid.cpp
++++ b/src/widgets/Grid.cpp
+@@ -79,6 +79,28 @@
+    GetTimeCtrl()->SetFocus();
+ }
+ 
++#if wxCHECK_VERSION(3,0,0)
++
++bool TimeEditor::EndEdit(int WXUNUSED(row), int WXUNUSED(col), const wxGrid *WXUNUSED(grid), const wxString & WXUNUSED(oldval), wxString *newval)
++{
++   double newtime = GetTimeCtrl()->GetTimeValue();
++   bool changed = newtime != mOld;
++
++   if (changed) {
++      mNew = newtime;
++      *newval = wxString::Format(wxT("%g"), newtime);
++   }
++
++   return changed;
++}
++
++void TimeEditor::ApplyEdit(int row, int col, wxGrid *grid)
++{
++   grid->GetTable()->SetValue(row, col, wxString::Format(wxT("%g"), mNew));
++}
++
++#else
++
+ bool TimeEditor::EndEdit(int row, int col, wxGrid *grid)
+ {
+    double newtime = GetTimeCtrl()->GetTimeValue();
+@@ -91,6 +113,8 @@
+    return changed;
+ }
+ 
++#endif
++
+ void TimeEditor::Reset()
+ {
+    GetTimeCtrl()->SetTimeValue(mOld);
+@@ -295,8 +319,40 @@
+    Choice()->SetFocus();
+ }
+ 
++#if wxCHECK_VERSION(3,0,0)
++
++bool ChoiceEditor::EndEdit(int WXUNUSED(row), int WXUNUSED(col), const wxGrid* WXUNUSED(grid), const wxString & WXUNUSED(oldval), wxString *newval)
++{
++   int sel = Choice()->GetSelection();
++
++   // This can happen if the wxChoice control is displayed and the list of choices get changed
++   if ((sel < 0) || (sel >= (int)(mChoices.GetCount())))
++   {
++      return false;
++   }
++
++   wxString val = mChoices[sel];
++   if (val == mOld)
++   {
++      return false;
++   }
++
++   *newval = val;
++
++   mNew = val;
++
++   return true;
++}
++
++void ChoiceEditor::ApplyEdit(int row, int col, wxGrid *grid)
++{
++   grid->GetTable()->SetValue(row, col, mNew);
++}
++
++#else
++
+ bool ChoiceEditor::EndEdit(int row, int col,
+-                           wxGrid* grid)
++   wxGrid* grid)
+ {
+    int sel = Choice()->GetSelection();
+ 
+@@ -315,6 +371,8 @@
+    return true;
+ }
+ 
++#endif
++
+ void ChoiceEditor::Reset()
+ {
+    Choice()->SetSelection(mChoices.Index(mOld));
+@@ -491,7 +549,7 @@
+             if (def && def->IsEnabled()) {
+                wxCommandEvent cevent(wxEVT_COMMAND_BUTTON_CLICKED,
+                                      def->GetId());
+-               GetParent()->ProcessEvent(cevent);
++               GetParent()->GetEventHandler()->ProcessEvent(cevent);
+             }
+          }
+          else {
+--- a/src/widgets/Grid.h
++++ b/src/widgets/Grid.h
+@@ -52,7 +52,14 @@
+    void SetSize(const wxRect &rect);
+ 
+    void BeginEdit(int row, int col, wxGrid *grid);
++
++#if wxCHECK_VERSION(3,0,0)
++   bool EndEdit(int row, int col, const wxGrid *grid,
++      const wxString & oldval, wxString *newval);
++   void ApplyEdit(int, int, wxGrid *);
++#else
+    bool EndEdit(int row, int col, wxGrid *grid);
++#endif
+ 
+    void Reset();
+ 
+@@ -71,6 +78,7 @@
+    wxString mFormat;
+    double mRate;
+    double mOld;
++   double mNew;
+ };
+ 
+ // ----------------------------------------------------------------------------
+@@ -124,7 +132,14 @@
+    void SetSize(const wxRect &rect);
+ 
+    void BeginEdit(int row, int col, wxGrid *grid);
++
++#if wxCHECK_VERSION(3,0,0)
++   bool EndEdit(int row, int col, const wxGrid *grid,
++      const wxString & oldval, wxString *newval);
++   void ApplyEdit(int, int, wxGrid *);
++#else
+    bool EndEdit(int row, int col, wxGrid *grid);
++#endif
+ 
+    void Reset();
+ 
+@@ -159,6 +174,7 @@
+ 
+    wxArrayString mChoices;
+    wxString mOld;
++   wxString mNew;
+ };
+ 
+ // ----------------------------------------------------------------------------
+--- a/src/widgets/ImageRoll.cpp
++++ b/src/widgets/ImageRoll.cpp
+@@ -96,6 +96,7 @@
+ 
+ #include "ImageRoll.h"
+ 
++#include <wx/wx.h>
+ #include <wx/arrimpl.cpp>
+ #include <wx/bitmap.h>
+ #include <wx/dcmemory.h>
+@@ -299,7 +300,7 @@
+ }
+ 
+ void ImageRoll::DrawBitmap(wxDC &dc, wxBitmap &bitmap,
+-                           int x, int y, int logicalFunc)
++                           int x, int y, wxRasterOperationMode logicalFunc)
+ {
+    if (logicalFunc == wxCOPY)
+       dc.DrawBitmap(bitmap, x, y);
+--- a/src/widgets/ImageRoll.h
++++ b/src/widgets/ImageRoll.h
+@@ -12,10 +12,15 @@
+ #ifndef __AUDACITY_IMAGE_ROLL__
+ #define __AUDACITY_IMAGE_ROLL__
+ 
++#include <wx/dc.h>
+ #include <wx/defs.h>
+ #include <wx/dynarray.h>
+ #include <wx/panel.h>
+ 
++#if !wxCHECK_VERSION(3,0,0)
++#define wxRasterOperationMode int
++#endif
++
+ WX_DECLARE_OBJARRAY(wxBitmap, BitmapArray);
+ WX_DECLARE_OBJARRAY(wxImage, ImageArray);
+ 
+@@ -48,7 +53,7 @@
+  protected:
+ 
+    void DrawBitmap(wxDC &dc, wxBitmap &bitmap,
+-                   int x, int y, int logicalFunc = wxCOPY);
++                   int x, int y, wxRasterOperationMode logicalFunc = wxCOPY);
+ 
+    void Init(RollType type, const wxImage &src, wxColour magicColor);
+ 
+--- a/src/widgets/Meter.cpp
++++ b/src/widgets/Meter.cpp
+@@ -52,10 +52,6 @@
+ #include <wx/tooltip.h>
+ #include <wx/msgdlg.h>
+ 
+-#if defined(__WXMAC__)
+-#include <wx/mac/uma.h>
+-#endif
+-
+ #include <math.h>
+ 
+ #include "Meter.h"
+@@ -746,7 +742,7 @@
+    fontSize = 8;
+ #endif
+ 
+-   return wxFont(fontSize, wxSWISS, wxNORMAL, wxNORMAL);
++   return wxFont(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
+ }
+ 
+ void Meter::ResetBar(MeterBar *b, bool resetClipping)
+--- a/src/widgets/Ruler.cpp
++++ b/src/widgets/Ruler.cpp
+@@ -116,9 +116,9 @@
+    fontSize = 8;
+ #endif
+ 
+-   mMinorMinorFont = new wxFont(fontSize-1, wxSWISS, wxNORMAL, wxNORMAL);
+-   mMinorFont = new wxFont(fontSize, wxSWISS, wxNORMAL, wxNORMAL);
+-   mMajorFont = new wxFont(fontSize, wxSWISS, wxNORMAL, wxBOLD);
++   mMinorMinorFont = new wxFont(fontSize - 1, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
++   mMinorFont = new wxFont(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
++   mMajorFont = new wxFont(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD);
+    mUserFonts = false;
+ 
+    #ifdef __WXMAC__
+@@ -934,45 +934,45 @@
+    int j;
+ 
+    if (!mUserFonts) {
+-     int fontSize = 4;
+-     wxCoord strW, strH, strD, strL;
+-     wxString exampleText = wxT("0.9");   //ignored for height calcs on all platforms
+-     int desiredPixelHeight;
+-
+-     if (mOrientation == wxHORIZONTAL)
+-       desiredPixelHeight = mBottom-mTop-5; // height less ticks and 1px gap
+-     else
++      int fontSize = 4;
++      wxCoord strW, strH, strD, strL;
++      wxString exampleText = wxT("0.9");   //ignored for height calcs on all platforms
++      int desiredPixelHeight;
++
++      if (mOrientation == wxHORIZONTAL)
++         desiredPixelHeight = mBottom - mTop - 5; // height less ticks and 1px gap
++      else
+          desiredPixelHeight = 12;   // why 12?  10 -> 12 seems to be max/min
+ 
+-     if (desiredPixelHeight < 10)//8)
+-       desiredPixelHeight = 10;//8;
+-     if (desiredPixelHeight > 12)
+-       desiredPixelHeight = 12;
++      if (desiredPixelHeight < 10)//8)
++         desiredPixelHeight = 10;//8;
++      if (desiredPixelHeight > 12)
++         desiredPixelHeight = 12;
+ 
+       // Keep making the font bigger until it's too big, then subtract one.
+-      mDC->SetFont(wxFont(fontSize, wxSWISS, wxNORMAL, wxBOLD));
++      mDC->SetFont(wxFont(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD));
+       mDC->GetTextExtent(exampleText, &strW, &strH, &strD, &strL);
+-      while( (strH-strD-strL) <= desiredPixelHeight && fontSize < 40) {
++      while ((strH - strD - strL) <= desiredPixelHeight && fontSize < 40) {
+          fontSize++;
+-         mDC->SetFont(wxFont(fontSize, wxSWISS, wxNORMAL, wxBOLD));
+-         mDC->GetTextExtent(exampleText, &strW, &strH, &strD, & strL);
++         mDC->SetFont(wxFont(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD));
++         mDC->GetTextExtent(exampleText, &strW, &strH, &strD, &strL);
+       }
+       fontSize--;
+-      mDC->SetFont(wxFont(fontSize, wxSWISS, wxNORMAL, wxNORMAL));
++      mDC->SetFont(wxFont(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
+       mDC->GetTextExtent(exampleText, &strW, &strH, &strD, &strL);
+       mLead = strL;
+ 
+-     if (mMajorFont)
+-        delete mMajorFont;
+-     mMajorFont = new wxFont(fontSize, wxSWISS, wxNORMAL, wxBOLD);
+-
+-     if (mMinorFont)
+-        delete mMinorFont;
+-     mMinorFont = new wxFont(fontSize, wxSWISS, wxNORMAL, wxNORMAL);
+-
+-     if (mMinorMinorFont)
+-        delete mMinorMinorFont;
+-     mMinorMinorFont = new wxFont(fontSize-1, wxSWISS, wxNORMAL, wxNORMAL);
++      if (mMajorFont)
++         delete mMajorFont;
++      mMajorFont = new wxFont(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD);
++
++      if (mMinorFont)
++         delete mMinorFont;
++      mMinorFont = new wxFont(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
++
++      if (mMinorMinorFont)
++         delete mMinorMinorFont;
++      mMinorMinorFont = new wxFont(fontSize - 1, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
+    }
+ 
+    // If ruler is being resized, we could end up with it being too small.
+--- a/src/widgets/TimeTextCtrl.cpp
++++ b/src/widgets/TimeTextCtrl.cpp
+@@ -168,6 +168,7 @@
+ 
+ #include <math.h>
+ 
++#include <wx/wx.h>
+ #include <wx/dcmemory.h>
+ #include <wx/font.h>
+ #include <wx/intl.h>
+@@ -1055,18 +1056,18 @@
+    wxString exampleText = wxT("0");
+ 
+    // Keep making the font bigger until it's too big, then subtract one.
+-   memDC.SetFont(wxFont(fontSize, wxFIXED, wxNORMAL, wxNORMAL));
++   memDC.SetFont(wxFont(fontSize, wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
+    memDC.GetTextExtent(exampleText, &strW, &strH);
+    while(strW <= mDigitBoxW && strH <= mDigitBoxH) {
+       fontSize++;
+-      memDC.SetFont(wxFont(fontSize, wxFIXED, wxNORMAL, wxNORMAL));
++      memDC.SetFont(wxFont(fontSize, wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
+       memDC.GetTextExtent(exampleText, &strW, &strH);
+    }
+    fontSize--;
+ 
+    if (mDigitFont)
+       delete mDigitFont;
+-   mDigitFont = new wxFont(fontSize, wxFIXED, wxNORMAL, wxNORMAL);
++   mDigitFont = new wxFont(fontSize, wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
+    memDC.SetFont(*mDigitFont);
+    memDC.GetTextExtent(exampleText, &strW, &strH);
+    mDigitW = strW;
+@@ -1076,7 +1077,7 @@
+    fontSize--;
+    if (mLabelFont)
+       delete mLabelFont;
+-   mLabelFont = new wxFont(fontSize, wxFIXED, wxNORMAL, wxNORMAL);
++   mLabelFont = new wxFont(fontSize, wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
+ 
+    // Figure out the x-position of each field and label in the box
+    x = mBorderLeft;
+@@ -1435,7 +1436,7 @@
+       nevent.SetDirection(!event.ShiftDown());
+       nevent.SetEventObject(parent);
+       nevent.SetCurrentFocus(parent);
+-      GetParent()->ProcessEvent(nevent);
++      GetParent()->GetEventHandler()->ProcessEvent(nevent);
+       event.Skip(false);
+    }
+ 
+@@ -1445,7 +1446,7 @@
+       if (def && def->IsEnabled()) {
+          wxCommandEvent cevent(wxEVT_COMMAND_BUTTON_CLICKED,
+                                def->GetId());
+-         GetParent()->ProcessEvent(cevent);
++         GetParent()->GetEventHandler()->ProcessEvent(cevent);
+          event.Skip(false);
+       }
+    }
+--- a/src/widgets/numformatter.cpp
++++ b/src/widgets/numformatter.cpp
+@@ -242,8 +242,13 @@
+ 
+ wxString wxNumberFormatter::ToString(wxLongLong_t val, int style)
+ {
+-    return PostProcessIntString(wxString::Format(wxT("%") wxLongLongFmtSpec wxT("d"), val),
++#if wxCHECK_VERSION(3,0,0)
++   return PostProcessIntString(wxString::Format("%" wxLongLongFmtSpec "d", val),
+                                 style);
++#else
++   return PostProcessIntString(wxString::Format(wxT("%") wxLongLongFmtSpec wxT("d"), val),
++      style);
++#endif
+ }
+ 
+ #endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+--- a/src/xml/XMLWriter.cpp
++++ b/src/xml/XMLWriter.cpp
+@@ -124,21 +124,11 @@
+       XMLEsc(value).c_str()));
+ }
+ 
+-void XMLWriter::WriteAttr(const wxChar *name, const wxChar *value)
+-{
+-   WriteAttr(wxString(name), wxString(value));
+-}
+-
+ void XMLWriter::WriteAttr(const wxString &name, const wxChar *value)
+ {
+    WriteAttr(name, wxString(value));
+ }
+ 
+-void XMLWriter::WriteAttr(const wxChar *name, const wxString &value)
+-{
+-   WriteAttr(wxString(name), value);
+-}
+-
+ void XMLWriter::WriteAttr(const wxString &name, int value)
+ {
+    Write(wxString::Format(wxT(" %s=\"%d\""),
+@@ -146,11 +136,6 @@
+       value));
+ }
+ 
+-void XMLWriter::WriteAttr(const wxChar *name, int value)
+-{
+-   WriteAttr(wxString(name), value);
+-}
+-
+ void XMLWriter::WriteAttr(const wxString &name, bool value)
+ {
+    Write(wxString::Format(wxT(" %s=\"%d\""),
+@@ -158,11 +143,6 @@
+       value));
+ }
+ 
+-void XMLWriter::WriteAttr(const wxChar *name, bool value)
+-{
+-   WriteAttr(wxString(name), value);
+-}
+-
+ void XMLWriter::WriteAttr(const wxString &name, long value)
+ {
+    Write(wxString::Format(wxT(" %s=\"%ld\""),
+@@ -170,11 +150,6 @@
+       value));
+ }
+ 
+-void XMLWriter::WriteAttr(const wxChar *name, long value)
+-{
+-   WriteAttr(wxString(name), value);
+-}
+-
+ void XMLWriter::WriteAttr(const wxString &name, long long value)
+ {
+    Write(wxString::Format(wxT(" %s=\"%lld\""),
+@@ -182,11 +157,6 @@
+       value));
+ }
+ 
+-void XMLWriter::WriteAttr(const wxChar *name, long long value)
+-{
+-   WriteAttr(wxString(name), value);
+-}
+-
+ void XMLWriter::WriteAttr(const wxString &name, size_t value)
+ {
+    Write(wxString::Format(wxT(" %s=\"%ld\""),
+@@ -194,11 +164,6 @@
+       value));
+ }
+ 
+-void XMLWriter::WriteAttr(const wxChar *name, size_t value)
+-{
+-   WriteAttr(wxString(name), value);
+-}
+-
+ void XMLWriter::WriteAttr(const wxString &name, float value, int digits)
+ {
+    Write(wxString::Format(wxT(" %s=\"%s\""),
+@@ -206,11 +171,6 @@
+       Internat::ToString(value, digits).c_str()));
+ }
+ 
+-void XMLWriter::WriteAttr(const wxChar *name, float value, int digits)
+-{
+-   WriteAttr(wxString(name), value, digits);
+-}
+-
+ void XMLWriter::WriteAttr(const wxString &name, double value, int digits)
+ {
+    Write(wxString::Format(wxT(" %s=\"%s\""),
+@@ -218,11 +178,6 @@
+       Internat::ToString(value, digits).c_str()));
+ }
+ 
+-void XMLWriter::WriteAttr(const wxChar *name, double value, int digits)
+-{
+-   WriteAttr(wxString(name), value, digits);
+-}
+-
+ void XMLWriter::WriteData(const wxString &value)
+ {
+    int i;
+@@ -234,11 +189,6 @@
+    Write(XMLEsc(value));
+ }
+ 
+-void XMLWriter::WriteData(const wxChar *value)
+-{
+-   WriteData(wxString(value));
+-}
+-
+ void XMLWriter::WriteSubTree(const wxString &value)
+ {
+    if (mInTag) {
+@@ -250,16 +200,6 @@
+    Write(value.c_str());
+ }
+ 
+-void XMLWriter::WriteSubTree(const wxChar *value)
+-{
+-   WriteSubTree(wxString(value));
+-}
+-
+-void XMLWriter::Write(const wxChar *value)
+-{
+-   Write(wxString(value));
+-}
+-
+ // See http://www.w3.org/TR/REC-xml for reference
+ wxString XMLWriter::XMLEsc(const wxString & s)
+ {
+--- a/src/xml/XMLWriter.h
++++ b/src/xml/XMLWriter.h
+@@ -27,32 +27,19 @@
+    void EndTag(const wxString &name);
+ 
+    void WriteAttr(const wxString &name, const wxString &value);
+-   void WriteAttr(const wxChar *name, const wxChar *value);
+    void WriteAttr(const wxString &name, const wxChar *value);
+-   void WriteAttr(const wxChar *name, const wxString &value);
+ 
+    void WriteAttr(const wxString &name, int value);
+-   void WriteAttr(const wxChar *name, int value);
+    void WriteAttr(const wxString &name, bool value);
+-   void WriteAttr(const wxChar *name, bool value);
+    void WriteAttr(const wxString &name, long value);
+-   void WriteAttr(const wxChar *name, long value);
+    void WriteAttr(const wxString &name, long long value);
+-   void WriteAttr(const wxChar *name, long long value);
+    void WriteAttr(const wxString &name, size_t value);
+-   void WriteAttr(const wxChar *name, size_t value);
+    void WriteAttr(const wxString &name, float value, int digits = -1);
+-   void WriteAttr(const wxChar *name, float value, int digits = -1);
+    void WriteAttr(const wxString &name, double value, int digits = -1);
+-   void WriteAttr(const wxChar *name, double value, int digits = -1);
+ 
+    void WriteData(const wxString &value);
+-   void WriteData(const wxChar *value);
+ 
+    void WriteSubTree(const wxString &value);
+-   void WriteSubTree(const wxChar *value);
+-
+-   void Write(const wxChar *data);
+ 
+    virtual void Write(const wxString &data) = 0;
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 7f962d0..743f4c4 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 fix-minsrc-autoreconf.patch
+backport-wx30-r13403.patch

-- 
Audacity debian packaging



More information about the pkg-multimedia-commits mailing list