[ooo-build-commit] .: 3 commits - patches/dev300
Fridrich Strba
fridrich at kemper.freedesktop.org
Thu Sep 16 02:14:15 PDT 2010
patches/dev300/apply | 7
patches/dev300/calc-selection-fixed-cursor-fix.diff | 20
patches/dev300/calc-selection-fixed-cursor.diff | 928 --------------------
patches/dev300/chart-highlight-selection-fix.diff | 36
4 files changed, 991 deletions(-)
New commits:
commit 9becb978311a8efeea79f43842232fffe1cb8f9c
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date: Thu Sep 16 11:13:55 2010 +0200
calc-selection-fixed-cursor-fix.diff: Migrated to git
diff --git a/patches/dev300/apply b/patches/dev300/apply
index 8f31c20..5fc5173 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -533,9 +533,6 @@ calc-ods-sheet-protection-sc.diff, i#60305, i#71468, kohei
calc-ods-sheet-protection-xmloff.diff, i#60305, i#71468, kohei
calc-ods-sheet-protection-svtools.diff, i#60305, i#71468, kohei
-# when making selection, don't move the cursor position.
-calc-selection-fixed-cursor-fix.diff, n#595822, kohei
-
# show cursor in non-active panes, instead of ugly black box.
calc-cursor-split-view.diff, n#433834, kohei
diff --git a/patches/dev300/calc-selection-fixed-cursor-fix.diff b/patches/dev300/calc-selection-fixed-cursor-fix.diff
deleted file mode 100644
index a6cea36..0000000
--- a/patches/dev300/calc-selection-fixed-cursor-fix.diff
+++ /dev/null
@@ -1,20 +0,0 @@
----
- sc/source/ui/view/gridwin.cxx | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git sc/source/ui/view/gridwin.cxx sc/source/ui/view/gridwin.cxx
-index b89fc7b..da1f083 100644
---- sc/source/ui/view/gridwin.cxx
-+++ sc/source/ui/view/gridwin.cxx
-@@ -2136,7 +2136,7 @@ void __EXPORT ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt )
- if ( rMEvt.IsLeft() && pViewData->GetView()->GetSelEngine()->SelMouseButtonUp( rMEvt ) )
- {
- // rMark.MarkToSimple();
-- pViewData->GetView()->UpdateAutoFillMark();
-+ pViewData->GetView()->SelectionChanged();
-
- SfxDispatcher* pDisp = pViewData->GetViewShell()->GetDispatcher();
- BOOL bFormulaMode = pScMod->IsFormulaMode();
---
-1.7.0.1
-
commit 11c01ba1a3a9f5f2b031f2da37711ae1a04d4c06
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date: Thu Sep 16 11:11:17 2010 +0200
calc-selection-fixed-cursor.diff: Migrated to git
diff --git a/patches/dev300/apply b/patches/dev300/apply
index 3bdd73d..8f31c20 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -534,7 +534,6 @@ calc-ods-sheet-protection-xmloff.diff, i#60305, i#71468, kohei
calc-ods-sheet-protection-svtools.diff, i#60305, i#71468, kohei
# when making selection, don't move the cursor position.
-calc-selection-fixed-cursor.diff, n#502717, i#21869, i#97093, kohei
calc-selection-fixed-cursor-fix.diff, n#595822, kohei
# show cursor in non-active panes, instead of ugly black box.
diff --git a/patches/dev300/calc-selection-fixed-cursor.diff b/patches/dev300/calc-selection-fixed-cursor.diff
deleted file mode 100644
index 2500cd2..0000000
--- a/patches/dev300/calc-selection-fixed-cursor.diff
+++ /dev/null
@@ -1,928 +0,0 @@
----
- sc/inc/document.hxx | 1 +
- sc/source/core/data/document.cxx | 7 +
- sc/source/ui/inc/cellsh.hxx | 1 +
- sc/source/ui/inc/tabview.hxx | 14 +-
- sc/source/ui/view/cellsh4.cxx | 128 ++++++++++++----
- sc/source/ui/view/gridwin.cxx | 15 ++-
- sc/source/ui/view/select.cxx | 5 +-
- sc/source/ui/view/tabview.cxx | 3 +-
- sc/source/ui/view/tabview2.cxx | 307 +++++++++++++++++++++++++++++++++++++-
- sc/source/ui/view/tabview3.cxx | 107 ++++----------
- sc/source/ui/view/tabvwsh3.cxx | 19 ++-
- sc/source/ui/view/viewdata.cxx | 11 +-
- 12 files changed, 479 insertions(+), 139 deletions(-)
-
-diff --git sc/inc/document.hxx sc/inc/document.hxx
-index 10bb8d1..a90abcb 100644
---- sc/inc/document.hxx
-+++ sc/inc/document.hxx
-@@ -851,6 +851,7 @@ public:
- ScRange* pLastRange = NULL,
- Rectangle* pLastMM = NULL ) const;
-
-+ void SkipOverlapped( SCCOL& rCol, SCROW& rRow, SCTAB nTab ) const;
- BOOL IsHorOverlapped( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
- BOOL IsVerOverlapped( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
-
-diff --git sc/source/core/data/document.cxx sc/source/core/data/document.cxx
-index f63af99..3a76585 100644
---- sc/source/core/data/document.cxx
-+++ sc/source/core/data/document.cxx
-@@ -4733,6 +4733,13 @@ BOOL ScDocument::RefreshAutoFilter( SCCOL nStartCol, SCROW nStartRow,
- return bChange;
- }
-
-+void ScDocument::SkipOverlapped( SCCOL& rCol, SCROW& rRow, SCTAB nTab ) const
-+{
-+ while (IsHorOverlapped(rCol, rRow, nTab))
-+ --rCol;
-+ while (IsVerOverlapped(rCol, rRow, nTab))
-+ --rRow;
-+}
-
- BOOL ScDocument::IsHorOverlapped( SCCOL nCol, SCROW nRow, SCTAB nTab ) const
- {
-diff --git sc/source/ui/inc/cellsh.hxx sc/source/ui/inc/cellsh.hxx
-index 9202c39..0149334 100644
---- sc/source/ui/inc/cellsh.hxx
-+++ sc/source/ui/inc/cellsh.hxx
-@@ -34,6 +34,7 @@
- #include <svx/svdmark.hxx>
- #include <tools/link.hxx>
- #include "formatsh.hxx"
-+#include "address.hxx"
-
- class SvxClipboardFmtItem;
- class TransferableDataHelper;
-diff --git sc/source/ui/inc/tabview.hxx sc/source/ui/inc/tabview.hxx
-index ccf940b..d8890f2 100644
---- sc/source/ui/inc/tabview.hxx
-+++ sc/source/ui/inc/tabview.hxx
-@@ -176,7 +176,6 @@ private:
- BOOL bInActivatePart;
- BOOL bInZoomUpdate;
- BOOL bMoveIsShift;
-- BOOL bNewStartIfMarking;
-
- void Init();
-
-@@ -197,6 +196,10 @@ private:
- static void SetScrollBar( ScrollBar& rScroll, long nRangeMax, long nVisible, long nPos, BOOL bLayoutRTL );
- static long GetScrollBarPos( ScrollBar& rScroll, BOOL bLayoutRTL );
-
-+ void GetPageMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, SCsCOL& rPageX, SCsROW& rPageY);
-+ void GetAreaMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode,
-+ SCsCOL& rAreaX, SCsROW& rAreaY, ScFollowMode& rMode);
-+
- protected:
- void UpdateHeaderWidth( const ScVSplitPos* pWhich = NULL,
- const SCROW* pPosY = NULL );
-@@ -385,12 +388,7 @@ public:
-
- void FindNextUnprot( BOOL bShift, BOOL bInSelection = TRUE );
-
-- void SetNewStartIfMarking();
--
-- //<!--Added by PengYunQuan for Validity Cell Range Picker
-- //void SetTabNo( SCTAB nTab, BOOL bNew = FALSE, BOOL bExtendSelection = FALSE );
- SC_DLLPUBLIC void SetTabNo( SCTAB nTab, BOOL bNew = FALSE, BOOL bExtendSelection = FALSE );
-- //-->Added by PengYunQuan for Validity Cell Range Picker
- void SelectNextTab( short nDir, BOOL bExtendSelection = FALSE );
-
- void ActivateView( BOOL bActivate, BOOL bFirst );
-@@ -482,6 +480,10 @@ public:
-
- BOOL IsBlockMode() const { return bIsBlockMode; }
-
-+ void ExpandBlock(SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode);
-+ void ExpandBlockPage(SCsCOL nMovX, SCsROW nMovY);
-+ void ExpandBlockArea(SCsCOL nMovX, SCsROW nMovY);
-+
- void MarkColumns();
- void MarkRows();
- void MarkDataArea( BOOL bIncludeCursor = TRUE );
-diff --git sc/source/ui/view/cellsh4.cxx sc/source/ui/view/cellsh4.cxx
-index 2c451fb..1a3b9d9 100644
---- sc/source/ui/view/cellsh4.cxx
-+++ sc/source/ui/view/cellsh4.cxx
-@@ -49,6 +49,7 @@
- #include "document.hxx"
- #include "sc.hrc"
-
-+#include "vcl/svapp.hxx"
-
- //------------------------------------------------------------------
-
-@@ -85,10 +86,56 @@ void ScCellShell::ExecuteCursor( SfxRequest& rReq )
- {
- // ADD mode: keep the selection, start a new block when marking with shift again
- bKeep = TRUE;
-- pTabViewShell->SetNewStartIfMarking();
- }
- }
-
-+ if (bSel)
-+ {
-+ switch (nSlotId)
-+ {
-+ case SID_CURSORDOWN:
-+ rReq.SetSlot(SID_CURSORDOWN_SEL);
-+ break;
-+ case SID_CURSORUP:
-+ rReq.SetSlot(SID_CURSORUP_SEL);
-+ break;
-+ case SID_CURSORRIGHT:
-+ rReq.SetSlot(SID_CURSORRIGHT_SEL);
-+ break;
-+ case SID_CURSORLEFT:
-+ rReq.SetSlot(SID_CURSORLEFT_SEL);
-+ break;
-+ case SID_CURSORPAGEDOWN:
-+ rReq.SetSlot(SID_CURSORPAGEDOWN_SEL);
-+ break;
-+ case SID_CURSORPAGEUP:
-+ rReq.SetSlot(SID_CURSORPAGEUP_SEL);
-+ break;
-+ case SID_CURSORPAGERIGHT:
-+ rReq.SetSlot(SID_CURSORPAGERIGHT_SEL);
-+ break;
-+ case SID_CURSORPAGELEFT:
-+ rReq.SetSlot(SID_CURSORPAGELEFT_SEL);
-+ break;
-+ case SID_CURSORBLKDOWN:
-+ rReq.SetSlot(SID_CURSORBLKDOWN_SEL);
-+ break;
-+ case SID_CURSORBLKUP:
-+ rReq.SetSlot(SID_CURSORBLKUP_SEL);
-+ break;
-+ case SID_CURSORBLKRIGHT:
-+ rReq.SetSlot(SID_CURSORBLKRIGHT_SEL);
-+ break;
-+ case SID_CURSORBLKLEFT:
-+ rReq.SetSlot(SID_CURSORBLKLEFT_SEL);
-+ break;
-+ default:
-+ ;
-+ }
-+ ExecuteCursorSel(rReq);
-+ return;
-+ }
-+
- SCsCOLROW nRTLSign = 1;
- if ( pData->GetDocument()->IsLayoutRTL( pData->GetTabNo() ) )
- {
-@@ -169,38 +216,64 @@ void ScCellShell::GetStateCursor( SfxItemSet& /* rSet */ )
-
- void ScCellShell::ExecuteCursorSel( SfxRequest& rReq )
- {
-- const SfxItemSet* pReqArgs = rReq.GetArgs();
-- USHORT nSlotId = rReq.GetSlot();
-- short nRepeat = 1;
--
-- if ( pReqArgs != NULL )
-+ sal_uInt16 nSlotId = rReq.GetSlot();
-+ ScTabViewShell* pViewShell = GetViewData()->GetViewShell();
-+ ScInputHandler* pInputHdl = pViewShell->GetInputHandler();
-+ pViewShell->HideAllCursors();
-+ if (pInputHdl && pInputHdl->IsInputMode())
- {
-- const SfxPoolItem* pItem;
-- if( IS_AVAILABLE( FN_PARAM_1, &pItem ) )
-- nRepeat = ((const SfxInt16Item*)pItem)->GetValue();
-+ // the current cell is in edit mode. Commit the text before moving on.
-+ pViewShell->ExecuteInputDirect();
- }
-
-- switch ( nSlotId )
-+ // Horizontal direction depends on whether or not the UI language is RTL.
-+ SCsCOL nMovX = 1;
-+ if (GetViewData()->GetDocument()->IsLayoutRTL(GetViewData()->GetTabNo()))
-+ // mirror horizontal movement for right-to-left mode.
-+ nMovX = -1;
-+
-+ switch (nSlotId)
- {
-- case SID_CURSORDOWN_SEL: rReq.SetSlot( SID_CURSORDOWN ); break;
-- case SID_CURSORBLKDOWN_SEL: rReq.SetSlot( SID_CURSORBLKDOWN ); break;
-- case SID_CURSORUP_SEL: rReq.SetSlot( SID_CURSORUP ); break;
-- case SID_CURSORBLKUP_SEL: rReq.SetSlot( SID_CURSORBLKUP ); break;
-- case SID_CURSORLEFT_SEL: rReq.SetSlot( SID_CURSORLEFT ); break;
-- case SID_CURSORBLKLEFT_SEL: rReq.SetSlot( SID_CURSORBLKLEFT ); break;
-- case SID_CURSORRIGHT_SEL: rReq.SetSlot( SID_CURSORRIGHT ); break;
-- case SID_CURSORBLKRIGHT_SEL: rReq.SetSlot( SID_CURSORBLKRIGHT ); break;
-- case SID_CURSORPAGEDOWN_SEL: rReq.SetSlot( SID_CURSORPAGEDOWN ); break;
-- case SID_CURSORPAGEUP_SEL: rReq.SetSlot( SID_CURSORPAGEUP ); break;
-- case SID_CURSORPAGERIGHT_SEL: rReq.SetSlot( SID_CURSORPAGERIGHT_ ); break;
-- case SID_CURSORPAGELEFT_SEL: rReq.SetSlot( SID_CURSORPAGELEFT_ ); break;
-+ case SID_CURSORDOWN_SEL:
-+ pViewShell->ExpandBlock(0, 1, SC_FOLLOW_LINE);
-+ break;
-+ case SID_CURSORUP_SEL:
-+ pViewShell->ExpandBlock(0, -1, SC_FOLLOW_LINE);
-+ break;
-+ case SID_CURSORRIGHT_SEL:
-+ pViewShell->ExpandBlock(nMovX, 0, SC_FOLLOW_LINE);
-+ break;
-+ case SID_CURSORLEFT_SEL:
-+ pViewShell->ExpandBlock(-nMovX, 0, SC_FOLLOW_LINE);
-+ break;
-+ case SID_CURSORPAGEUP_SEL:
-+ pViewShell->ExpandBlockPage(0, -1);
-+ break;
-+ case SID_CURSORPAGEDOWN_SEL:
-+ pViewShell->ExpandBlockPage(0, 1);
-+ break;
-+ case SID_CURSORPAGERIGHT_SEL:
-+ pViewShell->ExpandBlockPage(nMovX, 0);
-+ break;
-+ case SID_CURSORPAGELEFT_SEL:
-+ pViewShell->ExpandBlockPage(-nMovX, 0);
-+ break;
-+ case SID_CURSORBLKDOWN_SEL:
-+ pViewShell->ExpandBlockArea(0, 1);
-+ break;
-+ case SID_CURSORBLKUP_SEL:
-+ pViewShell->ExpandBlockArea(0, -1);
-+ break;
-+ case SID_CURSORBLKRIGHT_SEL:
-+ pViewShell->ExpandBlockArea(nMovX, 0);
-+ break;
-+ case SID_CURSORBLKLEFT_SEL:
-+ pViewShell->ExpandBlockArea(-nMovX, 0);
-+ break;
- default:
-- DBG_ERROR("Unbekannte Message bei ViewShell (CursorSel)");
-- return;
-+ ;
- }
-- rReq.AppendItem( SfxInt16Item(FN_PARAM_1, nRepeat ) );
-- rReq.AppendItem( SfxBoolItem(FN_PARAM_2, TRUE) );
-- ExecuteSlot( rReq, GetInterface() );
-+ pViewShell->ShowAllCursors();
- }
-
- void ScCellShell::ExecuteMove( SfxRequest& rReq )
-@@ -345,7 +418,6 @@ void ScCellShell::ExecutePage( SfxRequest& rReq )
- {
- // ADD mode: keep the selection, start a new block when marking with shift again
- bKeep = TRUE;
-- pTabViewShell->SetNewStartIfMarking();
- }
- }
-
-diff --git sc/source/ui/view/gridwin.cxx sc/source/ui/view/gridwin.cxx
-index 19bae47..b89fc7b 100644
---- sc/source/ui/view/gridwin.cxx
-+++ sc/source/ui/view/gridwin.cxx
-@@ -2175,8 +2175,12 @@ void __EXPORT ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt )
- }
-
- SfxStringItem aPosItem( SID_CURRENTCELL, aAddr );
-+ // We don't want to align to the cursor position because if the
-+ // cell cursor isn't visible after making selection, it would jump
-+ // back to the origin of the selection where the cell cursor is.
-+ SfxBoolItem aAlignCursorItem( FN_PARAM_2, false );
- pDisp->Execute( SID_CURRENTCELL, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
-- &aPosItem, (void*)0L );
-+ &aPosItem, &aAlignCursorItem, (void*)0L );
-
- pViewData->GetView()->InvalidateAttribs();
- }
-@@ -3953,7 +3957,10 @@ sal_Int8 ScGridWindow::DropTransferObj( ScTransferObj* pTransObj, SCCOL nDestPos
- if ( bDone )
- {
- pView->MarkRange( aDest, FALSE, FALSE );
-- pView->SetCursor( aDest.aEnd.Col(), aDest.aEnd.Row() );
-+
-+ SCCOL nDCol = pViewData->GetCurX() - aSource.aStart.Col();
-+ SCROW nDRow = pViewData->GetCurY() - aSource.aStart.Row();
-+ pView->SetCursor( aDest.aStart.Col() + nDCol, aDest.aStart.Row() + nDRow );
- }
-
- pDocSh->GetUndoManager()->LeaveListAction();
-@@ -4061,7 +4068,7 @@ sal_Int8 ScGridWindow::DropTransferObj( ScTransferObj* pTransObj, SCCOL nDestPos
- pView->EnterMatrix( aFormula );
-
- pView->MarkRange( aDest, FALSE, FALSE );
-- pView->SetCursor( aDest.aEnd.Col(), aDest.aEnd.Row() );
-+ pView->SetCursor( aDest.aStart.Col(), aDest.aStart.Row() );
- }
-
- pDocSh->GetUndoManager()->LeaveListAction();
-@@ -4095,7 +4102,7 @@ sal_Int8 ScGridWindow::DropTransferObj( ScTransferObj* pTransObj, SCCOL nDestPos
- if ( bDone )
- {
- pView->MarkRange( aDest, FALSE, FALSE );
-- pView->SetCursor( aDest.aEnd.Col(), aDest.aEnd.Row() );
-+ pView->SetCursor( aDest.aStart.Col(), aDest.aStart.Row() );
- }
- }
-
-diff --git sc/source/ui/view/select.cxx sc/source/ui/view/select.cxx
-index e4daa9d..29ec2ca 100644
---- sc/source/ui/view/select.cxx
-+++ sc/source/ui/view/select.cxx
-@@ -583,7 +583,10 @@ BOOL ScViewFunctionSet::SetCursorAtCell( SCsCOL nPosX, SCsROW nPosY, BOOL bScrol
- }
- }
- if (bStarted)
-+ // If the selection is already started, don't set the cursor.
- pView->MarkCursor( (SCCOL) nPosX, (SCROW) nPosY, nTab, FALSE, FALSE, TRUE );
-+ else
-+ pView->SetCursor( (SCCOL) nPosX, (SCROW) nPosY );
- }
- else
- {
-@@ -619,9 +622,9 @@ BOOL ScViewFunctionSet::SetCursorAtCell( SCsCOL nPosX, SCsROW nPosY, BOOL bScrol
-
- bStarted = TRUE;
- }
-+ pView->SetCursor( (SCCOL) nPosX, (SCROW) nPosY );
- }
-
-- pView->SetCursor( (SCCOL) nPosX, (SCROW) nPosY );
- pViewData->SetRefStart( nPosX, nPosY, nTab );
- if (bHideCur)
- pView->ShowAllCursors();
-diff --git sc/source/ui/view/tabview.cxx sc/source/ui/view/tabview.cxx
-index 16dac4a..c5a4ba0 100644
---- sc/source/ui/view/tabview.cxx
-+++ sc/source/ui/view/tabview.cxx
-@@ -384,8 +384,7 @@ BOOL lcl_HasRowOutline( const ScViewData& rViewData )
- bInUpdateHeader( FALSE ), \
- bInActivatePart( FALSE ), \
- bInZoomUpdate( FALSE ), \
-- bMoveIsShift( FALSE ), \
-- bNewStartIfMarking( FALSE )
-+ bMoveIsShift( FALSE )
-
-
- ScTabView::ScTabView( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell ) :
-diff --git sc/source/ui/view/tabview2.cxx sc/source/ui/view/tabview2.cxx
-index fa99268..7be5ea7 100644
---- sc/source/ui/view/tabview2.cxx
-+++ sc/source/ui/view/tabview2.cxx
-@@ -59,6 +59,7 @@
- #include "waitoff.hxx"
- #include "globstr.hrc"
- #include "scmod.hxx"
-+#include "tabprotection.hxx"
-
- #define SC_BLOCKMODE_NONE 0
- #define SC_BLOCKMODE_NORMAL 1
-@@ -175,16 +176,9 @@ void ScTabView::InitBlockMode( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ,
- InvertBlockMark( nBlockStartX,nBlockStartY,nBlockEndX,nBlockEndY );
- #endif
- UpdateSelectionOverlay();
--
-- bNewStartIfMarking = FALSE; // use only once
- }
- }
-
--void ScTabView::SetNewStartIfMarking()
--{
-- bNewStartIfMarking = TRUE;
--}
--
- void ScTabView::DoneBlockMode( BOOL bContinue ) // Default FALSE
- {
- // Wenn zwischen Tabellen- und Header SelectionEngine gewechselt wird,
-@@ -418,6 +412,305 @@ void ScTabView::UpdateCopySourceOverlay()
- pGridWin[i]->UpdateCopySourceOverlay();
- }
-
-+void ScTabView::GetPageMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, SCsCOL& rPageX, SCsROW& rPageY)
-+{
-+ SCCOL nCurX;
-+ SCROW nCurY;
-+ aViewData.GetMoveCursor( nCurX,nCurY );
-+
-+ ScSplitPos eWhich = aViewData.GetActivePart();
-+ ScHSplitPos eWhichX = WhichH( eWhich );
-+ ScVSplitPos eWhichY = WhichV( eWhich );
-+
-+ SCsCOL nPageX;
-+ SCsROW nPageY;
-+ if (nMovX >= 0)
-+ nPageX = ((SCsCOL) aViewData.CellsAtX( nCurX, 1, eWhichX )) * nMovX;
-+ else
-+ nPageX = ((SCsCOL) aViewData.CellsAtX( nCurX, -1, eWhichX )) * nMovX;
-+
-+ if (nMovY >= 0)
-+ nPageY = ((SCsROW) aViewData.CellsAtY( nCurY, 1, eWhichY )) * nMovY;
-+ else
-+ nPageY = ((SCsROW) aViewData.CellsAtY( nCurY, -1, eWhichY )) * nMovY;
-+
-+ if (nMovX != 0 && nPageX == 0) nPageX = (nMovX>0) ? 1 : -1;
-+ if (nMovY != 0 && nPageY == 0) nPageY = (nMovY>0) ? 1 : -1;
-+
-+ rPageX = nPageX;
-+ rPageY = nPageY;
-+}
-+
-+void ScTabView::GetAreaMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode,
-+ SCsCOL& rAreaX, SCsROW& rAreaY, ScFollowMode& rMode)
-+{
-+ SCCOL nNewX = -1;
-+ SCROW nNewY = -1;
-+ SCCOL nCurX = -1;
-+ SCROW nCurY = -1;
-+
-+ if (aViewData.IsRefMode())
-+ {
-+ nNewX = aViewData.GetRefEndX();
-+ nNewY = aViewData.GetRefEndY();
-+ }
-+ else if (IsBlockMode())
-+ {
-+ nNewX = nBlockEndX;
-+ nNewY = nBlockEndY;
-+ }
-+ else
-+ {
-+ nNewX = nCurX = aViewData.GetCurX();
-+ nNewY = nCurY = aViewData.GetCurY();
-+ }
-+
-+ ScDocument* pDoc = aViewData.GetDocument();
-+ SCTAB nTab = aViewData.GetTabNo();
-+
-+ // FindAreaPos kennt nur -1 oder 1 als Richtung
-+
-+ SCsCOLROW i;
-+ if ( nMovX > 0 )
-+ for ( i=0; i<nMovX; i++ )
-+ pDoc->FindAreaPos( nNewX, nNewY, nTab, 1, 0 );
-+ if ( nMovX < 0 )
-+ for ( i=0; i<-nMovX; i++ )
-+ pDoc->FindAreaPos( nNewX, nNewY, nTab, -1, 0 );
-+ if ( nMovY > 0 )
-+ for ( i=0; i<nMovY; i++ )
-+ pDoc->FindAreaPos( nNewX, nNewY, nTab, 0, 1 );
-+ if ( nMovY < 0 )
-+ for ( i=0; i<-nMovY; i++ )
-+ pDoc->FindAreaPos( nNewX, nNewY, nTab, 0, -1 );
-+
-+ if (eMode==SC_FOLLOW_JUMP) // unten/rechts nicht zuviel grau anzeigen
-+ {
-+ if (nMovX != 0 && nNewX == MAXCOL)
-+ eMode = SC_FOLLOW_LINE;
-+ if (nMovY != 0 && nNewY == MAXROW)
-+ eMode = SC_FOLLOW_LINE;
-+ }
-+
-+ if (aViewData.IsRefMode())
-+ {
-+ rAreaX = nNewX - aViewData.GetRefEndX();
-+ rAreaY = nNewY - aViewData.GetRefEndY();
-+ }
-+ else if (IsBlockMode())
-+ {
-+ rAreaX = nNewX - nBlockEndX;
-+ rAreaY = nNewY - nBlockEndY;
-+ }
-+ else
-+ {
-+ rAreaX = nNewX - nCurX;
-+ rAreaY = nNewY - nCurY;
-+ }
-+ rMode = eMode;
-+}
-+
-+namespace {
-+
-+bool lcl_isCellQualified(ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab, bool bSelectLocked, bool bSelectUnlocked)
-+{
-+ bool bCellProtected = pDoc->HasAttrib(
-+ nCol, nRow, nTab, nCol, nRow, nTab, HASATTR_PROTECTED);
-+
-+ if (bCellProtected && !bSelectLocked)
-+ return false;
-+
-+ if (!bCellProtected && !bSelectUnlocked)
-+ return false;
-+
-+ return true;
-+}
-+
-+void lcl_moveCursorByProtRule(
-+ SCCOL& rCol, SCROW& rRow, SCsCOL nMovX, SCsROW nMovY, SCTAB nTab, ScDocument* pDoc)
-+{
-+ bool bSelectLocked = true;
-+ bool bSelectUnlocked = true;
-+ ScTableProtection* pTabProtection = pDoc->GetTabProtection(nTab);
-+ if (pTabProtection && pTabProtection->isProtected())
-+ {
-+ bSelectLocked = pTabProtection->isOptionEnabled(ScTableProtection::SELECT_LOCKED_CELLS);
-+ bSelectUnlocked = pTabProtection->isOptionEnabled(ScTableProtection::SELECT_UNLOCKED_CELLS);
-+ }
-+
-+ if (nMovX > 0)
-+ {
-+ if (rCol < MAXCOL)
-+ {
-+ for (SCCOL i = 0; i < nMovX; ++i)
-+ {
-+ if (!lcl_isCellQualified(pDoc, rCol+1, rRow, nTab, bSelectLocked, bSelectUnlocked))
-+ break;
-+ ++rCol;
-+ }
-+ }
-+ }
-+ else if (nMovX < 0)
-+ {
-+ if (rCol > 0)
-+ {
-+ nMovX = -nMovX;
-+ for (SCCOL i = 0; i < nMovX; ++i)
-+ {
-+ if (!lcl_isCellQualified(pDoc, rCol-1, rRow, nTab, bSelectLocked, bSelectUnlocked))
-+ break;
-+ --rCol;
-+ }
-+ }
-+ }
-+
-+ if (nMovY > 0)
-+ {
-+ if (rRow < MAXROW)
-+ {
-+ for (SCROW i = 0; i < nMovY; ++i)
-+ {
-+ if (!lcl_isCellQualified(pDoc, rCol, rRow+1, nTab, bSelectLocked, bSelectUnlocked))
-+ break;
-+ ++rRow;
-+ }
-+ }
-+ }
-+ else if (nMovY < 0)
-+ {
-+ if (rRow > 0)
-+ {
-+ nMovY = -nMovY;
-+ for (SCROW i = 0; i < nMovY; ++i)
-+ {
-+ if (!lcl_isCellQualified(pDoc, rCol, rRow-1, nTab, bSelectLocked, bSelectUnlocked))
-+ break;
-+ --rRow;
-+ }
-+ }
-+ }
-+}
-+
-+}
-+
-+void ScTabView::ExpandBlock(SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode)
-+{
-+ if (!nMovX && !nMovY)
-+ // Nothing to do. Bail out.
-+ return;
-+
-+ ScTabViewShell* pViewShell = aViewData.GetViewShell();
-+ bool bRefInputMode = pViewShell && pViewShell->IsRefInputMode();
-+ if (bRefInputMode && !aViewData.IsRefMode())
-+ // initialize formula reference mode if it hasn't already.
-+ InitRefMode(aViewData.GetCurX(), aViewData.GetCurY(), aViewData.GetTabNo(), SC_REFTYPE_REF);
-+
-+ ScDocument* pDoc = aViewData.GetDocument();
-+
-+ if (aViewData.IsRefMode())
-+ {
-+ // formula reference mode
-+
-+ SCCOL nNewX = aViewData.GetRefEndX();
-+ SCROW nNewY = aViewData.GetRefEndY();
-+ SCTAB nRefTab = aViewData.GetRefEndZ();
-+
-+ bool bSelectLocked = true;
-+ bool bSelectUnlocked = true;
-+ ScTableProtection* pTabProtection = pDoc->GetTabProtection(nRefTab);
-+ if (pTabProtection && pTabProtection->isProtected())
-+ {
-+ bSelectLocked = pTabProtection->isOptionEnabled(ScTableProtection::SELECT_LOCKED_CELLS);
-+ bSelectUnlocked = pTabProtection->isOptionEnabled(ScTableProtection::SELECT_UNLOCKED_CELLS);
-+ }
-+
-+ lcl_moveCursorByProtRule(nNewX, nNewY, nMovX, nMovY, nRefTab, pDoc);
-+
-+ if (nMovX)
-+ {
-+ SCCOL nTempX = nNewX;
-+ while (pDoc->IsHorOverlapped(nTempX, nNewY, nRefTab))
-+ {
-+ if (nMovX > 0)
-+ ++nTempX;
-+ else
-+ --nTempX;
-+ }
-+ if (lcl_isCellQualified(pDoc, nTempX, nNewY, nRefTab, bSelectLocked, bSelectUnlocked))
-+ nNewX = nTempX;
-+ }
-+
-+ if (nMovY)
-+ {
-+ SCROW nTempY = nNewY;
-+ while (pDoc->IsVerOverlapped(nNewX, nTempY, nRefTab))
-+ {
-+ if (nMovY > 0)
-+ ++nTempY;
-+ else
-+ --nTempY;
-+ }
-+ if (lcl_isCellQualified(pDoc, nNewX, nTempY, nRefTab, bSelectLocked, bSelectUnlocked))
-+ nNewY = nTempY;
-+ }
-+
-+ pDoc->SkipOverlapped(nNewX, nNewY, nRefTab);
-+ UpdateRef(nNewX, nNewY, nRefTab);
-+ AlignToCursor(nNewX, nNewY, eMode);
-+ }
-+ else
-+ {
-+ // normal selection mode
-+
-+ SCTAB nTab = aViewData.GetTabNo();
-+
-+ if (!IsBlockMode())
-+ InitBlockMode(aViewData.GetCurX(), aViewData.GetCurY(), nTab, true);
-+
-+ lcl_moveCursorByProtRule(nBlockEndX, nBlockEndY, nMovX, nMovY, nTab, pDoc);
-+
-+ if (nBlockEndX < 0)
-+ nBlockEndX = 0;
-+ else if (nBlockEndX > MAXCOL)
-+ nBlockEndX = MAXCOL;
-+
-+ if (nBlockEndY < 0)
-+ nBlockEndY = 0;
-+ else if (nBlockEndY > MAXROW)
-+ nBlockEndY = MAXROW;
-+
-+ pDoc->SkipOverlapped(nBlockEndX, nBlockEndY, nTab);
-+ MarkCursor(nBlockEndX, nBlockEndY, nTab, false, false, true);
-+
-+ // Check if the entire row(s) or column(s) are selected.
-+ ScSplitPos eActive = aViewData.GetActivePart();
-+ bool bRowSelected = (nBlockStartX == 0 && nBlockEndX == MAXCOL);
-+ bool bColSelected = (nBlockStartY == 0 && nBlockEndY == MAXROW);
-+ SCsCOL nAlignX = bRowSelected ? aViewData.GetPosX(WhichH(eActive)) : nBlockEndX;
-+ SCsROW nAlignY = bColSelected ? aViewData.GetPosY(WhichV(eActive)) : nBlockEndY;
-+ AlignToCursor(nAlignX, nAlignY, eMode);
-+
-+ SelectionChanged();
-+ }
-+}
-+
-+void ScTabView::ExpandBlockPage(SCsCOL nMovX, SCsROW nMovY)
-+{
-+ SCsCOL nPageX;
-+ SCsROW nPageY;
-+ GetPageMoveEndPosition(nMovX, nMovY, nPageX, nPageY);
-+ ExpandBlock(nPageX, nPageY, SC_FOLLOW_FIX);
-+}
-+
-+void ScTabView::ExpandBlockArea(SCsCOL nMovX, SCsROW nMovY)
-+{
-+ SCsCOL nAreaX;
-+ SCsROW nAreaY;
-+ ScFollowMode eMode;
-+ GetAreaMoveEndPosition(nMovX, nMovY, SC_FOLLOW_JUMP, nAreaX, nAreaY, eMode);
-+ ExpandBlock(nAreaX, nAreaY, eMode);
-+}
-+
- void ScTabView::UpdateSelectionOverlay()
- {
- for (USHORT i=0; i<4; i++)
-diff --git sc/source/ui/view/tabview3.cxx sc/source/ui/view/tabview3.cxx
-index 6444efe..03a2dc5 100644
---- sc/source/ui/view/tabview3.cxx
-+++ sc/source/ui/view/tabview3.cxx
-@@ -118,10 +118,7 @@ void ScTabView::ClickCursor( SCCOL nPosX, SCROW nPosY, BOOL bControl )
- {
- ScDocument* pDoc = aViewData.GetDocument();
- SCTAB nTab = aViewData.GetTabNo();
-- while (pDoc->IsHorOverlapped( nPosX, nPosY, nTab )) //! ViewData !!!
-- --nPosX;
-- while (pDoc->IsVerOverlapped( nPosX, nPosY, nTab ))
-- --nPosY;
-+ pDoc->SkipOverlapped(nPosX, nPosY, nTab);
-
- BOOL bRefMode = SC_MOD()->IsFormulaMode();
-
-@@ -900,22 +897,36 @@ void ScTabView::MoveCursorAbs( SCsCOL nCurX, SCsROW nCurY, ScFollowMode eMode,
-
- HideAllCursors();
-
-- if ( bShift && bNewStartIfMarking && IsBlockMode() )
-- {
-- // used for ADD selection mode: start a new block from the cursor position
-- DoneBlockMode( TRUE );
-- InitBlockMode( aViewData.GetCurX(), aViewData.GetCurY(), aViewData.GetTabNo(), TRUE );
-- }
--
- // aktiven Teil umschalten jetzt in AlignToCursor
-
- AlignToCursor( nCurX, nCurY, eMode );
- //! auf OS/2: SC_FOLLOW_JUMP statt SC_FOLLOW_LINE, um Nachlaufen zu verhindern ???
-
- if (bKeepSel)
-+ {
- SetCursor( nCurX, nCurY ); // Markierung stehenlassen
-+
-+ // If the cursor is in existing selection, it's a cursor movement by
-+ // ENTER or TAB. If not, then it's a new selection during ADD
-+ // selection mode.
-+
-+ const ScMarkData& rMark = aViewData.GetMarkData();
-+ ScRangeList aSelList;
-+ rMark.FillRangeListWithMarks(&aSelList, false);
-+ if (!aSelList.In(ScRange(nCurX, nCurY, aViewData.GetTabNo())))
-+ // Cursor not in existing selection. Start a new selection.
-+ DoneBlockMode(true);
-+ }
- else
- {
-+ if (!bShift)
-+ {
-+ // Remove all marked data on cursor movement unless the Shift is locked.
-+ ScMarkData aData(aViewData.GetMarkData());
-+ aData.ResetMark();
-+ SetMarkData(aData);
-+ }
-+
- BOOL bSame = ( nCurX == aViewData.GetCurX() && nCurY == aViewData.GetCurY() );
- bMoveIsShift = bShift;
- pSelEngine->CursorPosChanging( bShift, bControl );
-@@ -1059,68 +1070,18 @@ void ScTabView::MoveCursorRel( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode,
-
- void ScTabView::MoveCursorPage( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode, BOOL bShift, BOOL bKeepSel )
- {
-- SCCOL nCurX;
-- SCROW nCurY;
-- aViewData.GetMoveCursor( nCurX,nCurY );
--
-- ScSplitPos eWhich = aViewData.GetActivePart();
-- ScHSplitPos eWhichX = WhichH( eWhich );
-- ScVSplitPos eWhichY = WhichV( eWhich );
--
- SCsCOL nPageX;
- SCsROW nPageY;
-- if (nMovX >= 0)
-- nPageX = ((SCsCOL) aViewData.CellsAtX( nCurX, 1, eWhichX )) * nMovX;
-- else
-- nPageX = ((SCsCOL) aViewData.CellsAtX( nCurX, -1, eWhichX )) * nMovX;
--
-- if (nMovY >= 0)
-- nPageY = ((SCsROW) aViewData.CellsAtY( nCurY, 1, eWhichY )) * nMovY;
-- else
-- nPageY = ((SCsROW) aViewData.CellsAtY( nCurY, -1, eWhichY )) * nMovY;
--
-- if (nMovX != 0 && nPageX == 0) nPageX = (nMovX>0) ? 1 : -1;
-- if (nMovY != 0 && nPageY == 0) nPageY = (nMovY>0) ? 1 : -1;
--
-+ GetPageMoveEndPosition(nMovX, nMovY, nPageX, nPageY);
- MoveCursorRel( nPageX, nPageY, eMode, bShift, bKeepSel );
- }
-
- void ScTabView::MoveCursorArea( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode, BOOL bShift, BOOL bKeepSel )
- {
-- SCCOL nCurX;
-- SCROW nCurY;
-- aViewData.GetMoveCursor( nCurX,nCurY );
-- SCCOL nNewX = nCurX;
-- SCROW nNewY = nCurY;
--
-- ScDocument* pDoc = aViewData.GetDocument();
-- SCTAB nTab = aViewData.GetTabNo();
--
-- // FindAreaPos kennt nur -1 oder 1 als Richtung
--
-- SCsCOLROW i;
-- if ( nMovX > 0 )
-- for ( i=0; i<nMovX; i++ )
-- pDoc->FindAreaPos( nNewX, nNewY, nTab, 1, 0 );
-- if ( nMovX < 0 )
-- for ( i=0; i<-nMovX; i++ )
-- pDoc->FindAreaPos( nNewX, nNewY, nTab, -1, 0 );
-- if ( nMovY > 0 )
-- for ( i=0; i<nMovY; i++ )
-- pDoc->FindAreaPos( nNewX, nNewY, nTab, 0, 1 );
-- if ( nMovY < 0 )
-- for ( i=0; i<-nMovY; i++ )
-- pDoc->FindAreaPos( nNewX, nNewY, nTab, 0, -1 );
--
-- if (eMode==SC_FOLLOW_JUMP) // unten/rechts nicht zuviel grau anzeigen
-- {
-- if (nMovX != 0 && nNewX == MAXCOL)
-- eMode = SC_FOLLOW_LINE;
-- if (nMovY != 0 && nNewY == MAXROW)
-- eMode = SC_FOLLOW_LINE;
-- }
--
-- MoveCursorRel( ((SCsCOL)nNewX)-(SCsCOL)nCurX, ((SCsROW)nNewY)-(SCsROW)nCurY, eMode, bShift, bKeepSel );
-+ SCsCOL nNewX;
-+ SCsROW nNewY;
-+ GetAreaMoveEndPosition(nMovX, nMovY, eMode, nNewX, nNewY, eMode);
-+ MoveCursorRel(nNewX, nNewY, eMode, bShift, bKeepSel);
- }
-
- void ScTabView::MoveCursorEnd( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode, BOOL bShift, BOOL bKeepSel )
-@@ -1185,14 +1146,8 @@ void ScTabView::MoveCursorScreen( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode
- else if (nMovY>0)
- nNewY=nPosY+nAddY;
-
--// aViewData.ResetOldCursor();
- aViewData.SetOldCursor( nNewX,nNewY );
--
-- while (pDoc->IsHorOverlapped( nNewX, nNewY, nTab ))
-- --nNewX;
-- while (pDoc->IsVerOverlapped( nNewX, nNewY, nTab ))
-- --nNewY;
--
-+ pDoc->SkipOverlapped(nNewX, nNewY, nTab);
- MoveCursorAbs( nNewX, nNewY, eMode, bShift, FALSE, TRUE );
- }
-
-@@ -1476,11 +1431,7 @@ void ScTabView::MarkRange( const ScRange& rRange, BOOL bSetCursor, BOOL bContinu
- SCCOL nPosX = rRange.aStart.Col();
- SCROW nPosY = rRange.aStart.Row();
- ScDocument* pDoc = aViewData.GetDocument();
--
-- while (pDoc->IsHorOverlapped( nPosX, nPosY, nTab )) //! ViewData !!!
-- --nPosX;
-- while (pDoc->IsVerOverlapped( nPosX, nPosY, nTab ))
-- --nPosY;
-+ pDoc->SkipOverlapped(nPosX, nPosY, nTab);
-
- aViewData.ResetOldCursor();
- SetCursor( nPosX, nPosY );
-diff --git sc/source/ui/view/tabvwsh3.cxx sc/source/ui/view/tabvwsh3.cxx
-index c09f44a..88eecb9 100644
---- sc/source/ui/view/tabvwsh3.cxx
-+++ sc/source/ui/view/tabvwsh3.cxx
-@@ -265,6 +265,10 @@ void ScTabViewShell::Execute( SfxRequest& rReq )
- if ( pReqArgs->GetItemState( FN_PARAM_1, TRUE, &pItem ) == SFX_ITEM_SET )
- bUnmark = ((const SfxBoolItem*)pItem)->GetValue();
-
-+ bool bAlignToCursor = true;
-+ if (pReqArgs->GetItemState(FN_PARAM_2, true, &pItem) == SFX_ITEM_SET)
-+ bAlignToCursor = static_cast<const SfxBoolItem*>(pItem)->GetValue();
-+
- if ( nSlot == SID_JUMPTOMARK )
- {
- // #106586# URL has to be decoded for escaped characters (%20)
-@@ -385,10 +389,7 @@ void ScTabViewShell::Execute( SfxRequest& rReq )
- // und Cursor setzen
-
- // zusammengefasste Zellen beruecksichtigen:
-- while ( pDoc->IsHorOverlapped( nCol, nRow, nTab ) ) //! ViewData !!!
-- --nCol;
-- while ( pDoc->IsVerOverlapped( nCol, nRow, nTab ) )
-- --nRow;
-+ pDoc->SkipOverlapped(nCol, nRow, nTab);
-
- // Navigator-Aufrufe sind nicht API!!!
-
-@@ -409,9 +410,13 @@ void ScTabViewShell::Execute( SfxRequest& rReq )
- if (!rReq.IsAPI())
- rReq.Done();
- }
-- // align to cursor even if the cursor position hasn't changed,
-- // because the cursor may be set outside the visible area.
-- AlignToCursor( nCol, nRow, SC_FOLLOW_JUMP );
-+
-+ if (bAlignToCursor)
-+ {
-+ // align to cursor even if the cursor position hasn't changed,
-+ // because the cursor may be set outside the visible area.
-+ AlignToCursor( nCol, nRow, SC_FOLLOW_JUMP );
-+ }
-
- rReq.SetReturnValue( SfxStringItem( SID_CURRENTCELL, aAddress ) );
- }
-diff --git sc/source/ui/view/viewdata.cxx sc/source/ui/view/viewdata.cxx
-index 95c927b..4cdb64e 100644
---- sc/source/ui/view/viewdata.cxx
-+++ sc/source/ui/view/viewdata.cxx
-@@ -1930,12 +1930,11 @@ BOOL ScViewData::GetPosFromPixel( long nClickX, long nClickY, ScSplitPos eWhich,
- {
- //! public Methode um Position anzupassen
-
-- BOOL bHOver = FALSE;
-- while (pDoc->IsHorOverlapped( rPosX, rPosY, nTabNo ))
-- { --rPosX; bHOver=TRUE; }
-- BOOL bVOver = FALSE;
-- while (pDoc->IsVerOverlapped( rPosX, rPosY, nTabNo ))
-- { --rPosY; bVOver=TRUE; }
-+ SCCOL nOrigX = rPosX;
-+ SCROW nOrigY = rPosY;
-+ pDoc->SkipOverlapped(rPosX, rPosY, nTabNo);
-+ bool bHOver = (nOrigX != rPosX);
-+ bool bVOver = (nOrigY != rPosY);
-
- if ( bRepair && ( bHOver || bVOver ) )
- {
---
-1.7.0.1
-
commit c212b04a472580945120f88f94724fe50e9339c5
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date: Thu Sep 16 11:05:26 2010 +0200
chart-highlight-selection-fix.diff: Migrated to git
diff --git a/patches/dev300/apply b/patches/dev300/apply
index 230de37..3bdd73d 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -573,9 +573,6 @@ calc-perf-filtering-with-notes.diff, n#556927, kohei
# import xlsx's Normal cell style into Calc's 'Default' style.
calc-xlsx-import-default-cellstyle.diff, n#558577, kohei
-# correctly highlight disjoint ranges in chart mode.
-chart-highlight-selection-fix.diff, n#568016, kohei
-
# Support PHONETIC function to display asian phonetic guide.
# LATER: I'll take care of this later. --kohei
# calc-formula-asian-phonetic.diff, i#80764, i#80765, i#80766, kohei
diff --git a/patches/dev300/chart-highlight-selection-fix.diff b/patches/dev300/chart-highlight-selection-fix.diff
deleted file mode 100644
index 776a666..0000000
--- a/patches/dev300/chart-highlight-selection-fix.diff
+++ /dev/null
@@ -1,36 +0,0 @@
----
- sc/source/ui/view/tabview3.cxx | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git sc/source/ui/view/tabview3.cxx sc/source/ui/view/tabview3.cxx
-index 03a2dc5..061e3e4 100644
---- sc/source/ui/view/tabview3.cxx
-+++ sc/source/ui/view/tabview3.cxx
-@@ -77,6 +77,7 @@
- #include "rangeutl.hxx"
- #include "client.hxx"
- #include "tabprotection.hxx"
-+#include "formula/FormulaCompiler.hxx"
-
- #include <com/sun/star/chart2/data/HighlightedRange.hpp>
-
-@@ -2139,6 +2140,7 @@ void ScTabView::DoChartSelection(
- const uno::Sequence< chart2::data::HighlightedRange > & rHilightRanges )
- {
- ClearHighlightRanges();
-+ const sal_Unicode sep = ::formula::FormulaCompiler::GetNativeSymbol(ocSep).GetChar(0);
-
- for( sal_Int32 i=0; i<rHilightRanges.getLength(); ++i )
- {
-@@ -2146,7 +2148,7 @@ void ScTabView::DoChartSelection(
- ScRangeList aRangeList;
- ScDocument* pDoc = aViewData.GetDocShell()->GetDocument();
- if( ScRangeStringConverter::GetRangeListFromString(
-- aRangeList, rHilightRanges[i].RangeRepresentation, pDoc, pDoc->GetAddressConvention(), ';' ))
-+ aRangeList, rHilightRanges[i].RangeRepresentation, pDoc, pDoc->GetAddressConvention(), sep ))
- {
- for ( ScRangePtr p = aRangeList.First(); p; p = aRangeList.Next())
- {
---
-1.7.0.1
-
More information about the ooo-build-commit
mailing list