summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Luth <justin_luth@sil.org>2016-10-27 19:31:50 +0300
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-10-29 16:44:51 +0000
commit255c751c48955b56b96e1cf945b800ee4c1c917c (patch)
tree47ce5cf20d71ca69d4d624acb1281f586470cc52
parent56d61fdfabe600cfba50d684df38701248df796f (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. 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> Conflicts: oox/source/ole/vbaproject.cxx Change-Id: I11f7f4a1a75d6f77a97e12e3359d6ea8a995f518 Reviewed-on: https://gerrit.libreoffice.org/30371 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.hxx6
-rw-r--r--oox/source/ole/vbaproject.cxx5
-rw-r--r--sc/source/filter/oox/workbookfragment.cxx3
3 files changed, 8 insertions, 6 deletions
diff --git a/include/oox/ole/vbaproject.hxx b/include/oox/ole/vbaproject.hxx
index ea7ffcccd351..cc9763ccb46d 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;
@@ -178,9 +181,6 @@ private:
const GraphicHelper& rGraphicHelper,
bool bDefaultColorBgr );
- /** 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 7aa47ce8c4f7..9ac4bff2b58d 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, bDefaultColorBgr );
+ // 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 6e6e101f0c48..32510db44b12 100644
--- a/sc/source/filter/oox/workbookfragment.cxx
+++ b/sc/source/filter/oox/workbookfragment.cxx
@@ -522,6 +522,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 {