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]