To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=85687


User fs changed the following:

                What    |Old value                 |New value
================================================================================
             Assigned to|fs                        |mav
--------------------------------------------------------------------------------
                  Status|STARTED                   |NEW
--------------------------------------------------------------------------------




------- Additional comments from [EMAIL PROTECTED] Tue Jan 29 22:18:16 +0000 
2008 -------
fs->mav: That's a regression of your fix for issue 84941, I'd say.

Before your changes, the macro execution mode was held in
DocumentMacroMode_Data::nMacroExecutionMode, and initialized exactly once. Your
change was to keep the mode in only one place, by introducing the
"setImposedMacroExecMode" method. Which is a Good Thing, so far.

What happens is something along those lines:
- the form is loaded
- during/after loading, the DocumentMacroMode::adjustMacroMode. It calculates
  the effective macro exec mode to be ALWAYS_EXECUTE_NO_WARN, which is correct,
  since the form itself does not contain any macros.
- This mode is forwarded to the document, using the newly introduced
  setImposedMacroExecMode method. This results in the proper SID_MACROEXECMODE
  item being put into the object shell's medium's item set.
- Now when we put the state of the embedded object to ACTIVE, then with the
  following stack:
    framework::LoadEnv::initializeLoading(...)
    framework::LoadEnv::loadComponentFromURL(...)
    framework::Frame::loadComponentFromURL(...)
    DocumentHolder::LoadDocToFrame(unsigned char bInPlace='Ü')
    DocumentHolder::GetDocFrame()
    DocumentHolder::Show()
    OCommonEmbeddedObject::SwitchStateTo_Impl(long nNextState=2)
    OCommonEmbeddedObject::changeState(long nNewState=2)
  , the macro mode is reset to NEVER_EXECUTE.
  Consider framework/source/loadenv/loadenv.cxx, lines 479ff, and lines 496f

>From this time onwards, any call to the object shell's getImposedMacroExecMode
will return NEVER_EXECUTE.

Note that there has not been any change in the load environment between m4 and
m5. That is, the framework always passed a NEVER_EXECUTE at this point. However,
this never hit us, since the macro exec mode was cached in
DocumentMacroMode_Data::nMacroExecutionMode, as said above.

I am not sure what is the actual bug reason here - perhaps
DocumentHolder::LoadDocToFrame should pass the current MacroExecMode of the
document to the new loading call. More precise, it should probably obtain the
current model args (XModel::getArgs), perhaps filter them, and then pass them to
the loadComponentFromURL call, to ensure they're preserved.

---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to