editviewoverlay: Allow EditView to run in Overlay

Desktop / LibreOffice - Armin Le Grand [cib.de] - 10 August 2017 09:17 EDT

This is the first basic functionality to get the active EditView with EditEngine work in the Overlay which all Apps support. Reason is that the current EditEngine 'plugs' into the Window and uses Invalidate() calls to repaint deeply everything under a text change. While this is acceptable for simple cases it can get very slow when there are excessive, expensive to paint objects in the background, e.g. MasterPages in Draw/Impress with gradients and other stuff. This was avoided in older versions (LO51) by 'guessing' a good BackgrundColor by the EditEngine, not invalidating but painting actively using that guess (with better or worse results) which someone removed. For the future it is anyways the better way to get the EditEngine functionality to Overlay and using Primitives, this will be a first step. This may enable Text Editing without repainting the Background (fast), using a non-XOR selection paint and more. It will need thorough testing and further experimenting due to EditEngine being used in many places (DrawObjects, Calc Cells, Formular Fields, Controls, ...)

f06b48a editviewoverlay: Allow EditView to run in Overlay
editeng/source/editeng/editview.cxx | 33 ++-
editeng/source/editeng/impedit.cxx | 82 ++++--
editeng/source/editeng/impedit.hxx | 21 ++
editeng/source/editeng/impedit3.cxx | 5 +-
include/editeng/editview.hxx | 21 ++
include/svx/svdedxv.hxx | 12 +-
include/svx/svdotext.hxx | 10 +-
include/svx/svdoutl.hxx | 2 +
sd/source/ui/view/Outliner.cxx | 11 +
svx/source/svdraw/svdedxv.cxx | 373 ++++++++++++++++++++++++++--
svx/source/svdraw/svdotextdecomposition.cxx | 13 +
svx/source/svdraw/svdotxat.cxx | 20 +-
svx/source/svdraw/svdoutl.cxx | 16 ++
13 files changed, 575 insertions(+), 44 deletions(-)

Upstream: cgit.freedesktop.org


  • Share