Compensate for wxW 3 tab navigation deficiencies on Mac...

... using char hook event handlers.  We don't need to go the extreme length
of patching wxWidgets source.
This commit is contained in:
Paul Licameli 2016-06-25 14:18:23 -04:00 committed by Paul Licameli
parent ae14cb0dbc
commit 4739f3e27b
50 changed files with 231 additions and 144 deletions

View File

@ -1212,6 +1212,7 @@
5E74D2E31CC4429700D88B0B /* EditCursorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2DD1CC4429700D88B0B /* EditCursorOverlay.cpp */; };
5E74D2E41CC4429700D88B0B /* PlayIndicatorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2DF1CC4429700D88B0B /* PlayIndicatorOverlay.cpp */; };
5E74D2E51CC4429700D88B0B /* Scrubbing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2E11CC4429700D88B0B /* Scrubbing.cpp */; };
5E94A1BA1D1F1C8400A8713A /* wxPanelWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E94A1B81D1F1C8400A8713A /* wxPanelWrapper.cpp */; };
5ED1D0AD1CDE55BD00471E3C /* Overlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5ED1D0A91CDE55BD00471E3C /* Overlay.cpp */; };
5ED1D0AE1CDE55BD00471E3C /* OverlayPanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5ED1D0AB1CDE55BD00471E3C /* OverlayPanel.cpp */; };
5ED1D0B11CDE560C00471E3C /* BackedPanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5ED1D0AF1CDE560C00471E3C /* BackedPanel.cpp */; };
@ -2987,6 +2988,8 @@
5E74D2E01CC4429700D88B0B /* PlayIndicatorOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayIndicatorOverlay.h; sourceTree = "<group>"; };
5E74D2E11CC4429700D88B0B /* Scrubbing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Scrubbing.cpp; sourceTree = "<group>"; };
5E74D2E21CC4429700D88B0B /* Scrubbing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scrubbing.h; sourceTree = "<group>"; };
5E94A1B81D1F1C8400A8713A /* wxPanelWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wxPanelWrapper.cpp; sourceTree = "<group>"; };
5E94A1B91D1F1C8400A8713A /* wxPanelWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wxPanelWrapper.h; sourceTree = "<group>"; };
5ED18DB61CC16B1E00FAFE95 /* Reverb_libSoX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reverb_libSoX.h; sourceTree = "<group>"; };
5ED18DB71CC290AB00FAFE95 /* wxFileNameWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wxFileNameWrapper.h; sourceTree = "<group>"; };
5ED1D0A91CDE55BD00471E3C /* Overlay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Overlay.cpp; sourceTree = "<group>"; };
@ -4302,53 +4305,55 @@
isa = PBXGroup;
children = (
1790B0FE09883BFD008A330A /* AButton.cpp */,
1790B10009883BFD008A330A /* ASlider.cpp */,
28F1D8170A2D0018005506A7 /* AttachableScrollBar.cpp */,
5ED1D0AF1CDE560C00471E3C /* BackedPanel.cpp */,
283AA0E90C56ED08002CBD34 /* ErrorDialog.cpp */,
28F1D8190A2D0018005506A7 /* ExpandingToolBar.cpp */,
28CCDCFF0F939FD70081F2FC /* FileHistory.cpp */,
2897F6FC0AB3DCD0003C20C5 /* Grabber.cpp */,
280828580A75E0EA000002EF /* Grid.cpp */,
280112791943EE0E00D98A16 /* HelpSystem.cpp */,
28530C480DF2105200555C94 /* HtmlWindow.cpp */,
28F1D81B0A2D0019005506A7 /* ImageRoll.cpp */,
2849A41E17F8BEC2005C653F /* KeyView.cpp */,
2816372C0BAE3B6C0079C746 /* LinkingHtmlWindow.cpp */,
1790B10309883BFD008A330A /* Meter.cpp */,
1790B10509883BFD008A330A /* MultiDialog.cpp */,
28001B3C1A0F0E5D007DD161 /* NumericTextCtrl.cpp */,
28F2CED0181867BB00573D61 /* numformatter.cpp */,
5ED1D0A91CDE55BD00471E3C /* Overlay.cpp */,
5ED1D0AB1CDE55BD00471E3C /* OverlayPanel.cpp */,
28530C4A0DF2105200555C94 /* ProgressDialog.cpp */,
1790B10709883BFD008A330A /* Ruler.cpp */,
28F2CED2181867BB00573D61 /* valnum.cpp */,
1790B10B09883BFD008A330A /* Warning.cpp */,
1790B0FF09883BFD008A330A /* AButton.h */,
1790B10009883BFD008A330A /* ASlider.cpp */,
1790B10109883BFD008A330A /* ASlider.h */,
28F1D8170A2D0018005506A7 /* AttachableScrollBar.cpp */,
28F1D8180A2D0018005506A7 /* AttachableScrollBar.h */,
5ED1D0AF1CDE560C00471E3C /* BackedPanel.cpp */,
5ED1D0B01CDE560C00471E3C /* BackedPanel.h */,
283AA0E90C56ED08002CBD34 /* ErrorDialog.cpp */,
283AA0EA0C56ED08002CBD34 /* ErrorDialog.h */,
28F1D8190A2D0018005506A7 /* ExpandingToolBar.cpp */,
28F1D81A0A2D0018005506A7 /* ExpandingToolBar.h */,
28CCDCFF0F939FD70081F2FC /* FileHistory.cpp */,
28CCDD040F93A0B20081F2FC /* FileHistory.h */,
2897F6FC0AB3DCD0003C20C5 /* Grabber.cpp */,
2897F6FD0AB3DCD0003C20C5 /* Grabber.h */,
280828580A75E0EA000002EF /* Grid.cpp */,
280828590A75E0EA000002EF /* Grid.h */,
280112791943EE0E00D98A16 /* HelpSystem.cpp */,
2801127A1943EE0E00D98A16 /* HelpSystem.h */,
28530C480DF2105200555C94 /* HtmlWindow.cpp */,
28530C490DF2105200555C94 /* HtmlWindow.h */,
28F1D81B0A2D0019005506A7 /* ImageRoll.cpp */,
28F1D81C0A2D0019005506A7 /* ImageRoll.h */,
2849A41E17F8BEC2005C653F /* KeyView.cpp */,
2849A41F17F8BEC2005C653F /* KeyView.h */,
2816372C0BAE3B6C0079C746 /* LinkingHtmlWindow.cpp */,
2816372D0BAE3B6C0079C746 /* LinkingHtmlWindow.h */,
1790B10309883BFD008A330A /* Meter.cpp */,
1790B10409883BFD008A330A /* Meter.h */,
1790B10509883BFD008A330A /* MultiDialog.cpp */,
1790B10609883BFD008A330A /* MultiDialog.h */,
28001B3C1A0F0E5D007DD161 /* NumericTextCtrl.cpp */,
28001B3D1A0F0E5D007DD161 /* NumericTextCtrl.h */,
28F2CED0181867BB00573D61 /* numformatter.cpp */,
28F2CED1181867BB00573D61 /* numformatter.h */,
5ED1D0A91CDE55BD00471E3C /* Overlay.cpp */,
5ED1D0AA1CDE55BD00471E3C /* Overlay.h */,
5ED1D0AB1CDE55BD00471E3C /* OverlayPanel.cpp */,
5ED1D0AC1CDE55BD00471E3C /* OverlayPanel.h */,
28530C4A0DF2105200555C94 /* ProgressDialog.cpp */,
28530C4B0DF2105200555C94 /* ProgressDialog.h */,
1790B10709883BFD008A330A /* Ruler.cpp */,
1790B10809883BFD008A330A /* Ruler.h */,
28F2CED2181867BB00573D61 /* valnum.cpp */,
28F2CED3181867BB00573D61 /* valnum.h */,
1790B10B09883BFD008A330A /* Warning.cpp */,
1790B10C09883BFD008A330A /* Warning.h */,
5E94A1B81D1F1C8400A8713A /* wxPanelWrapper.cpp */,
5E94A1B91D1F1C8400A8713A /* wxPanelWrapper.h */,
);
path = widgets;
sourceTree = "<group>";
@ -7347,6 +7352,7 @@
1790B14709883BFD008A330A /* Nyquist.cpp in Sources */,
1790B14809883BFD008A330A /* Phaser.cpp in Sources */,
1790B14A09883BFD008A330A /* Repeat.cpp in Sources */,
5E94A1BA1D1F1C8400A8713A /* wxPanelWrapper.cpp in Sources */,
1790B14B09883BFD008A330A /* Reverse.cpp in Sources */,
1790B14C09883BFD008A330A /* Silence.cpp in Sources */,
1790B14D09883BFD008A330A /* SimpleMono.cpp in Sources */,

