diff options
author | Release Engineers <releng@openoffice.org> | 2009-07-03 11:00:47 +0000 |
---|---|---|
committer | Release Engineers <releng@openoffice.org> | 2009-07-03 11:00:47 +0000 |
commit | 220c5f9de6dfe8e7a9b343be0480be3d4d3ca3cb (patch) | |
tree | a6640745a104caa9636f9fbcbbfcba55c40b6e98 /sc/source/ui/app/inputhdl.cxx | |
parent | 9aaf80e791554eb568df3fd27d9c97472a84c68f (diff) |
CWS-TOOLING: integrate CWS koheiformula03
2009-04-24 17:45:29 +0200 kohei r271229 : #i101330# Extend Excel's maximum column to Calc's maximum column upon import.
2009-04-14 21:45:35 +0200 kohei r270810 : #i101048# fixed - now the autofilter menu item is disabled when the current cursor
overlaps a datapilot table.
2009-04-14 21:41:22 +0200 kohei r270809 : #i101047# fixed by removing all merge flags when a new row is inserted. The old code
did remove merge flags, but it didn't remove SC_MF_BUTTON flag.
2009-04-14 18:00:16 +0200 kohei r270806 : #i101091# fixed the issue. When creating a data sequence via passing a range
representation, the syntax must be the Calc A1 syntax regardless of current
formula syntax. However, for other operations that affects chart's UI, the
syntax must be the current formula syntax.
In the future we should have an API to directly pass formula reference tokens
to chart objects.
2009-04-14 17:46:36 +0200 kohei r270804 : #i101090# fixed the issue of referenced ranges not being highlighted & formula tooltip
not working when the separators are not ';'.
2009-04-14 17:37:55 +0200 kohei r270802 : #i101043# Fixed. Defining a named range via the named range box should now
work for non-default formula syntax.
2009-04-14 17:35:08 +0200 kohei r270800 : #i101041# Fixed. Always interpret DDE's address using the Calc A1 syntax regardless of
current formula syntax.
Diffstat (limited to 'sc/source/ui/app/inputhdl.cxx')
-rw-r--r-- | sc/source/ui/app/inputhdl.cxx | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index 226c7d203..d7d1f3cd1 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -113,14 +113,22 @@ extern USHORT nEditAdjust; //! Member an ViewData //================================================================== +static sal_Unicode lcl_getSheetSeparator(ScDocument* pDoc) +{ + ScCompiler aComp(pDoc, ScAddress()); + aComp.SetGrammar(pDoc->GetGrammar()); + return aComp.GetNativeAddressSymbol(ScCompiler::Convention::SHEET_SEPARATOR); +} + void ScInputHandler::InitRangeFinder( const String& rFormula ) { DeleteRangeFinder(); + ScDocShell* pDocSh = pActiveViewSh->GetViewData()->GetDocShell(); + ScDocument* pDoc = pDocSh->GetDocument(); + const sal_Unicode cSheetSep = lcl_getSheetSeparator(pDoc); if ( !pActiveViewSh || !SC_MOD()->GetInputOptions().GetRangeFinder() ) return; - ScDocShell* pDocSh = pActiveViewSh->GetViewData()->GetDocShell(); - ScDocument* pDoc = pDocSh->GetDocument(); // String aDelimiters = pEngine->GetWordDelimiters(); String aDelimiters = ScEditUtil::ModifyDelimiters( @@ -129,7 +137,7 @@ void ScInputHandler::InitRangeFinder( const String& rFormula ) xub_StrLen nColon = aDelimiters.Search(':'); if ( nColon != STRING_NOTFOUND ) aDelimiters.Erase( nColon, 1 ); // Delimiter ohne Doppelpunkt - xub_StrLen nDot = aDelimiters.Search('.'); + xub_StrLen nDot = aDelimiters.Search(cSheetSep); if ( nDot != STRING_NOTFOUND ) aDelimiters.Erase( nDot, 1 ); // Delimiter ohne Punkt @@ -702,6 +710,9 @@ void ScInputHandler::ShowTipCursor() HideTip(); HideTipBelow(); EditView* pActiveView = pTopView ? pTopView : pTableView; + ScDocShell* pDocSh = pActiveViewSh->GetViewData()->GetDocShell(); + const sal_Unicode cSep = ScCompiler::GetNativeSymbol(ocSep).GetChar(0); + const sal_Unicode cSheetSep = lcl_getSheetSeparator(pDocSh->GetDocument()); if ( bFormulaMode && pActiveView && pFormulaDataPara && pEngine->GetParagraphCount() == 1 ) { @@ -764,8 +775,8 @@ void ScInputHandler::ShowTipCursor() } if( bFlag ) { - nCountSemicolon = aNew.GetTokenCount(';')-1; - nCountDot = aNew.GetTokenCount('.')-1; + nCountSemicolon = aNew.GetTokenCount(cSep)-1; + nCountDot = aNew.GetTokenCount(cSheetSep)-1; if( !nCountSemicolon ) { @@ -787,7 +798,7 @@ void ScInputHandler::ShowTipCursor() { nStartPosition = i+1; } - else if( cNext == ';' ) + else if( cNext == cSep ) { nCount ++; nEndPosition = i; @@ -808,7 +819,7 @@ void ScInputHandler::ShowTipCursor() { nStartPosition = i+1; } - else if( cNext == ';' ) + else if( cNext == cSep ) { nCount ++; nEndPosition = i; @@ -818,7 +829,7 @@ void ScInputHandler::ShowTipCursor() } nStartPosition = nEndPosition+1; } - else if( cNext == '.' ) + else if( cNext == cSheetSep ) { continue; } @@ -919,6 +930,9 @@ void ScInputHandler::ShowTipBelow( const String& rText ) void ScInputHandler::UseFormulaData() { EditView* pActiveView = pTopView ? pTopView : pTableView; + ScDocShell* pDocSh = pActiveViewSh->GetViewData()->GetDocShell(); + const sal_Unicode cSep = ScCompiler::GetNativeSymbol(ocSep).GetChar(0); + const sal_Unicode cSheetSep = lcl_getSheetSeparator(pDocSh->GetDocument()); // Formeln duerfen nur 1 Absatz haben if ( pActiveView && pFormulaData && pEngine->GetParagraphCount() == 1 ) @@ -1003,8 +1017,8 @@ void ScInputHandler::UseFormulaData() } if( bFlag ) { - nCountSemicolon = aNew.GetTokenCount(';')-1; - nCountDot = aNew.GetTokenCount('.')-1; + nCountSemicolon = aNew.GetTokenCount(cSep)-1; + nCountDot = aNew.GetTokenCount(cSheetSep)-1; if( !nCountSemicolon ) { @@ -1026,7 +1040,7 @@ void ScInputHandler::UseFormulaData() { nStartPosition = i+1; } - else if( cNext == ';' ) + else if( cNext == cSep ) { nCount ++; nEndPosition = i; @@ -1047,7 +1061,7 @@ void ScInputHandler::UseFormulaData() { nStartPosition = i+1; } - else if( cNext == ';' ) + else if( cNext == cSep ) { nCount ++; nEndPosition = i; @@ -1057,7 +1071,7 @@ void ScInputHandler::UseFormulaData() } nStartPosition = nEndPosition+1; } - else if( cNext == '.' ) + else if( cNext == cSheetSep ) { continue; } @@ -2740,6 +2754,7 @@ BOOL ScInputHandler::IsModalMode( SfxObjectShell* pDocSh ) void ScInputHandler::AddRefEntry() { + const sal_Unicode cSep = ScCompiler::GetNativeSymbol(ocSep).GetChar(0); UpdateActiveView(); if (!pTableView && !pTopView) return; // z.B. FillMode @@ -2748,9 +2763,9 @@ void ScInputHandler::AddRefEntry() RemoveSelection(); if (pTableView) - pTableView->InsertText( ';', FALSE ); + pTableView->InsertText( cSep, FALSE ); if (pTopView) - pTopView->InsertText( ';', FALSE ); + pTopView->InsertText( cSep, FALSE ); DataChanged(); } |