1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-24 16:20:05 +02:00

Fix memory leaks, though in unused code...

... Is this kept around for future use?
This commit is contained in:
Paul Licameli 2016-08-14 10:20:50 -04:00
parent 17faf86967
commit d84e1cc45e
2 changed files with 19 additions and 7 deletions

View File

@ -132,7 +132,6 @@ ExpandingToolBar::ExpandingToolBar(wxWindow* parent,
mDialogParent(NULL),
mAreaParent(NULL),
mSavedArrangement{},
mDragImage(NULL),
mTopLevelParent(NULL)
{
mMainPanel = safenew wxPanelWrapper(this, -1,
@ -280,11 +279,15 @@ class ExpandingToolBarEvtHandler final : public wxEvtHandler
{
public:
ExpandingToolBarEvtHandler(ExpandingToolBar *toolbar,
wxWindow *window,
wxEvtHandler *inheritedEvtHandler)
{
mToolBar = toolbar;
mWindow = window;
mInheritedEvtHandler = inheritedEvtHandler;
}
window->PushEventHandler(this);
}
bool ProcessEvent(wxEvent& evt) override
{
@ -296,8 +299,14 @@ class ExpandingToolBarEvtHandler final : public wxEvtHandler
return mInheritedEvtHandler->ProcessEvent(evt);
}
~ExpandingToolBarEvtHandler()
{
mWindow->RemoveEventHandler(this);
}
protected:
ExpandingToolBar *mToolBar;
wxWindow *mWindow;
wxEvtHandler *mInheritedEvtHandler;
DECLARE_NO_COPY_CLASS(ExpandingToolBarEvtHandler);
@ -306,9 +315,8 @@ protected:
void ExpandingToolBar::RecursivelyPushEventHandlers(wxWindow *win)
{
if (!mWindowHash[win]) {
ExpandingToolBarEvtHandler *evtHandler =
new ExpandingToolBarEvtHandler(this, win->GetEventHandler());
win->PushEventHandler(evtHandler);
mHandlers.push_back(make_movable<ExpandingToolBarEvtHandler>
(this, win, win->GetEventHandler()));
mWindowHash[win] = 1;
}
@ -556,7 +564,7 @@ void ExpandingToolBar::StartMoving()
mAreaParent->SetCapturedChild(this);
mDragImage = new wxDragImage(toolbarBitmap);
mDragImage = std::make_unique<wxDragImage>(toolbarBitmap);
mDragImage->BeginDrag(hotSpot, mAreaParent, mTopLevelParent);
mDragImage->Show();
mDragImage->Move(ScreenToClient(wxGetMousePosition()));

View File

@ -12,6 +12,7 @@
#define __AUDACITY_EXPANDING_TOOL_BAR__
#include "../MemoryX.h"
#include <vector>
#include <wx/defs.h>
#include <wx/dialog.h>
#include <wx/dynarray.h>
@ -39,6 +40,8 @@ WX_DECLARE_VOIDPTR_HASH_MAP(int, WindowHash);
WX_DEFINE_ARRAY(ExpandingToolBar *, ExpandingToolBarArray);
WX_DECLARE_OBJARRAY(wxRect, wxArrayRect);
class ExpandingToolBarEvtHandler;
//
// A smart ToolBar class that has a "MainPanel" which is always
// displayed, and an "ExtraPanel" that can be hidden to save space.
@ -111,7 +114,7 @@ class ExpandingToolBar final : public wxPanelWrapper
ToolBarArea *mAreaParent;
std::unique_ptr<ToolBarArrangement> mSavedArrangement;
ImageRollPanel *mTargetPanel;
wxDragImage *mDragImage;
std::unique_ptr<wxDragImage> mDragImage;
wxWindow *mTopLevelParent;
wxArrayRect mDropTargets;
wxRect mDropTarget;
@ -121,6 +124,7 @@ class ExpandingToolBar final : public wxPanelWrapper
DECLARE_EVENT_TABLE();
friend class ExpandingToolBarEvtHandler;
std::vector< movable_ptr< ExpandingToolBarEvtHandler > > mHandlers;
};
class ToolBarGrabber final : public wxPanelWrapper