diff options
author | Justin Luth <justin_luth@sil.org> | 2016-10-27 19:31:50 +0300 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2016-10-28 16:12:27 +0000 |
commit | b41e7b817e1e214582505d28d0cc36d741fa9979 (patch) | |
tree | 7911fda0bcc92d763c527ffe9d3b44a54d27daed | |
parent | eef81dd68fe7a09946ef062eff041f4b3f523e28 (diff) |
tdf#63846 assign macros after VBA project fully loaded.
fixes regression caused by d4743045a0b320449d07a957463a76bb8b13f939.
see the documentation for VbaMacroAttacherBase, which indicates that
the macros are to be attached after all objects are finished loading.
Made attachMacros() public so it could be called separately since so
many things are inter-dependent in the logic flow.
Change-Id: I11f7f4a1a75d6f77a97e12e3359d6ea8a995f518
Reviewed-on: https://gerrit.libreoffice.org/30337
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Justin Luth <justin_luth@sil.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | include/oox/ole/vbaproject.hxx | 6 | ||||
-rw-r--r-- | oox/source/ole/vbaproject.cxx | 5 | ||||
-rw-r--r-- | sc/source/filter/oox/workbookfragment.cxx | 3 |
3 files changed, 8 insertions, 6 deletions
diff --git a/include/oox/ole/vbaproject.hxx b/include/oox/ole/vbaproject.hxx index 22e1a12f8587..6949834eadf8 100644 --- a/include/oox/ole/vbaproject.hxx +++ b/include/oox/ole/vbaproject.hxx @@ -139,6 +139,9 @@ public: VbaMacroAttacherBase class. */ void registerMacroAttacher( const VbaMacroAttacherRef& rxAttacher ); + /** Attaches VBA macros to objects registered via registerMacroAttacher(). */ + void attachMacros(); + /** Returns true, if the document contains at least one code module. */ bool hasModules() const; @@ -177,9 +180,6 @@ private: StorageBase& rVbaPrjStrg, const GraphicHelper& rGraphicHelper ); - /** Attaches VBA macros to objects registered via registerMacroAttacher(). */ - void attachMacros(); - /** Copies the entire VBA project storage to the passed document model. */ void copyStorage( StorageBase& rVbaPrjStrg ); diff --git a/oox/source/ole/vbaproject.cxx b/oox/source/ole/vbaproject.cxx index 54711172fa98..e71669600647 100644 --- a/oox/source/ole/vbaproject.cxx +++ b/oox/source/ole/vbaproject.cxx @@ -253,6 +253,8 @@ void VbaProject::importVba( StorageBase& rVbaPrjStrg, const GraphicHelper& rGrap { readVbaModules( rVbaPrjStrg ); importModulesAndForms(rVbaPrjStrg, rGraphicHelper ); + // attach macros to registered objects + attachMacros(); } void VbaProject::readVbaModules( StorageBase& rVbaPrjStrg ) @@ -502,9 +504,6 @@ void VbaProject::importModulesAndForms( StorageBase& rVbaPrjStrg, const GraphicH } } } - - // attach macros to registered objects - attachMacros(); } void VbaProject::attachMacros() diff --git a/sc/source/filter/oox/workbookfragment.cxx b/sc/source/filter/oox/workbookfragment.cxx index 77317fe15995..18d207572dd9 100644 --- a/sc/source/filter/oox/workbookfragment.cxx +++ b/sc/source/filter/oox/workbookfragment.cxx @@ -508,6 +508,9 @@ void WorkbookFragment::finalizeImport() rtl::Reference<oox::core::FragmentHandler> xFragment(new RevisionHeadersFragment(*this, aRevHeadersPath)); importOoxFragment(xFragment, *xParser); } + + // attach macros to registered objects now that all objects have been created. + getBaseFilter().getVbaProject().attachMacros(); } namespace { |