To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=44830
                  Issue #:|44830
                  Summary:|mis-ordered shell stack crasher ...
                Component:|Drawing
                  Version:|680m79
                 Platform:|Other
                      URL:|
               OS/Version:|Linux
                   Status:|NEW
        Status whiteboard:|
                 Keywords:|
               Resolution:|
               Issue type:|DEFECT
                 Priority:|P3
             Subcomponent:|code
              Assigned to:|wg
              Reported by:|mmeeks





------- Additional comments from [EMAIL PROTECTED] Fri Mar 11 08:07:07 -0800 
2005 -------
To repeat:
start impress -> Create in the wizard
Switch to a view with editable text, start typing some text
** With the text still focused **
select 'Master Pages' in the right-hand-side 'Tasks' pane
Now select a different task/background, then click on the expand/contract widget
above - bang ...

The root cause of this problem [ after much tiresome investigation ] seems to be
a mis-ordered SfxShell stack in the SfxDispatcher.

in sdview.cxx (sd::View::BegTextEdit) we have:
        pViewShell->GetViewFrame()->GetDispatcher()->
                GetShell(0)->SetUndoManager(pUndoMgr);

I have verified that this sets the TextObjectBar's UndoManager (as expected).

Unfortunately - when we come to sd::View::EndTextEdit we have:
                if (pViewShell)
                {
                        pViewShell->GetViewFrame()->GetDispatcher()->
                                GetShell(0)->SetUndoManager(pUndoMgr);

But now it is the case that GetShell(0) returns an 'AllMasterPagesSelector'
shell - which we duly re-set the UndoManager on.

Unfortunately, that leaves the TextObjectBar's UndoManager pointing at a (now
destroyed) object - which sooner or later crashes everything as we try to
construct a context menu for that.

<segv>
#11 0x4868e1fc in sd::ViewShell::GetMenuState ()
#12 0x486a2fa1 in sd::DrawViewShell::GetMenuState ()
#13 0x486c380e in SfxStubDrawViewShellGetMenuState ()
#14 0x4416eb37 in SfxDispatcher::_FillState ()
#15 0x44178b4e in SfxBindings::Update_Impl ()
#16 0x4417b2f9 in SfxBindings::NextJob_Impl ()
#17 0x4417b190 in SfxBindings::LinkStubNextJob_Impl ()
#18 0x4016c515 in Timer::Timeout ()

I attach some notes I took while chasing it - we've shipped with a nasty hack to
 sd::ViewShell:ImpGetUndoManager.

Needless to say, one can think of more robust & reliable ways of managing this
state.

---------------------------------------------------------------------
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]


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

Reply via email to