View File

@ -69,7 +69,7 @@ void HighlightTextCtrl::OnMouseEvent(wxMouseEvent& event)
//v static const kHighlightTextCtrlID = 7654;
BEGIN_EVENT_TABLE(Lyrics, wxPanel)
BEGIN_EVENT_TABLE(Lyrics, wxPanelWrapper)
EVT_KEY_DOWN(Lyrics::OnKeyEvent)
EVT_PAINT(Lyrics::OnPaint)
EVT_SIZE(Lyrics::OnSize)
@ -78,12 +78,12 @@ BEGIN_EVENT_TABLE(Lyrics, wxPanel)
// EVT_COMMAND_LEFT_CLICK(kHighlightTextCtrlID, Lyrics::OnHighlightTextCtrl)
END_EVENT_TABLE()
IMPLEMENT_CLASS(Lyrics, wxPanel)
IMPLEMENT_CLASS(Lyrics, wxPanelWrapper)
Lyrics::Lyrics(wxWindow* parent, wxWindowID id,
const wxPoint& pos /*= wxDefaultPosition*/,
const wxSize& size /*= wxDefaultSize*/):
wxPanel(parent, id, pos, size),
wxPanelWrapper(parent, id, pos, size),
mWidth(size.x), mHeight(size.y)
{
mKaraokeHeight = mHeight;

View File

@ -15,8 +15,8 @@
#include "Audacity.h"
#include <wx/dynarray.h>
#include <wx/panel.h>
#include <wx/textctrl.h>
#include "widgets/wxPanelWrapper.h"
class LabelTrack;
@ -58,7 +58,7 @@ private:
DECLARE_EVENT_TABLE()
};
class Lyrics final : public wxPanel
class Lyrics final : public wxPanelWrapper
{
DECLARE_DYNAMIC_CLASS(Lyrics)

View File

@ -584,6 +584,8 @@ audacity_SOURCES = \
widgets/valnum.h \
widgets/Warning.cpp \
widgets/Warning.h \
widgets/wxPanelWrapper.cpp \
widgets/wxPanelWrapper.h \
xml/XMLFileReader.cpp \
xml/XMLFileReader.h \
xml/XMLWriter.cpp \

View File

@ -140,7 +140,7 @@ enum {
ID_TOGGLEBUTTON_SOLO,
};
BEGIN_EVENT_TABLE(MixerTrackCluster, wxPanel)
BEGIN_EVENT_TABLE(MixerTrackCluster, wxPanelWrapper)
EVT_MOUSE_EVENTS(MixerTrackCluster::OnMouseEvent)
EVT_PAINT(MixerTrackCluster::OnPaint)
@ -157,7 +157,7 @@ MixerTrackCluster::MixerTrackCluster(wxWindow* parent,
WaveTrack* pLeftTrack, WaveTrack* pRightTrack /*= NULL*/,
const wxPoint& pos /*= wxDefaultPosition*/,
const wxSize& size /*= wxDefaultSize*/)
: wxPanel(parent, -1, pos, size)
: wxPanelWrapper(parent, -1, pos, size)
{
mMixerBoard = grandParent;
mProject = project;

View File

@ -17,13 +17,13 @@
#include <wx/bmpbuttn.h>
#include <wx/hashmap.h>
#include <wx/image.h>
#include <wx/panel.h>
#include <wx/scrolwin.h>
#include <wx/statbmp.h>
#include <wx/stattext.h>
#include "widgets/AButton.h"
#include "widgets/ASlider.h"
#include "widgets/wxPanelWrapper.h"
// containment hierarchy:
// MixerBoardFrame -> MixerBoard -> MixerBoardScrolledWindow -> MixerTrackCluster(s)
@ -68,7 +68,7 @@ class NoteTrack;
#endif
class WaveTrack;
class MixerTrackCluster final : public wxPanel
class MixerTrackCluster final : public wxPanelWrapper
{
public:
MixerTrackCluster(wxWindow* parent,

View File

@ -881,7 +881,7 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
// Must create it with non-default width equal to the main window width,
// or else the device toolbar doesn't make initial widths of the choice
// controls correct.
mTopPanel = safenew wxPanel {
mTopPanel = safenew wxPanelWrapper {
this, wxID_ANY, wxDefaultPosition, { this->GetSize().GetWidth(), -1 }
};
mTopPanel->SetAutoLayout(true);
@ -925,7 +925,7 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
// Not using a notebook, so we place the track panel inside another panel,
// this keeps the notebook code and normal code consistant and also
// paves the way for adding additional windows inside the track panel.
mMainPanel = safenew wxPanel(this, -1,
mMainPanel = safenew wxPanelWrapper(this, -1,
wxDefaultPosition,
wxDefaultSize,
wxNO_BORDER);

View File

@ -107,6 +107,7 @@ for registering for changes.
#include "Experimental.h"
#include "Shuttle.h"
#include "WrappedType.h"
#include "widgets/wxPanelWrapper.h"
ShuttleGuiBase::ShuttleGuiBase(wxWindow * pParent, teShuttleMode ShuttleMode )
{
@ -790,7 +791,7 @@ wxPanel * ShuttleGuiBase::StartPanel(int iStyle)
if( mShuttleMode != eIsCreating )
return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxPanel);
wxPanel * pPanel;
mpWind = pPanel = safenew wxPanel( GetParent(), miId, wxDefaultPosition, wxDefaultSize,
mpWind = pPanel = safenew wxPanelWrapper( GetParent(), miId, wxDefaultPosition, wxDefaultSize,
Style( wxNO_BORDER ));
if( iStyle != 0 )
@ -847,7 +848,7 @@ wxNotebookPage * ShuttleGuiBase::StartNotebookPage( const wxString & Name )
return NULL;
// return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wx);
wxNotebook * pNotebook = (wxNotebook*)mpParent;
wxNotebookPage * pPage = safenew wxPanel(GetParent());
wxNotebookPage * pPage = safenew wxPanelWrapper(GetParent());
pPage->SetName(Name);
pNotebook->AddPage(
@ -869,7 +870,7 @@ void ShuttleGuiBase::StartNotebookPage( const wxString & Name, wxNotebookPage *
return;
// return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wx);
wxNotebook * pNotebook = (wxNotebook*)mpParent;
// wxNotebookPage * pPage = safenew wxPanel(GetParent());
// wxNotebookPage * pPage = safenew wxPanelWrapper(GetParent());
pPage->Create( mpParent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, wxT("panel"));
pPage->SetName(Name);
@ -895,7 +896,7 @@ void ShuttleGuiBase::EndNotebookPage()
// Doxygen description is at the start of the file
// this is a wxPanel with erase background disabled.
class InvisiblePanel final : public wxPanel
class InvisiblePanel final : public wxPanelWrapper
{
public:
InvisiblePanel(
@ -904,7 +905,7 @@ public:
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL ) :
wxPanel( parent, id, pos, size, style )
wxPanelWrapper( parent, id, pos, size, style )
{
};
~InvisiblePanel(){;};
@ -914,7 +915,7 @@ public:
};
BEGIN_EVENT_TABLE(InvisiblePanel, wxPanel)
BEGIN_EVENT_TABLE(InvisiblePanel, wxPanelWrapper)
// EVT_PAINT(InvisiblePanel::OnPaint)
EVT_ERASE_BACKGROUND( InvisiblePanel::OnErase)
END_EVENT_TABLE()
@ -932,7 +933,7 @@ wxPanel * ShuttleGuiBase::StartInvisiblePanel()
if( mShuttleMode != eIsCreating )
return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxPanel);
wxPanel * pPanel;
mpWind = pPanel = safenew wxPanel(GetParent(), miId, wxDefaultPosition, wxDefaultSize,
mpWind = pPanel = safenew wxPanelWrapper(GetParent(), miId, wxDefaultPosition, wxDefaultSize,
wxNO_BORDER);
mpWind->SetBackgroundColour(

View File

@ -607,7 +607,7 @@ static int GetDistance(const wxPoint& first, const wxPoint& second)
return distanceY;
}
BEGIN_EVENT_TABLE(EffectAutoDuckPanel, wxPanel)
BEGIN_EVENT_TABLE(EffectAutoDuckPanel, wxPanelWrapper)
EVT_PAINT(EffectAutoDuckPanel::OnPaint)
EVT_MOUSE_CAPTURE_CHANGED(EffectAutoDuckPanel::OnMouseCaptureChanged)
EVT_MOUSE_CAPTURE_LOST(EffectAutoDuckPanel::OnMouseCaptureLost)
@ -617,7 +617,7 @@ BEGIN_EVENT_TABLE(EffectAutoDuckPanel, wxPanel)
END_EVENT_TABLE()
EffectAutoDuckPanel::EffectAutoDuckPanel(wxWindow *parent, EffectAutoDuck *effect)
: wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(600, 300))
: wxPanelWrapper(parent, wxID_ANY, wxDefaultPosition, wxSize(600, 300))
{
mParent = parent;
mEffect = effect;

View File

@ -14,12 +14,12 @@
#include <wx/bitmap.h>
#include <wx/event.h>
#include <wx/gdicmn.h>
#include <wx/panel.h>
#include <wx/string.h>
#include <wx/textctrl.h>
#include <wx/window.h>
#include "Effect.h"
#include "../widgets/wxPanelWrapper.h"
class EffectAutoDuckPanel;
class ShuttleGui;
@ -90,7 +90,7 @@ private:
friend class EffectAutoDuckPanel;
};
class EffectAutoDuckPanel final : public wxPanel
class EffectAutoDuckPanel final : public wxPanelWrapper
{
public:
EffectAutoDuckPanel(wxWindow *parent, EffectAutoDuck *effect);

View File

@ -664,7 +664,7 @@ void EffectCompressor::UpdateUI()
// EffectCompressorPanel
//----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(EffectCompressorPanel, wxPanel)
BEGIN_EVENT_TABLE(EffectCompressorPanel, wxPanelWrapper)
EVT_PAINT(EffectCompressorPanel::OnPaint)
EVT_SIZE(EffectCompressorPanel::OnSize)
END_EVENT_TABLE()
@ -673,7 +673,7 @@ EffectCompressorPanel::EffectCompressorPanel(wxWindow *parent,
double & threshold,
double & noiseFloor,
double & ratio)
: wxPanel(parent),
: wxPanelWrapper(parent),
threshold(threshold),
noiseFloor(noiseFloor),
ratio(ratio)

View File

@ -15,11 +15,11 @@
#include <wx/checkbox.h>
#include <wx/event.h>
#include <wx/gdicmn.h>
#include <wx/panel.h>
#include <wx/slider.h>
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/window.h>
#include "../widgets/wxPanelWrapper.h"
#include "TwoPassSimpleMono.h"
@ -133,7 +133,7 @@ private:
DECLARE_EVENT_TABLE();
};
class EffectCompressorPanel final : public wxPanel
class EffectCompressorPanel final : public wxPanelWrapper
{
public:
EffectCompressorPanel(wxWindow *parent,

View File

@ -2793,11 +2793,11 @@ void EffectDialog::OnOk(wxCommandEvent & WXUNUSED(evt))
//
///////////////////////////////////////////////////////////////////////////////
class EffectPanel final : public wxPanel
class EffectPanel final : public wxPanelWrapper
{
public:
EffectPanel(wxWindow *parent)
: wxPanel(parent)
: wxPanelWrapper(parent)
{
// This fools NVDA into not saying "Panel" when the dialog gets focus
SetName(wxT("\a"));
@ -2984,8 +2984,8 @@ bool EffectUIHost::Initialize()
vs->Add(hs.release(), 1, wxEXPAND);
}
wxPanel *buttonPanel = safenew wxPanel(this, wxID_ANY);
wxPanel *const bar = safenew wxPanel(buttonPanel, wxID_ANY);
wxPanel *buttonPanel = safenew wxPanelWrapper(this, wxID_ANY);
wxPanel *const bar = safenew wxPanelWrapper(buttonPanel, wxID_ANY);
// This fools NVDA into not saying "Panel" when the dialog gets focus
bar->SetName(wxT("\a"));

View File

@ -106,7 +106,7 @@ EffectRack::EffectRack()
{
auto bs = std::make_unique<wxBoxSizer>(wxVERTICAL);
mPanel = safenew wxPanel(this, wxID_ANY);
mPanel = safenew wxPanelWrapper(this, wxID_ANY);
bs->Add(mPanel, 1, wxEXPAND);
SetSizer(bs.release());
}

View File

@ -732,7 +732,7 @@ void EffectEqualization::PopulateOrExchange(ShuttleGui & S)
szrG = S.GetSizer();
// Panel used to host the sliders since they will be positioned manually.
mGraphicPanel = safenew wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(-1, 150));
mGraphicPanel = safenew wxPanelWrapper(parent, wxID_ANY, wxDefaultPosition, wxSize(-1, 150));
S.Prop(1).AddWindow(mGraphicPanel, wxEXPAND);
for (int i = 0; (i < NUMBER_OF_BANDS) && (kThirdOct[i] <= mHiFreq); ++i)
@ -2887,7 +2887,7 @@ void EffectEqualization::OnBench( wxCommandEvent & event)
// EqualizationPanel
//----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(EqualizationPanel, wxPanel)
BEGIN_EVENT_TABLE(EqualizationPanel, wxPanelWrapper)
EVT_PAINT(EqualizationPanel::OnPaint)
EVT_MOUSE_EVENTS(EqualizationPanel::OnMouseEvent)
EVT_MOUSE_CAPTURE_LOST(EqualizationPanel::OnCaptureLost)
@ -2895,7 +2895,7 @@ BEGIN_EVENT_TABLE(EqualizationPanel, wxPanel)
END_EVENT_TABLE()
EqualizationPanel::EqualizationPanel(EffectEqualization *effect, wxWindow *parent)
: wxPanel(parent)
: wxPanelWrapper(parent)
{
mParent = parent;
mEffect = effect;

View File

@ -279,7 +279,7 @@ private:
friend class EditCurvesDialog;
};
class EqualizationPanel final : public wxPanel
class EqualizationPanel final : public wxPanelWrapper
{
public:
EqualizationPanel(EffectEqualization *effect, wxWindow *parent);

View File

@ -1008,13 +1008,13 @@ void EffectScienFilter::EnableDisableRippleCtl(int FilterType)
// EffectScienFilterPanel
//----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(EffectScienFilterPanel, wxPanel)
BEGIN_EVENT_TABLE(EffectScienFilterPanel, wxPanelWrapper)
EVT_PAINT(EffectScienFilterPanel::OnPaint)
EVT_SIZE(EffectScienFilterPanel::OnSize)
END_EVENT_TABLE()
EffectScienFilterPanel::EffectScienFilterPanel(EffectScienFilter *effect, wxWindow *parent)
: wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(400, 200))
: wxPanelWrapper(parent, wxID_ANY, wxDefaultPosition, wxSize(400, 200))
{
mEffect = effect;
mParent = parent;

View File

@ -135,7 +135,7 @@ private:
friend class EffectScienFilterPanel;
};
class EffectScienFilterPanel final : public wxPanel
class EffectScienFilterPanel final : public wxPanelWrapper
{
public:
EffectScienFilterPanel(EffectScienFilter *effect, wxWindow *parent);

View File

@ -25,7 +25,6 @@
#include <wx/filename.h>
#include <wx/frame.h>
#include <wx/listctrl.h>
#include <wx/panel.h>
#include <wx/sizer.h>
#include <wx/settings.h>
#include <wx/stattext.h>
@ -34,6 +33,7 @@
#include "../../ShuttleGui.h"
#include "../../widgets/valnum.h"
#include "../../widgets/wxPanelWrapper.h"
#include "AudioUnitEffect.h"
@ -1758,7 +1758,7 @@ bool AudioUnitEffect::PopulateUI(wxWindow *parent)
auto mainSizer = std::make_unique<wxBoxSizer>(wxVERTICAL);
wxASSERT(mParent); // To justify safenew
container = safenew wxPanel(mParent, wxID_ANY);
container = safenew wxPanelWrapper(mParent, wxID_ANY);
mainSizer->Add(container, 1, wxEXPAND);
mParent->SetSizer(mainSizer.release());

View File

@ -31,6 +31,7 @@
#include "../../Internat.h"
#include "../../ShuttleGui.h"
#include "../../widgets/valnum.h"
#include "../../widgets/wxPanelWrapper.h"
#include "lilv/lilv.h"
#include "suil/suil.h"
@ -1449,7 +1450,7 @@ bool LV2Effect::BuildFancy()
}
// Use a panel to host the plugins GUI
mContainer = safenew wxPanel(mParent, wxID_ANY);
mContainer = safenew wxPanelWrapper(mParent, wxID_ANY);
if (!mContainer)
{
lilv_uis_free(uis);

View File

@ -220,7 +220,7 @@ bool ExportPlugin::DisplayOptions(wxWindow * WXUNUSED(parent), int WXUNUSED(form
wxWindow *ExportPlugin::OptionsCreate(wxWindow *parent, int WXUNUSED(format))
{
wxASSERT(parent); // To justify safenew
wxPanel *p = safenew wxPanel(parent, wxID_ANY);
wxPanel *p = safenew wxPanelWrapper(parent, wxID_ANY);
ShuttleGui S(p, eIsCreatingFromPrefs);
S.StartHorizontalLay(wxCENTER);
@ -985,7 +985,7 @@ bool Exporter::SetAutoExportOptions(AudacityProject *project) {
// ExportMixerPanel
//----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(ExportMixerPanel, wxPanel)
BEGIN_EVENT_TABLE(ExportMixerPanel, wxPanelWrapper)
EVT_PAINT(ExportMixerPanel::OnPaint)
EVT_MOUSE_EVENTS(ExportMixerPanel::OnMouseEvent)
END_EVENT_TABLE()
@ -993,7 +993,7 @@ END_EVENT_TABLE()
ExportMixerPanel::ExportMixerPanel( MixerSpec *mixerSpec,
wxArrayString trackNames,wxWindow *parent, wxWindowID id,
const wxPoint& pos, const wxSize& size):
wxPanel(parent, id, pos, size)
wxPanelWrapper(parent, id, pos, size)
{
mBitmap = NULL;
mWidth = 0;

View File

@ -16,10 +16,10 @@
#include <wx/dialog.h>
#include <wx/dynarray.h>
#include <wx/filename.h>
#include <wx/panel.h>
#include <wx/simplebook.h>
#include "../Tags.h"
#include "../SampleFormat.h"
#include "../widgets/wxPanelWrapper.h"
#include "FileDialog.h"
@ -215,7 +215,7 @@ private:
//----------------------------------------------------------------------------
// ExportMixerPanel
//----------------------------------------------------------------------------
class ExportMixerPanel final : public wxPanel
class ExportMixerPanel final : public wxPanelWrapper
{
public:
ExportMixerPanel( MixerSpec *mixerSpec, wxArrayString trackNames,

View File

@ -39,7 +39,7 @@
// ExportCLOptions
//----------------------------------------------------------------------------
class ExportCLOptions final : public wxPanel
class ExportCLOptions final : public wxPanelWrapper
{
public:
ExportCLOptions(wxWindow *parent, int format);
@ -60,14 +60,14 @@ private:
#define ID_BROWSE 5000
BEGIN_EVENT_TABLE(ExportCLOptions, wxPanel)
BEGIN_EVENT_TABLE(ExportCLOptions, wxPanelWrapper)
EVT_BUTTON(ID_BROWSE, ExportCLOptions::OnBrowse)
END_EVENT_TABLE()
///
///
ExportCLOptions::ExportCLOptions(wxWindow *parent, int WXUNUSED(format))
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
mHistory.Load(*gPrefs, wxT("/FileFormats/ExternalProgramHistory"));

View File

@ -142,7 +142,7 @@ const int ExportFFmpegAC3Options::iAC3BitRates[] = { 32000, 40000, 48000, 56000,
const int ExportFFmpegAC3Options::iAC3SampleRates[] = { 32000, 44100, 48000, 0 };
ExportFFmpegAC3Options::ExportFFmpegAC3Options(wxWindow *parent, int WXUNUSED(format))
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
for (unsigned int i=0; i < (sizeof(iAC3BitRates)/sizeof(int)); i++)
{
@ -205,7 +205,7 @@ bool ExportFFmpegAC3Options::TransferDataFromWindow()
//----------------------------------------------------------------------------
ExportFFmpegAACOptions::ExportFFmpegAACOptions(wxWindow *parent, int WXUNUSED(format))
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
ShuttleGui S(this, eIsCreatingFromPrefs);
PopulateOrExchange(S);
@ -268,7 +268,7 @@ int ExportFFmpegAMRNBOptions::iAMRNBBitRate[] =
{ 4750, 5150, 5900, 6700, 7400, 7950, 10200, 12200 };
ExportFFmpegAMRNBOptions::ExportFFmpegAMRNBOptions(wxWindow *parent, int WXUNUSED(format))
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
for (unsigned int i=0; i < (sizeof(iAMRNBBitRate)/sizeof(int)); i++)
{
@ -338,7 +338,7 @@ const int ExportFFmpegWMAOptions::iWMABitRate[] =
{ 24000, 32000, 40000, 48000, 64000, 80000, 96000, 128000, 160000, 192000, 256000, 320000 };
ExportFFmpegWMAOptions::ExportFFmpegWMAOptions(wxWindow *parent, int WXUNUSED(format))
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
for (unsigned int i=0; i < (sizeof(iWMABitRate)/sizeof(int)); i++)
{
@ -402,12 +402,12 @@ bool ExportFFmpegWMAOptions::TransferDataFromWindow()
#define OpenID 9000
BEGIN_EVENT_TABLE(ExportFFmpegCustomOptions, wxPanel)
BEGIN_EVENT_TABLE(ExportFFmpegCustomOptions, wxPanelWrapper)
EVT_BUTTON(OpenID, ExportFFmpegCustomOptions::OnOpen)
END_EVENT_TABLE()
ExportFFmpegCustomOptions::ExportFFmpegCustomOptions(wxWindow *parent, int WXUNUSED(format))
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
ShuttleGui S(this, eIsCreatingFromPrefs);
PopulateOrExchange(S);

View File

@ -20,6 +20,7 @@ LRN
#include <wx/listimpl.cpp>
#include "../xml/XMLFileReader.h"
#include "../FileNames.h"
#include "../widgets/wxPanelWrapper.h"
/// Identifiers for pre-set export types.
@ -58,7 +59,7 @@ struct CompatibilityEntry
/// AC3 export options dialog
class ExportFFmpegAC3Options final : public wxPanel
class ExportFFmpegAC3Options final : public wxPanelWrapper
{
public:
@ -84,7 +85,7 @@ private:
int mBitRateFromChoice;
};
class ExportFFmpegAACOptions final : public wxPanel
class ExportFFmpegAACOptions final : public wxPanelWrapper
{
public:
@ -100,7 +101,7 @@ private:
wxSpinCtrl *mQualitySpin;
};
class ExportFFmpegAMRNBOptions final : public wxPanel
class ExportFFmpegAMRNBOptions final : public wxPanelWrapper
{
public:
@ -122,7 +123,7 @@ private:
int mBitRateFromChoice;
};
class ExportFFmpegWMAOptions final : public wxPanel
class ExportFFmpegWMAOptions final : public wxPanelWrapper
{
public:
@ -145,7 +146,7 @@ private:
int mBitRateFromChoice;
};
class ExportFFmpegCustomOptions final : public wxPanel
class ExportFFmpegCustomOptions final : public wxPanelWrapper
{
public:

View File

@ -47,7 +47,7 @@ and libvorbis examples, Monty <monty@xiph.org>
// ExportFLACOptions Class
//----------------------------------------------------------------------------
class ExportFLACOptions final : public wxPanel
class ExportFLACOptions final : public wxPanelWrapper
{
public:
@ -62,7 +62,7 @@ public:
///
///
ExportFLACOptions::ExportFLACOptions(wxWindow *parent, int WXUNUSED(format))
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
ShuttleGui S(this, eIsCreatingFromPrefs);
PopulateOrExchange(S);

View File

@ -82,7 +82,7 @@ static int iBitrates[] = {
192, 224, 256, 320, 384
};
class ExportMP2Options final : public wxPanel
class ExportMP2Options final : public wxPanelWrapper
{
public:
ExportMP2Options(wxWindow *parent, int format);
@ -100,7 +100,7 @@ private:
///
///
ExportMP2Options::ExportMP2Options(wxWindow *parent, int WXUNUSED(format))
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
for (unsigned int i=0; i < (sizeof(iBitrates)/sizeof(int)); i++)
{

View File

@ -262,7 +262,7 @@ static void InitMP3_Statics()
}
}
class ExportMP3Options final : public wxPanel
class ExportMP3Options final : public wxPanelWrapper
{
public:
@ -305,7 +305,7 @@ private:
DECLARE_EVENT_TABLE()
};
BEGIN_EVENT_TABLE(ExportMP3Options, wxPanel)
BEGIN_EVENT_TABLE(ExportMP3Options, wxPanelWrapper)
EVT_RADIOBUTTON(ID_SET, ExportMP3Options::OnSET)
EVT_RADIOBUTTON(ID_VBR, ExportMP3Options::OnVBR)
EVT_RADIOBUTTON(ID_ABR, ExportMP3Options::OnABR)
@ -317,7 +317,7 @@ END_EVENT_TABLE()
///
///
ExportMP3Options::ExportMP3Options(wxWindow *parent, int WXUNUSED(format))
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
InitMP3_Statics();

View File

@ -42,7 +42,7 @@
// ExportOGGOptions
//----------------------------------------------------------------------------
class ExportOGGOptions final : public wxPanel
class ExportOGGOptions final : public wxPanelWrapper
{
public:
@ -61,7 +61,7 @@ private:
///
///
ExportOGGOptions::ExportOGGOptions(wxWindow *parent, int WXUNUSED(format))
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
mOggQualityUnscaled = gPrefs->Read(wxT("/FileFormats/OggExportQuality"),50)/10;

View File

@ -92,7 +92,7 @@ static void WriteExportFormatPref(int format)
#define ID_HEADER_CHOICE 7102
#define ID_ENCODING_CHOICE 7103
class ExportPCMOptions final : public wxPanel
class ExportPCMOptions final : public wxPanelWrapper
{
public:
@ -123,12 +123,12 @@ private:
DECLARE_EVENT_TABLE()
};
BEGIN_EVENT_TABLE(ExportPCMOptions, wxPanel)
BEGIN_EVENT_TABLE(ExportPCMOptions, wxPanelWrapper)
EVT_CHOICE(ID_HEADER_CHOICE, ExportPCMOptions::OnHeaderChoice)
END_EVENT_TABLE()
ExportPCMOptions::ExportPCMOptions(wxWindow *parent, int selformat)
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
int format;

View File

@ -29,7 +29,7 @@
#include "../Menus.h"
#include "../toolbars/ToolManager.h"
BEGIN_EVENT_TABLE(BatchPrefs, wxPanel)
BEGIN_EVENT_TABLE(BatchPrefs, PrefsPanel)
END_EVENT_TABLE()
/// Constructor

View File

@ -28,8 +28,8 @@ ThemePrefs.
#ifndef __AUDACITY_PREFS_PANEL__
#define __AUDACITY_PREFS_PANEL__
#include <wx/panel.h>
#include <wx/window.h>
#include "../widgets/wxPanelWrapper.h"
/* A few constants for an attempt at semi-uniformity */
#define PREFS_FONT_SIZE 8
@ -40,11 +40,11 @@ ThemePrefs.
#define TOP_LEVEL_BORDER 5
#define GENERIC_CONTROL_BORDER 5
class PrefsPanel /* not final */ : public wxPanel
class PrefsPanel /* not final */ : public wxPanelWrapper
{
public:
PrefsPanel(wxWindow * parent, const wxString &title)
: wxPanel(parent, wxID_ANY)
: wxPanelWrapper(parent, wxID_ANY)
{
SetLabel(title); // Provide visual label
SetName(title); // Provide audible label

View File

@ -267,7 +267,7 @@ void ToolBarResizer::OnKeyDown(wxKeyEvent &event)
//
// Define class to RTTI
//
IMPLEMENT_CLASS( ToolBar, wxPanel );
IMPLEMENT_CLASS( ToolBar, wxPanelWrapper );
//
// Custom event
@ -277,7 +277,7 @@ DEFINE_EVENT_TYPE(EVT_TOOLBAR_UPDATED)
//
// Event table
//
BEGIN_EVENT_TABLE( ToolBar, wxPanel )
BEGIN_EVENT_TABLE( ToolBar, wxPanelWrapper )
EVT_PAINT( ToolBar::OnPaint )
EVT_ERASE_BACKGROUND( ToolBar::OnErase )
EVT_MOUSE_EVENTS( ToolBar::OnMouseEvents )
@ -290,7 +290,7 @@ ToolBar::ToolBar( int type,
const wxString &label,
const wxString &section,
bool resizable )
: wxPanel()
: wxPanelWrapper()
{
// Save parameters
mType = type;
@ -425,13 +425,13 @@ void ToolBar::Create( wxWindow *parent )
mParent = parent;
// Create the window and label it
wxPanel::Create( mParent,
wxPanelWrapper::Create( mParent,
mType,
wxDefaultPosition,
wxDefaultSize,
wxNO_BORDER | wxTAB_TRAVERSAL,
GetTitle() );
wxPanel::SetLabel( GetLabel() );
wxPanelWrapper::SetLabel( GetLabel() );
// Go do the rest of the creation
ReCreateButtons();

View File

@ -17,10 +17,10 @@
#include <vector>
#include <wx/defs.h>
#include <wx/panel.h>
#include <wx/sizer.h>
#include "../Theme.h"
#include "../widgets/wxPanelWrapper.h"
class wxDC;
class wxEraseEvent;
@ -84,7 +84,7 @@ enum
// How may pixels padding each side of a floating toolbar
enum { ToolBarFloatMargin = 1 };
class ToolBar /* not final */ : public wxPanel
class ToolBar /* not final */ : public wxPanelWrapper
{
public:

View File

@ -325,7 +325,7 @@ void ToolBarConfiguration::Write
gPrefs->Write( wxT("Show"), bar->IsVisible() );
}
IMPLEMENT_CLASS( ToolDock, wxPanel );
IMPLEMENT_CLASS( ToolDock, wxPanelWrapper );
////////////////////////////////////////////////////////////
/// Methods for ToolDock
@ -336,7 +336,7 @@ IMPLEMENT_CLASS( ToolDock, wxPanel );
//
DEFINE_EVENT_TYPE( EVT_TOOLBAR_FLOAT );
BEGIN_EVENT_TABLE( ToolDock, wxPanel )
BEGIN_EVENT_TABLE( ToolDock, wxPanelWrapper )
EVT_GRABBER( wxID_ANY, ToolDock::OnGrabber )
EVT_ERASE_BACKGROUND( ToolDock::OnErase )
EVT_PAINT( ToolDock::OnPaint )
@ -348,7 +348,7 @@ END_EVENT_TABLE()
// Constructor
//
ToolDock::ToolDock( ToolManager *manager, wxWindow *parent, int dockid ):
wxPanel( parent, dockid, wxDefaultPosition, parent->GetSize() )
wxPanelWrapper( parent, dockid, wxDefaultPosition, parent->GetSize() )
{
SetLabel( _( "ToolDock" ) );
SetName( _( "ToolDock" ) );

View File

@ -16,7 +16,6 @@
#include <vector>
#include "../MemoryX.h" // for std::move
#include <wx/defs.h>
#include <wx/panel.h>
#include "ToolBar.h"
@ -282,7 +281,7 @@ private:
Forest mForest;
};
class ToolDock final : public wxPanel
class ToolDock final : public wxPanelWrapper
{
public:

View File

@ -13,7 +13,7 @@ BackedPanel::BackedPanel(wxWindow * parent, wxWindowID id,
const wxPoint & pos,
const wxSize & size,
long style)
: wxPanel(parent, id, pos, size, style)
: wxPanelWrapper(parent, id, pos, size, style)
, mBacking{ safenew wxBitmap(1, 1) }
{
// Preinit the backing DC and bitmap so routines that require it will
@ -77,7 +77,7 @@ void BackedPanel::OnSize(wxSizeEvent & /* event */)
Refresh();
}
BEGIN_EVENT_TABLE(BackedPanel, wxPanel)
BEGIN_EVENT_TABLE(BackedPanel, wxPanelWrapper)
EVT_SIZE(BackedPanel::OnSize)
END_EVENT_TABLE()

View File

@ -10,10 +10,10 @@
#define __AUDACITY_BACKED_PANEL__
#include "../MemoryX.h"
#include <wx/panel.h>
#include <wx/dcmemory.h>
#include "wxPanelWrapper.h"
class AUDACITY_DLL_API BackedPanel /* not final */ : public wxPanel {
class AUDACITY_DLL_API BackedPanel /* not final */ : public wxPanelWrapper {
public:
BackedPanel(wxWindow * parent, wxWindowID id,
const wxPoint & pos,

View File

@ -107,13 +107,13 @@ public:
// ExpandingToolBar
//
BEGIN_EVENT_TABLE(ExpandingToolBar, wxPanel)
BEGIN_EVENT_TABLE(ExpandingToolBar, wxPanelWrapper)
EVT_SIZE(ExpandingToolBar::OnSize)
EVT_TIMER(kTimerID, ExpandingToolBar::OnTimer)
EVT_BUTTON(kToggleButtonID, ExpandingToolBar::OnToggle)
END_EVENT_TABLE()
IMPLEMENT_CLASS(ExpandingToolBar, wxPanel)
IMPLEMENT_CLASS(ExpandingToolBar, wxPanelWrapper)
//static
int ExpandingToolBar::msNoAutoExpandStack = 0;
@ -122,7 +122,7 @@ ExpandingToolBar::ExpandingToolBar(wxWindow* parent,
wxWindowID id,
const wxPoint& pos,
const wxSize& size):
wxPanel(parent, id, pos, size),
wxPanelWrapper(parent, id, pos, size),
mIsAutoExpanded(false),
mIsManualExpanded(false),
mIsExpanded(false),
@ -135,9 +135,9 @@ ExpandingToolBar::ExpandingToolBar(wxWindow* parent,
mDragImage(NULL),
mTopLevelParent(NULL)
{
mMainPanel = safenew wxPanel(this, -1,
mMainPanel = safenew wxPanelWrapper(this, -1,
wxDefaultPosition, wxSize(1, 1));
mExtraPanel = safenew wxPanel(this, -1,
mExtraPanel = safenew wxPanelWrapper(this, -1,
wxDefaultPosition, wxSize(1, 1));
mGrabber = NULL;
@ -655,20 +655,20 @@ void ExpandingToolBar::FinishMoving()
// ToolBarGrabber
//
BEGIN_EVENT_TABLE(ToolBarGrabber, wxPanel)
BEGIN_EVENT_TABLE(ToolBarGrabber, wxPanelWrapper)
EVT_PAINT(ToolBarGrabber::OnPaint)
EVT_SIZE(ToolBarGrabber::OnSize)
EVT_MOUSE_EVENTS(ToolBarGrabber::OnMouse)
END_EVENT_TABLE()
IMPLEMENT_CLASS(ToolBarGrabber, wxPanel)
IMPLEMENT_CLASS(ToolBarGrabber, wxPanelWrapper)
ToolBarGrabber::ToolBarGrabber(wxWindow *parent,
wxWindowID id,
ExpandingToolBar *ownerToolbar,
const wxPoint& pos,
const wxSize& size):
wxPanel(parent, id, pos, size),
wxPanelWrapper(parent, id, pos, size),
mOwnerToolBar(ownerToolbar)
{
wxImage grabberImages = theTheme.Image(bmpToolBarGrabber);
@ -835,18 +835,18 @@ void ToolBarFrame::Fit()
// ToolBarArea
//
BEGIN_EVENT_TABLE(ToolBarArea, wxPanel)
BEGIN_EVENT_TABLE(ToolBarArea, wxPanelWrapper)
EVT_SIZE(ToolBarArea::OnSize)
EVT_MOUSE_EVENTS(ToolBarArea::OnMouse)
END_EVENT_TABLE()
IMPLEMENT_CLASS(ToolBarArea, wxPanel)
IMPLEMENT_CLASS(ToolBarArea, wxPanelWrapper)
ToolBarArea::ToolBarArea(wxWindow* parent,
wxWindowID id,
const wxPoint& pos,
const wxSize& size):
wxPanel(parent, id, pos, size),
wxPanelWrapper(parent, id, pos, size),
mInOnSize(false),
mCapturedChild(NULL)
{

View File

@ -20,6 +20,7 @@
#include <wx/minifram.h>
#include "ImageRoll.h"
#include "wxPanelWrapper.h"
class wxDragImage;
@ -43,7 +44,7 @@ WX_DECLARE_OBJARRAY(wxRect, wxArrayRect);
// Can be docked into a ToolBarArea or floated in an ToolBarFrame;
//
class ExpandingToolBar final : public wxPanel
class ExpandingToolBar final : public wxPanelWrapper
{
public:
DECLARE_DYNAMIC_CLASS(ExpandingToolBar)
@ -121,7 +122,7 @@ class ExpandingToolBar final : public wxPanel
friend class ExpandingToolBarEvtHandler;
};
class ToolBarGrabber final : public wxPanel
class ToolBarGrabber final : public wxPanelWrapper
{
public:
DECLARE_DYNAMIC_CLASS(ToolBarGrabber);
@ -193,7 +194,7 @@ class ToolBarFrame final : public wxMiniFrame
// ToolBarArea sets the height dynamically based on the number of
// toolbars it contains.
//
class ToolBarArea final : public wxPanel
class ToolBarArea final : public wxPanelWrapper
{
public:
DECLARE_DYNAMIC_CLASS(ToolBarArea)

View File

@ -414,12 +414,12 @@ void ImageRoll::Draw(wxDC &dc, wxRect rect, wxRasterOperationMode WXUNUSED(logic
} // switch
}
BEGIN_EVENT_TABLE(ImageRollPanel, wxPanel)
BEGIN_EVENT_TABLE(ImageRollPanel, wxPanelWrapper)
EVT_PAINT(ImageRollPanel::OnPaint)
EVT_SIZE(ImageRollPanel::OnSize)
END_EVENT_TABLE()
IMPLEMENT_CLASS(ImageRollPanel, wxPanel)
IMPLEMENT_CLASS(ImageRollPanel, wxPanelWrapper)
ImageRollPanel::ImageRollPanel(wxWindow *parent,
wxWindowID id,
@ -427,7 +427,7 @@ ImageRollPanel::ImageRollPanel(wxWindow *parent,
const wxPoint& pos,
const wxSize& size,
long style):
wxPanel(parent, id, pos, size, style),
wxPanelWrapper(parent, id, pos, size, style),
mImageRoll(imgRoll),
mLogicalFunction(wxCOPY)
{

View File

@ -16,8 +16,8 @@
#include <wx/dcclient.h>
#include <wx/defs.h>
#include <wx/dynarray.h>
#include <wx/panel.h>
#include <wx/version.h>
#include "wxPanelWrapper.h"
#if !wxCHECK_VERSION(3,0,0)
#define wxRasterOperationMode int
@ -67,7 +67,7 @@ class ImageRoll
// A very simple class that just display an ImageRoll that doesn't
// do anything
class ImageRollPanel final : public wxPanel
class ImageRollPanel final : public wxPanelWrapper
{
public:
DECLARE_DYNAMIC_CLASS(ImageRollPanel);

View File

@ -192,7 +192,7 @@ enum {
OnPreferencesID
};
BEGIN_EVENT_TABLE(Meter, wxPanel)
BEGIN_EVENT_TABLE(Meter, wxPanelWrapper)
EVT_TIMER(OnMeterUpdateID, Meter::OnMeterUpdate)
EVT_MOUSE_EVENTS(Meter::OnMouse)
EVT_CONTEXT_MENU(Meter::OnContext)
@ -207,7 +207,7 @@ BEGIN_EVENT_TABLE(Meter, wxPanel)
EVT_MENU(OnPreferencesID, Meter::OnPreferences)
END_EVENT_TABLE()
IMPLEMENT_CLASS(Meter, wxPanel)
IMPLEMENT_CLASS(Meter, wxPanelWrapper)
Meter::Meter(AudacityProject *project,
wxWindow* parent, wxWindowID id,
@ -216,7 +216,7 @@ Meter::Meter(AudacityProject *project,
const wxSize& size /*= wxDefaultSize*/,
Style style /*= HorizontalStereo*/,
float fDecayRate /*= 60.0f*/)
: wxPanel(parent, id, pos, size, wxTAB_TRAVERSAL | wxNO_BORDER | wxWANTS_CHARS),
: wxPanelWrapper(parent, id, pos, size, wxTAB_TRAVERSAL | wxNO_BORDER | wxWANTS_CHARS),
mProject(project),
mQueue(1024),
mWidth(size.x),

View File

@ -17,7 +17,6 @@
#define __AUDACITY_METER__
#include <wx/defs.h>
#include <wx/panel.h>
#include <wx/timer.h>
#include "../SampleFormat.h"
@ -86,7 +85,7 @@ class MeterUpdateQueue
class MeterAx;
class Meter final : public wxPanel
class Meter final : public wxPanelWrapper
{
DECLARE_DYNAMIC_CLASS(Meter)

View File

@ -1603,18 +1603,18 @@ void Ruler::SetUseZoomInfo(int leftOffset, const ZoomInfo *zoomInfo)
// RulerPanel
//
BEGIN_EVENT_TABLE(RulerPanel, wxPanel)
BEGIN_EVENT_TABLE(RulerPanel, wxPanelWrapper)
EVT_ERASE_BACKGROUND(RulerPanel::OnErase)
EVT_PAINT(RulerPanel::OnPaint)
EVT_SIZE(RulerPanel::OnSize)
END_EVENT_TABLE()
IMPLEMENT_CLASS(RulerPanel, wxPanel)
IMPLEMENT_CLASS(RulerPanel, wxPanelWrapper)
RulerPanel::RulerPanel(wxWindow* parent, wxWindowID id,
const wxPoint& pos /*= wxDefaultPosition*/,
const wxSize& size /*= wxDefaultSize*/):
wxPanel(parent, id, pos, size)
wxPanelWrapper(parent, id, pos, size)
{
}
@ -1651,7 +1651,7 @@ void RulerPanel::DoSetSize(int x, int y,
int width, int height,
int sizeFlags)
{
wxPanel::DoSetSize(x, y, width, height, sizeFlags);
wxPanelWrapper::DoSetSize(x, y, width, height, sizeFlags);
int w, h;
GetClientSize(&w, &h);

View File

@ -243,7 +243,7 @@ private:
NumberScale *mpNumberScale;
};
class AUDACITY_DLL_API RulerPanel final : public wxPanel {
class AUDACITY_DLL_API RulerPanel final : public wxPanelWrapper {
DECLARE_DYNAMIC_CLASS(RulerPanel)
public:

View File

@ -0,0 +1,37 @@
//
// wxPanelWrapper.cpp
// Audacity
//
// Created by Paul Licameli on 6/25/16.
//
//
#include "../Audacity.h"
#include "wxPanelWrapper.h"
IMPLEMENT_CLASS(wxPanelWrapper, wxPanel)
wxPanelWrapper::wxPanelWrapper(wxWindow * parent, wxWindowID id,
const wxPoint & pos,
const wxSize & size,
long style)
: wxPanel(parent, id, pos, size, style)
{}
void wxPanelWrapper::OnCharHook(wxKeyEvent &event)
{
if (event.GetKeyCode() == WXK_TAB) {
wxWindow::FindFocus()->Navigate(
event.ShiftDown()
? wxNavigationKeyEvent::IsBackward
: wxNavigationKeyEvent::IsForward
);
return;
}
event.Skip();
}
BEGIN_EVENT_TABLE(wxPanelWrapper, wxPanel)
EVT_CHAR_HOOK(wxPanelWrapper::OnCharHook)
END_EVENT_TABLE()

View File

@ -0,0 +1,32 @@
//
// wxPanelWrapper.h
// Audacity
//
// Created by Paul Licameli on 6/25/16.
//
//
#ifndef __AUDACITY_WXPANEL_WRAPPER__
#define __AUDACITY_WXPANEL_WRAPPER__
#include <wx/panel.h>
class AUDACITY_DLL_API wxPanelWrapper /* not final */ : public wxPanel {
public:
wxPanelWrapper() : wxPanel {} {}
wxPanelWrapper(wxWindow * parent, wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
// default as for wxPanel:
long style = wxTAB_TRAVERSAL | wxNO_BORDER);
private:
void OnCharHook(wxKeyEvent &event);
DECLARE_DYNAMIC_CLASS(wxPanelWrapper);
DECLARE_EVENT_TABLE()
};
#endif

View File

@ -231,6 +231,7 @@
<ClCompile Include="..\..\..\src\widgets\NumericTextCtrl.cpp" />
<ClCompile Include="..\..\..\src\widgets\Overlay.cpp" />
<ClCompile Include="..\..\..\src\widgets\OverlayPanel.cpp" />
<ClCompile Include="..\..\..\src\widgets\wxPanelWrapper.cpp" />
<ClCompile Include="..\..\..\src\WrappedType.cpp" />
<ClCompile Include="..\..\..\src\effects\Amplify.cpp" />
<ClCompile Include="..\..\..\src\effects\AutoDuck.cpp" />
@ -462,6 +463,7 @@
<ClInclude Include="..\..\..\src\widgets\NumericTextCtrl.h" />
<ClInclude Include="..\..\..\src\widgets\Overlay.h" />
<ClInclude Include="..\..\..\src\widgets\OverlayPanel.h" />
<ClInclude Include="..\..\..\src\widgets\wxPanelWrapper.h" />
<ClInclude Include="..\..\..\src\wxFileNameWrapper.h" />
<ClInclude Include="..\..\configwin.h" />
<ClInclude Include="..\..\..\src\Dependencies.h" />

View File

@ -887,6 +887,9 @@
<ClCompile Include="..\..\..\src\toolbars\ScrubbingToolBar.cpp">
<Filter>src\toolbars</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\widgets\wxPanelWrapper.cpp">
<Filter>src\widgets</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\AboutDialog.h">
@ -1795,6 +1798,9 @@
<ClInclude Include="..\..\..\src\toolbars\ScrubbingToolBar.h">
<Filter>src\toolbars</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\widgets\wxPanelWrapper.h">
<Filter>src\widgets</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\..\audacity.ico">