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/funcpage \
|
||||
formula/source/ui/dlg/funcutl \
|
||||
formula/source/ui/dlg/omoduleclient \
|
||||
formula/source/ui/dlg/parawin \
|
||||
formula/source/ui/dlg/structpg \
|
||||
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/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/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/tokenarray.hxx,tokenarray.hxx))
|
||||
$(eval $(call gb_Package_add_file,formula_inc,inc/formula/token.hxx,token.hxx))
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include <sfx2/basedlgs.hxx>
|
||||
#include <memory>
|
||||
#include "formula/formuladllapi.h"
|
||||
#include "formula/omoduleclient.hxx"
|
||||
|
||||
namespace formula
|
||||
{
|
||||
@ -87,7 +88,13 @@ protected:
|
||||
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;
|
||||
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(StructSelHdl, void *);
|
||||
public:
|
||||
OModuleClient m_aModuleClient;
|
||||
mutable uno::Reference< sheet::XFormulaOpCodeMapper> m_xOpCodeMapper;
|
||||
uno::Sequence< sheet::FormulaToken > m_aTokenList;
|
||||
::std::auto_ptr<FormulaTokenArray> m_pTokenArray;
|
||||
|
@ -41,7 +41,7 @@
|
||||
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <vector>
|
||||
#include "ModuleHelper.hxx"
|
||||
#include "formula/omoduleclient.hxx"
|
||||
//============================================================================
|
||||
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 "formula/funcutl.hxx"
|
||||
#include "formula/omoduleclient.hxx"
|
||||
#include "ControlHelper.hxx"
|
||||
#include "ModuleHelper.hxx"
|
||||
|
||||
namespace formula
|
||||
{
|
||||
|
@ -37,7 +37,7 @@
|
||||
#include <vcl/tabctrl.hxx>
|
||||
#include <svtools/svtreebx.hxx>
|
||||
#include "formula/IFunctionDescription.hxx"
|
||||
#include "ModuleHelper.hxx"
|
||||
#include "formula/omoduleclient.hxx"
|
||||
|
||||
//============================================================================
|
||||
|
||||
|
@ -39,6 +39,7 @@ namespace formula
|
||||
//=========================================================================
|
||||
//= OModule
|
||||
//=========================================================================
|
||||
class OModuleClient;
|
||||
class OModuleImpl;
|
||||
class FORMULA_DLLPUBLIC OModule
|
||||
{
|
||||
@ -69,18 +70,6 @@ namespace formula
|
||||
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
|
||||
//=========================================================================
|
||||
|
Loading…
x
Reference in New Issue
Block a user