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


User mba changed the following:

                  What    |Old value                 |New value
================================================================================
               Assigned to|mav                       |tra
--------------------------------------------------------------------------------




------- Additional comments from [EMAIL PROTECTED] Wed May 25 00:49:16 -0700 
2005 -------
My investigation revealed: we have two bugs here.

The windows clipboard integration of OOo works in the way that an IDataObject
implementation (XNotifyingDataObject) is created and handed over to the system
clipboard. There the IDataObject is acquired so that it is kept alive after we
remove our own reference to this object.

As soon as another IDataObject is put into clipboard the last one is released.

If a COM object embedded in a Writer document is put into clipboard everything
happens as described above. If after this *anything else* is put into clipboard,
the new object is *not* acquired by the system clipboard and so the internal
object is destroyed. This is definitely a bug. This happens in all OOo apps, not
only Writer (though we still take Writer as a reference here).

But as already mentioned, there is another bug: the Writer clipboard
implementation gets confused by the releasing of the Dataobject. 

If something inside a Writer document is put into clipboard the SW_MOD() keeps a
pointer to the DataObject and all clipboard interaction use this "short circuit"
(as can be seen in swdtflvr.cxx). This DataObject can be seen as the "current
clipboard content". 

The pointer to this object is always set *before* the object is put into the
system clipboard. This is important because when a Writer DataObject is released
it checks wether it is the "current clipboard content" and in this case sets
this pointer to NULL so that all clipboard interactions now use the system
clipboard directly. If the new content is also from Writer this will not happen:
the "current clipboard content" pointer was changed before the old object is
released and so at release time it will recognize that it is not the "current
clipboard content" and leave this pointer untouched.

In case of the problem described above the new DataObject is errornously
released when it is still the "current clipboard content", so after this Writer
will use the system clipboard directly and not the internal DataObject. This
alone shouldn't be a disaster, but for whatever reason this doesn't work (needs
some additional investigation why).


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