diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-01-09 20:31:25 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-01-09 20:34:00 -0500 |
commit | e36c8a674845ab19577fc06d44b780549757e1e7 (patch) | |
tree | d90e1185189494eb45353543ac736051079b2cc4 /sc | |
parent | deb39c012031b7981360665cc19dc81d3342a3ad (diff) |
fdo#68961: Check visible range during scrolling, and re-paint if necessary.
Change-Id: I47383cc0c4cf0ec48ce621ba5acac33db44ba313
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/inc/tabview.hxx | 6 | ||||
-rw-r--r-- | sc/source/ui/view/tabview.cxx | 4 | ||||
-rw-r--r-- | sc/source/ui/view/tabview3.cxx | 13 | ||||
-rw-r--r-- | sc/source/ui/view/tabview4.cxx | 10 |
4 files changed, 24 insertions, 9 deletions
diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx index 0c1c7a1ee046..56f237cd6fd5 100644 --- a/sc/source/ui/inc/tabview.hxx +++ b/sc/source/ui/inc/tabview.hxx @@ -208,6 +208,12 @@ private: void PaintRangeFinderEntry (ScRangeFindData* pData, SCTAB nTab); + /** + * Check the visible grid area to see if the visible range has changed. If + * so, update the stored visible range, and re-paint the grid area. + */ + void UpdateGrid(); + protected: void UpdateHeaderWidth( const ScVSplitPos* pWhich = NULL, const SCROW* pPosY = NULL ); diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx index 1c52550dd280..219653ba5ebe 100644 --- a/sc/source/ui/view/tabview.cxx +++ b/sc/source/ui/view/tabview.cxx @@ -1236,6 +1236,8 @@ void ScTabView::ScrollX( long nDeltaX, ScHSplitPos eWhich, bool bUpdBars ) if (pColOutline[eWhich]) pColOutline[eWhich]->ScrollPixel( nDiff ); if (bUpdBars) UpdateScrollBars(); + else + UpdateGrid(); } if (nDeltaX==1 || nDeltaX==-1) @@ -1321,6 +1323,8 @@ void ScTabView::ScrollY( long nDeltaY, ScVSplitPos eWhich, bool bUpdBars ) if (pRowOutline[eWhich]) pRowOutline[eWhich]->ScrollPixel( nDiff ); if (bUpdBars) UpdateScrollBars(); + else + UpdateGrid(); } if (nDeltaY==1 || nDeltaY==-1) diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx index 57dfa8c5eab3..a3aec35e712e 100644 --- a/sc/source/ui/view/tabview3.cxx +++ b/sc/source/ui/view/tabview3.cxx @@ -2109,6 +2109,19 @@ void ScTabView::PaintRangeFinderEntry (ScRangeFindData* pData, const SCTAB nTab) } } +void ScTabView::UpdateGrid() +{ + if (!aViewData.IsActive()) + return; + + if (!UpdateVisibleRange()) + // Visible range hasn't changed. No need to re-paint. + return; + + SC_MOD()->AnythingChanged(); // if visible area has changed + PaintGrid(); +} + void ScTabView::PaintRangeFinder( long nNumber ) { ScInputHandler* pHdl = SC_MOD()->GetInputHdl( aViewData.GetViewShell() ); diff --git a/sc/source/ui/view/tabview4.cxx b/sc/source/ui/view/tabview4.cxx index 3aa9a47efeea..ab0208129438 100644 --- a/sc/source/ui/view/tabview4.cxx +++ b/sc/source/ui/view/tabview4.cxx @@ -424,15 +424,7 @@ void ScTabView::UpdateScrollBars() } // set visible area for online spelling - - if ( aViewData.IsActive() ) - { - if (UpdateVisibleRange()) - { - SC_MOD()->AnythingChanged(); // if visible area has changed - PaintGrid(); - } - } + UpdateGrid(); } #ifndef HDR_SLIDERSIZE |