Ensure ResMgr outlives Resources
This commit is contained in:
parent
4762788eb4
commit
bc99f1ce4c
@ -62,6 +62,7 @@ $(eval $(call gb_Library_add_exception_objects,forui,\
|
|||||||
formula/source/ui/dlg/FormulaHelper \
|
formula/source/ui/dlg/FormulaHelper \
|
||||||
formula/source/ui/dlg/funcpage \
|
formula/source/ui/dlg/funcpage \
|
||||||
formula/source/ui/dlg/funcutl \
|
formula/source/ui/dlg/funcutl \
|
||||||
|
formula/source/ui/dlg/omoduleclient \
|
||||||
formula/source/ui/dlg/parawin \
|
formula/source/ui/dlg/parawin \
|
||||||
formula/source/ui/dlg/structpg \
|
formula/source/ui/dlg/structpg \
|
||||||
formula/source/ui/resource/ModuleHelper \
|
formula/source/ui/resource/ModuleHelper \
|
||||||
|
@ -40,6 +40,7 @@ $(eval $(call gb_Package_add_file,formula_inc,inc/formula/funcutl.hxx,funcutl.hx
|
|||||||
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/grammar.hxx,grammar.hxx))
|
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/grammar.hxx,grammar.hxx))
|
||||||
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/IControlReferenceHandler.hxx,IControlReferenceHandler.hxx))
|
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/IControlReferenceHandler.hxx,IControlReferenceHandler.hxx))
|
||||||
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/IFunctionDescription.hxx,IFunctionDescription.hxx))
|
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/IFunctionDescription.hxx,IFunctionDescription.hxx))
|
||||||
|
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/omoduleclient.hxx,omoduleclient.hxx))
|
||||||
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/opcode.hxx,opcode.hxx))
|
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/opcode.hxx,opcode.hxx))
|
||||||
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/tokenarray.hxx,tokenarray.hxx))
|
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/tokenarray.hxx,tokenarray.hxx))
|
||||||
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/token.hxx,token.hxx))
|
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/token.hxx,token.hxx))
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include <sfx2/basedlgs.hxx>
|
#include <sfx2/basedlgs.hxx>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include "formula/formuladllapi.h"
|
#include "formula/formuladllapi.h"
|
||||||
|
#include "formula/omoduleclient.hxx"
|
||||||
|
|
||||||
namespace formula
|
namespace formula
|
||||||
{
|
{
|
||||||
@ -87,7 +88,13 @@ protected:
|
|||||||
void Update(const String& _sExp);
|
void Update(const String& _sExp);
|
||||||
};
|
};
|
||||||
|
|
||||||
class FORMULA_DLLPUBLIC FormulaDlg : public SfxModelessDialog
|
class FORMULA_DLLPUBLIC FormulaDlg:
|
||||||
|
private OModuleClient, public SfxModelessDialog
|
||||||
|
// order of base classes is important, as OModuleClient controls the
|
||||||
|
// lifecycle of the ResMgr passed into SfxModelessDialog (via
|
||||||
|
// formula::ModuleRes), and at least with DBG_UTIL calling TestRes in
|
||||||
|
// ~Resource, the ResMgr must outlive the Resource (from which
|
||||||
|
// SfxModelessDialog ultimately derives)
|
||||||
{
|
{
|
||||||
friend class FormulaDlg_Impl;
|
friend class FormulaDlg_Impl;
|
||||||
public:
|
public:
|
||||||
|
52
formula/inc/formula/omoduleclient.hxx
Normal file
52
formula/inc/formula/omoduleclient.hxx
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*************************************************************************
|
||||||
|
*
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
*
|
||||||
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||||
|
*
|
||||||
|
* OpenOffice.org - a multi-platform office productivity suite
|
||||||
|
*
|
||||||
|
* This file is part of OpenOffice.org.
|
||||||
|
*
|
||||||
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License version 3
|
||||||
|
* only, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* OpenOffice.org 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 Lesser General Public License version 3 for more details
|
||||||
|
* (a copy is included in the LICENSE file that accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* version 3 along with OpenOffice.org. If not, see
|
||||||
|
* <http://www.openoffice.org/license.html>
|
||||||
|
* for a copy of the LGPLv3 License.
|
||||||
|
*
|
||||||
|
************************************************************************/
|
||||||
|
|
||||||
|
#ifndef INCLUDED_FORMULA_MODULECLIENT_HXX
|
||||||
|
#define INCLUDED_FORMULA_MODULECLIENT_HXX
|
||||||
|
|
||||||
|
#include "sal/config.h"
|
||||||
|
|
||||||
|
#include "boost/noncopyable.hpp"
|
||||||
|
#include "formula/formuladllapi.h"
|
||||||
|
|
||||||
|
namespace formula {
|
||||||
|
|
||||||
|
/** Base class for objects which use any global module-specific ressources.
|
||||||
|
*/
|
||||||
|
class FORMULA_DLLPUBLIC OModuleClient: private boost::noncopyable
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
OModuleClient();
|
||||||
|
~OModuleClient();
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
@ -154,7 +154,6 @@ namespace formula
|
|||||||
DECL_LINK(FuncSelHdl, void *);
|
DECL_LINK(FuncSelHdl, void *);
|
||||||
DECL_LINK(StructSelHdl, void *);
|
DECL_LINK(StructSelHdl, void *);
|
||||||
public:
|
public:
|
||||||
OModuleClient m_aModuleClient;
|
|
||||||
mutable uno::Reference< sheet::XFormulaOpCodeMapper> m_xOpCodeMapper;
|
mutable uno::Reference< sheet::XFormulaOpCodeMapper> m_xOpCodeMapper;
|
||||||
uno::Sequence< sheet::FormulaToken > m_aTokenList;
|
uno::Sequence< sheet::FormulaToken > m_aTokenList;
|
||||||
::std::auto_ptr<FormulaTokenArray> m_pTokenArray;
|
::std::auto_ptr<FormulaTokenArray> m_pTokenArray;
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "ModuleHelper.hxx"
|
#include "formula/omoduleclient.hxx"
|
||||||
//============================================================================
|
//============================================================================
|
||||||
namespace formula
|
namespace formula
|
||||||
{
|
{
|
||||||
|
43
formula/source/ui/dlg/omoduleclient.cxx
Normal file
43
formula/source/ui/dlg/omoduleclient.cxx
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*************************************************************************
|
||||||
|
*
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
*
|
||||||
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||||
|
*
|
||||||
|
* OpenOffice.org - a multi-platform office productivity suite
|
||||||
|
*
|
||||||
|
* This file is part of OpenOffice.org.
|
||||||
|
*
|
||||||
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License version 3
|
||||||
|
* only, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* OpenOffice.org 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 Lesser General Public License version 3 for more details
|
||||||
|
* (a copy is included in the LICENSE file that accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* version 3 along with OpenOffice.org. If not, see
|
||||||
|
* <http://www.openoffice.org/license.html>
|
||||||
|
* for a copy of the LGPLv3 License.
|
||||||
|
*
|
||||||
|
************************************************************************/
|
||||||
|
|
||||||
|
#include "sal/config.h"
|
||||||
|
|
||||||
|
#include "formula/omoduleclient.hxx"
|
||||||
|
|
||||||
|
#include "ModuleHelper.hxx"
|
||||||
|
|
||||||
|
formula::OModuleClient::OModuleClient() {
|
||||||
|
OModule::registerClient();
|
||||||
|
}
|
||||||
|
|
||||||
|
formula::OModuleClient::~OModuleClient() {
|
||||||
|
OModule::revokeClient();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
@ -39,8 +39,8 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "formula/funcutl.hxx"
|
#include "formula/funcutl.hxx"
|
||||||
|
#include "formula/omoduleclient.hxx"
|
||||||
#include "ControlHelper.hxx"
|
#include "ControlHelper.hxx"
|
||||||
#include "ModuleHelper.hxx"
|
|
||||||
|
|
||||||
namespace formula
|
namespace formula
|
||||||
{
|
{
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
#include <vcl/tabctrl.hxx>
|
#include <vcl/tabctrl.hxx>
|
||||||
#include <svtools/svtreebx.hxx>
|
#include <svtools/svtreebx.hxx>
|
||||||
#include "formula/IFunctionDescription.hxx"
|
#include "formula/IFunctionDescription.hxx"
|
||||||
#include "ModuleHelper.hxx"
|
#include "formula/omoduleclient.hxx"
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ namespace formula
|
|||||||
//=========================================================================
|
//=========================================================================
|
||||||
//= OModule
|
//= OModule
|
||||||
//=========================================================================
|
//=========================================================================
|
||||||
|
class OModuleClient;
|
||||||
class OModuleImpl;
|
class OModuleImpl;
|
||||||
class FORMULA_DLLPUBLIC OModule
|
class FORMULA_DLLPUBLIC OModule
|
||||||
{
|
{
|
||||||
@ -69,18 +70,6 @@ namespace formula
|
|||||||
static void ensureImpl();
|
static void ensureImpl();
|
||||||
};
|
};
|
||||||
|
|
||||||
//=========================================================================
|
|
||||||
//= OModuleClient
|
|
||||||
//=========================================================================
|
|
||||||
/** base class for objects which uses any global module-specific ressources
|
|
||||||
*/
|
|
||||||
class FORMULA_DLLPUBLIC OModuleClient
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
OModuleClient() { OModule::registerClient(); }
|
|
||||||
~OModuleClient() { OModule::revokeClient(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
//=========================================================================
|
//=========================================================================
|
||||||
//= ModuleRes
|
//= ModuleRes
|
||||||
//=========================================================================
|
//=========================================================================
|
||||||
|
Loading…
x
Reference in New Issue
Block a user