Apache OpenOffice (AOO) Bugzilla – Full Text Issue Listing |
Summary: | charts do not update anymore after changes in calc | ||||||
---|---|---|---|---|---|---|---|
Product: | General | Reporter: | IngridvdM | ||||
Component: | chart | Assignee: | Armin Le Grand <Armin.Le.Grand> | ||||
Status: | CLOSED FIXED | QA Contact: | issues@graphics <issues> | ||||
Severity: | Trivial | ||||||
Priority: | P3 | CC: | issues, kyoshida, mikhail.voytenko | ||||
Version: | 3.3.0 or older (OOo) | Keywords: | regression | ||||
Target Milestone: | --- | ||||||
Hardware: | All | ||||||
OS: | All | ||||||
Issue Type: | DEFECT | Latest Confirmation in: | --- | ||||
Developer Difficulty: | --- | ||||||
Issue Depends on: | |||||||
Issue Blocks: | 99999, 104769 | ||||||
Attachments: |
|
Description
IngridvdM
2009-09-07 16:59:27 UTC
This has worked in dev300m55 (didn't test m56). AW: On change a new SdrOle2Primitive2D is created from ViewObjectContactOfSdrOle2Obj. That primitive is compared with the existing one using SdrOle2Primitive2D::operator==. As a sub-operation (it's a group primitive containing a SdrOleContentPrimitive2D), SdrOleContentPrimitive2D::operator== is used. That operator compares the SdrObjectWeakRef mpSdrOle2Obj. These SdrObjectWeakRefs are equal, so no change is taken. On that level of comparison, it is not detected that e.g. the MetaFile visualisation may have changed. I have to think about how this may be checked... AW: Needed is to find out at svt::EmbeddedObjectRef that the Graphic has changed, but without getting the graphic (which is expensive for chart). Before SdrOleContentPrimitive2D this happened since the Graphic was always fetched (wat was the reason for SdrOleContentPrimitive2D). A possible solution is to check for bNeedUpdate at EmbeddedObjectRef_Impl, but this will nothelp when anyone else fetched the graphic in-between. Thus, a graphic version counter which will be incremented each time the graphic at svt::EmbeddedObjectRef changes and is fetchable, would solve the problem. The SdrOleContentPrimitive2D would remember the version number at construction time. In the operator==, it can simply be compared. Checking if adding such a counter at EmbeddedObjectRef would be difficult... AW: Added a sal_uInt32 mnGraphicVersion member to EmbeddedObjectRef_Impl which gets inited to 0 and incemented at each change of pGraphic and/or pHCGraphic. Added a read method to EmbeddedObjectRef. Added a member to SdrOleContentPrimitive2D whcih is inited at construction time and used for compare operator. Works well (and as expected). Doing some more checks, though... Created attachment 64671 [details]
Suggested fix fo this task
AW: Added fix as attachment, adding mav to CC. AW->mav: Since this changes EmbeddedObjectRef in svtools, i keep You informed. Have a look at the task and the suggested solution if You want. AW: Added to ooo32gsl01 AW: Built, unchained (*.link) svx and drawinglayer, checked in, done. AW: Checked in ooo32gsl01, works as expected. AW->KLA: Please review. AW: I have seen that KLA is on vacation. Since i checked the task and it works, i will set it back to me and to verified now. AW: Set to verified. *** Issue 106066 has been marked as a duplicate of this issue. *** AW: Closing. *** Issue 105439 has been marked as a duplicate of this issue. *** |