mirror of https://github.com/PCSX2/pcsx2.git
wx: properly overwrite trait creation
The fix move the Pcsx2AppTraits definition from core to common part. It allows to use it in wxAppWithHelpers::CreateTraits fix issue #352
This commit is contained in:
parent
60c0eb7179
commit
5d89454d25
|
@ -0,0 +1,44 @@
|
|||
/* PCSX2 - PS2 Emulator for PCs
|
||||
* Copyright (C) 2002-2014 PCSX2 Dev Team
|
||||
*
|
||||
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU Lesser General Public License as published by the Free Software Found-
|
||||
* ation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with PCSX2.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wx/apptrait.h>
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
// Pcsx2AppTraits
|
||||
// --------------------------------------------------------------------------------------
|
||||
// Overrides and customizes some default wxWidgets behaviors. This class is instanized by
|
||||
// calls to Pcsx2App::CreateTraits(), which is called from wxWidgets as-needed. wxWidgets
|
||||
// does cache an instance of the traits, so the object construction need not be trivial
|
||||
// (translation: it can be complicated-ish -- it won't affect performance).
|
||||
//
|
||||
class Pcsx2AppTraits : public wxGUIAppTraits
|
||||
{
|
||||
typedef wxGUIAppTraits _parent;
|
||||
|
||||
public:
|
||||
virtual ~Pcsx2AppTraits() {}
|
||||
wxMessageOutput* CreateMessageOutput();
|
||||
|
||||
#ifdef wxUSE_STDPATHS
|
||||
#if wxMAJOR_VERSION < 3
|
||||
wxStandardPathsBase& GetStandardPaths();
|
||||
#else
|
||||
wxStandardPaths& GetStandardPaths();
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
#include "Threading.h"
|
||||
#include "wxGuiTools.h"
|
||||
#include "pxEvents.h"
|
||||
#include "AppTrait.h"
|
||||
|
||||
using namespace Threading;
|
||||
|
||||
|
@ -81,6 +82,8 @@ public:
|
|||
wxAppWithHelpers();
|
||||
virtual ~wxAppWithHelpers() {}
|
||||
|
||||
wxAppTraits* CreateTraits();
|
||||
|
||||
void CleanUp();
|
||||
|
||||
void DeleteObject( BaseDeletableObject& obj );
|
||||
|
|
|
@ -664,6 +664,18 @@ void wxAppWithHelpers::OnDeleteObject( wxCommandEvent& evt )
|
|||
delete (BaseDeletableObject*)evt.GetClientData();
|
||||
}
|
||||
|
||||
// In theory we create a Pcsx2App object which inherit from wxAppWithHelpers,
|
||||
// so Pcsx2App::CreateTraits must be used instead.
|
||||
//
|
||||
// However it doesn't work this way because wxAppWithHelpers constructor will
|
||||
// be called first. This constructor will build some wx objects (here wxTimer)
|
||||
// that require a trait. In others word, wxAppWithHelpers::CreateTraits will be
|
||||
// called instead
|
||||
wxAppTraits* wxAppWithHelpers::CreateTraits()
|
||||
{
|
||||
return new Pcsx2AppTraits;
|
||||
}
|
||||
|
||||
// Threads have their own deletion handler that propagates exceptions thrown by the thread to the UI.
|
||||
// (thus we have a fairly automatic threaded exception system!)
|
||||
void wxAppWithHelpers::OnDeleteThread( wxCommandEvent& evt )
|
||||
|
|
|
@ -362,31 +362,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
// Pcsx2AppTraits
|
||||
// --------------------------------------------------------------------------------------
|
||||
// Overrides and customizes some default wxWidgets behaviors. This class is instanized by
|
||||
// calls to Pcsx2App::CreateTraits(), which is called from wxWidgets as-needed. wxWidgets
|
||||
// does cache an instance of the traits, so the object construction need not be trivial
|
||||
// (translation: it can be complicated-ish -- it won't affect performance).
|
||||
//
|
||||
class Pcsx2AppTraits : public wxGUIAppTraits
|
||||
{
|
||||
typedef wxGUIAppTraits _parent;
|
||||
|
||||
public:
|
||||
virtual ~Pcsx2AppTraits() {}
|
||||
wxMessageOutput* CreateMessageOutput();
|
||||
|
||||
#ifdef wxUSE_STDPATHS
|
||||
#if wxMAJOR_VERSION < 3
|
||||
wxStandardPathsBase& GetStandardPaths();
|
||||
#else
|
||||
wxStandardPaths& GetStandardPaths();
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
|
||||
// =====================================================================================================
|
||||
// Pcsx2App - main wxApp class
|
||||
// =====================================================================================================
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "Debugger/DisassemblyDialog.h"
|
||||
|
||||
#include "Utilities/IniInterface.h"
|
||||
#include "Utilities/AppTrait.h"
|
||||
|
||||
#include <wx/stdpaths.h>
|
||||
|
||||
|
|
Loading…
Reference in New Issue