Kaydet (Commit) 8acb68ba authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Check whether or not a visible range has changed.

Change-Id: I83581c8964ff43af1b1c42df82236274db446953
üst 391a57ef
...@@ -119,6 +119,7 @@ private: ...@@ -119,6 +119,7 @@ private:
VisibleRange(); VisibleRange();
bool isInside(SCCOL nCol, SCROW nRow) const; bool isInside(SCCOL nCol, SCROW nRow) const;
bool set(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
}; };
VisibleRange maVisibleRange; VisibleRange maVisibleRange;
...@@ -374,7 +375,7 @@ public: ...@@ -374,7 +375,7 @@ public:
void CheckNeedsRepaint(); void CheckNeedsRepaint();
void UpdateDPFromFieldPopupMenu(); void UpdateDPFromFieldPopupMenu();
void UpdateVisibleRange(); bool UpdateVisibleRange();
void SetInRefMode( bool bRefMode ); void SetInRefMode( bool bRefMode );
......
...@@ -213,7 +213,7 @@ protected: ...@@ -213,7 +213,7 @@ protected:
void ZoomChanged(); void ZoomChanged();
void UpdateShow(); void UpdateShow();
void UpdateVisibleRange(); bool UpdateVisibleRange();
void GetBorderSize( SvBorder& rBorder, const Size& rSize ); void GetBorderSize( SvBorder& rBorder, const Size& rSize );
void ResetDrawDragMode(); void ResetDrawDragMode();
......
...@@ -177,6 +177,18 @@ bool ScGridWindow::VisibleRange::isInside(SCCOL nCol, SCROW nRow) const ...@@ -177,6 +177,18 @@ bool ScGridWindow::VisibleRange::isInside(SCCOL nCol, SCROW nRow) const
return mnCol1 <= nCol && nCol <= mnCol2 && mnRow1 <= nRow && nRow <= mnRow2; return mnCol1 <= nCol && nCol <= mnCol2 && mnRow1 <= nRow && nRow <= mnRow2;
} }
bool ScGridWindow::VisibleRange::set(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
{
bool bChanged = mnCol1 != nCol1 || mnRow1 != nRow1 || mnCol2 != nCol2 || mnRow2 != nRow2;
mnCol1 = nCol1;
mnRow1 = nRow1;
mnCol2 = nCol2;
mnRow2 = nRow2;
return bChanged;
}
// ============================================================================ // ============================================================================
class ScFilterListBox : public ListBox class ScFilterListBox : public ListBox
......
...@@ -594,7 +594,7 @@ void ScGridWindow::UpdateDPFromFieldPopupMenu() ...@@ -594,7 +594,7 @@ void ScGridWindow::UpdateDPFromFieldPopupMenu()
aFunc.UpdatePivotTable(*pDPObj, true, false); aFunc.UpdatePivotTable(*pDPObj, true, false);
} }
void ScGridWindow::UpdateVisibleRange() bool ScGridWindow::UpdateVisibleRange()
{ {
SCCOL nPosX = pViewData->GetPosX(eHWhich); SCCOL nPosX = pViewData->GetPosX(eHWhich);
SCROW nPosY = pViewData->GetPosY(eVWhich); SCROW nPosY = pViewData->GetPosY(eVWhich);
...@@ -604,10 +604,7 @@ void ScGridWindow::UpdateVisibleRange() ...@@ -604,10 +604,7 @@ void ScGridWindow::UpdateVisibleRange()
if (nYBottom > MAXROW) nYBottom = MAXROW; if (nYBottom > MAXROW) nYBottom = MAXROW;
// Store the current visible range. // Store the current visible range.
maVisibleRange.mnCol1 = nPosX; return maVisibleRange.set(nPosX, nPosY, nXRight, nYBottom);
maVisibleRange.mnCol2 = nXRight;
maVisibleRange.mnRow1 = nPosY;
maVisibleRange.mnRow2 = nYBottom;
} }
void ScGridWindow::DPMouseMove( const MouseEvent& rMEvt ) void ScGridWindow::DPMouseMove( const MouseEvent& rMEvt )
......
...@@ -1544,15 +1544,19 @@ void ScTabView::UpdateShow() ...@@ -1544,15 +1544,19 @@ void ScTabView::UpdateShow()
//! neue Gridwindows eintragen //! neue Gridwindows eintragen
} }
void ScTabView::UpdateVisibleRange() bool ScTabView::UpdateVisibleRange()
{ {
bool bChanged = false;
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)
{ {
if (!pGridWin[i] || !pGridWin[i]->IsVisible()) if (!pGridWin[i] || !pGridWin[i]->IsVisible())
continue; continue;
pGridWin[i]->UpdateVisibleRange(); if (pGridWin[i]->UpdateVisibleRange())
bChanged = true;
} }
return bChanged;
} }
// --- Splitter -------------------------------------------------------- // --- Splitter --------------------------------------------------------
......
...@@ -427,6 +427,9 @@ void ScTabView::UpdateScrollBars() ...@@ -427,6 +427,9 @@ void ScTabView::UpdateScrollBars()
if ( aViewData.IsActive() ) if ( aViewData.IsActive() )
{ {
if (UpdateVisibleRange())
SC_MOD()->AnythingChanged(); // if visible area has changed
ScSplitPos eActive = aViewData.GetActivePart(); ScSplitPos eActive = aViewData.GetActivePart();
ScHSplitPos eHWhich = WhichH( eActive ); ScHSplitPos eHWhich = WhichH( eActive );
ScVSplitPos eVWhich = WhichV( eActive ); ScVSplitPos eVWhich = WhichV( eActive );
...@@ -437,10 +440,7 @@ void ScTabView::UpdateScrollBars() ...@@ -437,10 +440,7 @@ void ScTabView::UpdateScrollBars()
if ( nEndX > MAXCOL ) nEndX = MAXCOL; if ( nEndX > MAXCOL ) nEndX = MAXCOL;
if ( nEndY > MAXROW ) nEndY = MAXROW; if ( nEndY > MAXROW ) nEndY = MAXROW;
ScRange aVisible( nPosX, nPosY, nTab, nEndX, nEndY, nTab ); ScRange aVisible( nPosX, nPosY, nTab, nEndX, nEndY, nTab );
if ( pDoc->SetVisibleSpellRange( aVisible ) ) pDoc->SetVisibleSpellRange(aVisible);
SC_MOD()->AnythingChanged(); // if visible area has changed
UpdateVisibleRange();
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment