On 2007-01-04, at 08:44 , Armin Le Grand wrote:

[EMAIL PROTECTED] schrieb:

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


User fs changed the following:

               What    |Old value                 |New value
===================================================================== ===========
                     CC|''                        |'aw'
--------------------------------------------------------------------- -----------
            Assigned to|fs                        |nn
--------------------------------------------------------------------- -----------
                 Status|STARTED                   |NEW
--------------------------------------------------------------------- -----------




------- Additional comments from [EMAIL PROTECTED] Thu Jan 4 04:23:29 -0800 2007 ------- fs->aw, nn: I'm lost in the drawing/spreadsheet object hierarchy here ...

When a sheet is removed via UNO API, then ScDrawLayer::ScRemovePage broadcasts aScTabDeletedHint. This is observed by ScDrawView::SFX_NOTIFY, which then does a HideSdrPage. Unfortunately, this means that now the drawing layer is somehow corrupt, which can be observed by hovering with the mouse over the active sheet - this asserts, since now the ScDrawView does not have a valid SdrPageView
anymore - it was deleted and reset in HideSdrPage.

Hmm. Comparing this where a sheet is deleted manually, there is *also* a
HideSdrPage called, which also resets the SdrPageView member to NULL.
However, in this scenario, there's an additional ShowSdrPage called, which
re-creates it, with the following stack:
 SdrPaintView::ShowSdrPage()
 FmFormView::ShowSdrPage()
 ScTabView::TabChanged()
 ScTabView::SetTabNo()
 ScViewFunc::DeleteTables()

fs->nn: Is it possible that removing sheets by API is missing some restoration
of the current sheet, or something like this?


AW: From DrawingLayer perspective, the DL View does not necessarily have to have a SdrPageView. This would be a DrawingLayer which does not visualize a page (yet/no more). The applications should work with that, it is no good idea to somewhere remember the SdrPageView or access the GetSdrPageView()-result without test.

Well, from the applications view, these simply do not do that correct in all places and often rely on an SdrPageView being there, so the usual (not good) workaround is to create a new, empty SdrPageView by showing a new, empty page. At least that this works shows that in principle, the SdrPageView is not remembered, but only (hah!) places where GetSdrPageView() result is not tested need to be looked for...

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



--
Greetings, Armin Le Grand (AW)
[EMAIL PROTECTED]

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


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

Reply via email to