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


User af changed the following:

                What    |Old value                 |New value
================================================================================
                  Status|STARTED                   |RESOLVED
--------------------------------------------------------------------------------
              Resolution|                          |FIXED
--------------------------------------------------------------------------------




------- Additional comments from [EMAIL PROTECTED] Wed Aug 20 09:26:23 +0000 
2008 -------
I decided to fix this bug by turning off the overlay mechanism during text edits
because
the foundation for this was already in the code:
SdrPaintView::EndCompleteRedraw(.) already checks whether text is currently
being edited and if so, it calls SdrPaintWindow::DrawOverlay(.) with
bUseBuffer==false.  This, however, had previously no effect when an overlay
manager had already been created; buffering was not turned off.

The fix modifies the SdrPaintWindow::impCreateOverlayManager(.) method that is
called from SdrPaintWindow::DrawOverlay(.) so that the specified bUseBuffer flag
is obeyed.  When its value has changed since the last call then the current
overlay manager is destroyed and a new one is created.  The new overlay manager
is buffered/not buffered according to the bUseBuffer flag (and the result of a
call to SdrPaintView::IsBufferedOverlayAllowed()).  Two things have to be noted
regarding this exchange of overlay managers:

1) The overlay objects managed by the current overlay manager have to be moved
to the new overlay manager.  This is because their owner does not know of the
exchange and can not be informed of it.

We could run into problems with owners that remember the overlay manager at
which they added their overlay objects.  When the owners try to remove the
objects the overlay manager does not exist anymore.  This does not lead to a
crash but the overlay objects would remain active.

2) Both overlay managers need an external invlidation of their output devices
(the one to which they ultimately render their content, typically a visible
window).  The buffered overlay manager needs this to have its back buffer
properly initialized.  The unbuffered overlay manager needs it to trigger an
initial paint of the overlay objects.

This invalidation should not be necessary and be handled by the overlay managers
themselves.


Modified files are:
/svx/inc/sdrpaintwindow.hxx    rev. 1.6.210.1
/svx/inc/svx/sdr/overlay/overlaymanager.hxx    rev. 1.4.208.1
/svx/source/sdr/overlay/overlaymanager.cxx    rev. 1.6.208.1
/svx/source/svdraw/sdrpaintwindow.cxx    rev. 1l8.210.1

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