[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