Issue 118905

Summary: [From Symphony]White block( on Mac and Black block on Windows) appears if click somewhere else in presentation
Product: QA Reporter: Yan Ji <yanji.yj>
Component: tcmAssignee: Armin Le Grand <Armin.Le.Grand>
Status: CLOSED FIXED QA Contact:
Severity: Major    
Priority: P3 CC: Armin.Le.Grand, issues, orw, zhangjf
Version: current   
Target Milestone: 4.0.0   
Hardware: All   
OS: All   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---
Attachments:
Description Flags
fix code patch
none
Removes the necessity of switching OverlayManagers none

Description Yan Ji 2012-02-14 04:50:52 UTC
Steps:
1. New Impress doc.
2. Click into text box, and input some text.
3. Click outside of the text box.

Defect: on Mac, there is a whilte block appears.
        on Winodws, there is a black block appears.
Comment 1 Armin Le Grand 2012-02-15 12:15:38 UTC
ALG: Seems to always be around the mouse position, so may have to do with pointer refresh
Comment 2 zhang jianfang 2012-02-20 13:31:05 UTC
I will try to migrate fix code to 3.4.
Comment 3 Armin Le Grand 2012-02-20 13:40:18 UTC
ALG -> zhangjf: Thanks. Do You have some information about the technical background and what is happening?
Comment 4 zhang jianfang 2012-02-20 14:54:25 UTC
Below is the analysis of the problem,

Root Cause:
The overlaybuffermanager in svx remember the invalidate range and expand it with antialiane pixel, but it's use old range to save background. That will cause that some background was not saved, and refresh to window with initialized GDI color( Windows is balck and Mac is white).

Resolution:
Remember the offset when the invalidate range would be expand. Use the offset when save background.


I still need a few time to prepare the code and verify it in new code base when I have time.
Comment 5 zhang jianfang 2012-02-26 08:11:51 UTC
Created attachment 77253 [details]
fix code patch
Comment 6 zhang jianfang 2012-02-26 08:19:46 UTC
The code doesn't match what in 3.1 exactly, I made some changes and do more test. Below are some more additional comments to the fix code,

When switch from not use buffer overlay manager(text edit mode) to use buffer overlay manager(normal mode), save background with the anti-alias offset, it will draw correct from text edit mode to normal mode. And other drawing process will not use the offset.

SdrPaintView::EndCompleteRedraw will check whether text edit mode.
SdrPaintWindow::DrawOverlay->impCreateOverlayManager will set or reset the flag to overlayBufferManager.


Please help to have a review before I commit the code to 3.4, thanks.
Comment 7 Armin Le Grand 2012-02-27 10:31:46 UTC
ALG: The reason is interesting, I removed the need to switch OverlayManagers during TextEdit in branch aw080, but it's not ready yet. Switching OverlayManagers was a fix itself, necessary because EditView (with EditEngine) can only work with a Window, not a VirualDevice as is used for overlay. I made EditView work on VirtualDevices and comlteletely removed the switching code, so this should also remove the problem.

If you are interested in this solution I could try to extract the needed parts from aw080 (or you may take a look, it's at https://svn.apache.org/repos/asf/incubator/ooo/branches/alg/aw080).
Comment 8 Armin Le Grand 2012-02-27 13:42:30 UTC
Created attachment 77254 [details]
Removes the necessity of switching OverlayManagers

ALG: Added patch. It removes the necessity of switching OverlayManagers at all (and removes some unnecessary code doing this) and adds painting OutlinerView to OutputDevice (not only Window). This removes the reason for the issue and thus fixes it. It's also the right step since swithcing the OverlayManagers at all was a compromize bugfix itself and it will be good to get rid of it again, too.
Comment 9 Armin Le Grand 2012-02-27 16:53:15 UTC
ALG: Built mac and win version with suggested patch (can be tested at http://people.apache.org/~alg/trunk/unxmacxi/OOo_3.4.0_MacOS_x86_install_en-US.dmg resp. http://people.apache.org/~alg/trunk/wntmsci12/setup.zip). Works well, just needs checks if the WhiteBlock blinking is gone. I have not seen any WitheBlick vlinking anymore, so i suggest to apply that patch.
Comment 10 zhang jianfang 2012-02-28 00:24:38 UTC
@ALG, I am a little confused. It seems you have a better solution. Do you still suggest I commit my patch? If you mean to apply your patch, I will reassign the defect to you then.
Comment 11 Oliver-Rainer Wittmann 2012-02-29 15:47:31 UTC
@zhangjf: As Armin is on vacation he asked me to have a look at this issue.

Armin told me that his patch should be integrated, if you have reviewed it, it is working and it is ok for you.
Thus, he told me that I should wait for your feedback. If it is positive, I would integrate Armin's patch.
Comment 12 zhang jianfang 2012-03-01 02:56:41 UTC
@Oliver. Yes, Armin's fix is much better than mine, please commit to 3.4. I reassign this bug to you.  Thanks.
Comment 13 Oliver-Rainer Wittmann 2012-03-07 08:54:00 UTC
As we are currently working on the last steps for our AOO 3.4 release and we are somehow in a show-stopper-mode(*) I would like to postpone the commit until AOO 3.4 has been finished respectively a separate svn branch has been opened for AOO 3.4


(*) show-stopper-mode means for me that we are working towards a stable application only fixing show stoppers on which the community had agreed on.
Comment 14 Armin Le Grand 2012-03-19 12:04:53 UTC
ALG: Back to me, I'll take care after 3.4.
Comment 15 Armin Le Grand 2012-05-03 12:00:33 UTC
ALG: New trunk, added patch, test build, works as expected. Checked in, done.

This also removes the old workaround to be able to switch between buffered and nonbuffered overlays in the edit view (thus avoiding the flicker). Next step will be to use the standard text selection color and to always paint EditEngine using primitives.
Comment 16 Yan Ji 2012-08-28 01:17:50 UTC
Problem is fixed