From: Jaakko Salli Date: Mon, 29 Sep 2008 16:50:03 +0000 (+0000) Subject: RegisterAdditionalEditors() to work even if no wxPropertyGrids created, in sample... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/c8074be06b2ee7cd5f6d7a90e6b4bf392415fc51 RegisterAdditionalEditors() to work even if no wxPropertyGrids created, in sample moved editor registration before first CreateGrid() call to prevent crash, removed wxPG_USE_WXMODULE support git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55953 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/samples/propgrid/propgrid.cpp b/samples/propgrid/propgrid.cpp index e403060614..5772484f8c 100644 --- a/samples/propgrid/propgrid.cpp +++ b/samples/propgrid/propgrid.cpp @@ -2069,6 +2069,13 @@ FormMain::FormMain(const wxString& title, const wxPoint& pos, const wxSize& size wxInitAllImageHandlers(); #endif + // Register all editors (SpinCtrl etc.) + m_pPropGridManager->RegisterAdditionalEditors(); + + // Register our sample custom editors + m_pSampleMultiButtonEditor = + wxPropertyGrid::RegisterEditorClass(new wxSampleMultiButtonEditor()); + CreateGrid( // style wxPG_BOLD_MODIFIED | wxPG_SPLITTER_AUTO_CENTER | @@ -2088,13 +2095,6 @@ FormMain::FormMain(const wxString& title, const wxPoint& pos, const wxSize& size //| wxPG_EX_HELP_AS_TOOLTIPS ); - // Register all editors (SpinCtrl etc.) - m_pPropGridManager->RegisterAdditionalEditors(); - - // Register our sample custom editors - m_pSampleMultiButtonEditor = - wxPropertyGrid::RegisterEditorClass(new wxSampleMultiButtonEditor()); - // // Create menubar wxMenu *menuFile = new wxMenu(wxEmptyString, wxMENU_TEAROFF); diff --git a/src/propgrid/advprops.cpp b/src/propgrid/advprops.cpp index e325cf9e1e..71a57d4cb1 100644 --- a/src/propgrid/advprops.cpp +++ b/src/propgrid/advprops.cpp @@ -1993,6 +1993,10 @@ void wxPropertyGridInterface::InitAllTypeHandlers() void wxPropertyGridInterface::RegisterAdditionalEditors() { + // Register editor classes, if necessary. + if ( wxPGGlobalVars->m_mapEditorClasses.empty() ) + wxPropertyGrid::RegisterDefaultEditors(); + #if wxUSE_SPINBTN wxPGRegisterEditorClass(SpinCtrl); #endif diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp index 317e4c0eb4..42c77e223a 100644 --- a/src/propgrid/propgrid.cpp +++ b/src/propgrid/propgrid.cpp @@ -138,17 +138,8 @@ const wxChar *wxPropertyGridNameStr = wxT("wxPropertyGrid"); // ----------------------------------------------------------------------- // Statics in one class for easy destruction. -// NB: We prefer to use wxModule, as it offers more consistent behavior -// across platforms. However, for those rare problem situations, we -// also need to offer option to use simpler approach. // ----------------------------------------------------------------------- -#ifndef wxPG_USE_WXMODULE - #define wxPG_USE_WXMODULE 1 -#endif - -#if wxPG_USE_WXMODULE - #include class wxPGGlobalVarsClassManager : public wxModule @@ -162,19 +153,6 @@ public: IMPLEMENT_DYNAMIC_CLASS(wxPGGlobalVarsClassManager, wxModule) -#else // !wxPG_USE_WXMODULE - -class wxPGGlobalVarsClassManager -{ -public: - wxPGGlobalVarsClassManager() {} - ~wxPGGlobalVarsClassManager() { delete wxPGGlobalVars; } -}; - -static wxPGGlobalVarsClassManager gs_pgGlobalVarsClassManager; - -#endif - wxPGGlobalVarsClass* wxPGGlobalVars = (wxPGGlobalVarsClass*) NULL; @@ -249,6 +227,10 @@ wxPGGlobalVarsClass::~wxPGGlobalVarsClass() delete wxPGProperty::sm_wxPG_LABEL; } +void wxPropertyGridInitGlobalsIfNeeded() +{ +} + // ----------------------------------------------------------------------- // wxPGBrush // ----------------------------------------------------------------------- @@ -567,14 +549,9 @@ bool wxPropertyGrid::Create( wxWindow *parent, // void wxPropertyGrid::Init1() { -#if !wxPG_USE_WXMODULE - if ( !wxPGGlobalVars ) - wxPGGlobalVars = new wxPGGlobalVarsClass(); -#endif - // Register editor classes, if necessary. if ( wxPGGlobalVars->m_mapEditorClasses.empty() ) - RegisterDefaultEditors(); + wxPropertyGrid::RegisterDefaultEditors(); m_iFlags = 0; m_pState = (wxPropertyGridPageState*) NULL;