summaryrefslogtreecommitdiff
path: root/include/editeng/editview.hxx
diff options
context:
space:
mode:
authorMarco Cecchetti <marco.cecchetti@collabora.com>2016-10-09 21:50:55 +0200
committerMarco Cecchetti <mrcekets@gmail.com>2016-10-14 15:01:36 +0000
commit6c9337866d9b4fe4870c3ab2729c6837d07473ff (patch)
tree5e955cecfe583cb4c8f5595feeb658bdd0436dc2 /include/editeng/editview.hxx
parenta6c008b12cd2c2daf95a18eff0d72239588a5321 (diff)
LOK: Calc: missing invalidate when ending larger-than-cell edit text
- reason: when text content goes further than the cell border the output area of the edit view is grown (extended to an adjacent cell), on the contrary the output area of edit views used only for invalidating windows of other view shells is never updated, so, in other views, only the tile where the edit cell is placed is invalidated; - solution: instead of adding fake edit views for invalidation porpuse (and having to updated the output area of each of them when required), the new solution provides each new edit view, created on cell editing, with a set of `foreign` windows related to other views, they are added and removed to this collection owned by an edit view still using the ScExtraEditViewManager, which has been in turn simplified; when EdiEngine::UpdateViews is invoked not only the window where the edit view lives is invalidated but also all `foreign` windows in the owned set; - note: ScTiledRenderingTest::testTextEditViewInvalidations unit test has been enhanced in order to test correct invalidation when text content goes out of the starting tile. Change-Id: Id223fb1a032d3b18d2cf70df31f704abd245b3ac Reviewed-on: https://gerrit.libreoffice.org/29625 Reviewed-by: Marco Cecchetti <mrcekets@gmail.com> Tested-by: Marco Cecchetti <mrcekets@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/29658
Diffstat (limited to 'include/editeng/editview.hxx')
-rw-r--r--include/editeng/editview.hxx10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/editeng/editview.hxx b/include/editeng/editview.hxx
index 0f3c2de9bba8..b66486dcb8f3 100644
--- a/include/editeng/editview.hxx
+++ b/include/editeng/editview.hxx
@@ -85,6 +85,9 @@ class EDITENG_DLLPUBLIC EditView
friend class ImpEditEngine;
friend class EditSelFunctionSet;
+public:
+ typedef std::vector<VclPtr<vcl::Window>> OutWindowSet;
+
public: // Needed for Undo
ImpEditView* GetImpEditView() const { return pImpEditView; }
ImpEditEngine* GetImpEditEngine() const;
@@ -104,7 +107,12 @@ public:
EditEngine* GetEditEngine() const;
void SetWindow( vcl::Window* pWin );
- vcl::Window* GetWindow() const;
+ vcl::Window* GetWindow() const;
+
+ OutWindowSet& GetOtherViewWindows();
+ bool HasOtherViewWindow( vcl::Window* pWin );
+ bool AddOtherViewWindow( vcl::Window* pWin );
+ bool RemoveOtherViewWindow( vcl::Window* pWin );
void Paint( const Rectangle& rRect, OutputDevice* pTargetDevice = nullptr );
void Invalidate();