diff options
-rw-r--r-- | officecfg/registry/schema/org/openoffice/Office/Calc.xcs | 8 | ||||
-rw-r--r-- | sc/inc/inputopt.hxx | 3 | ||||
-rw-r--r-- | sc/inc/sc.hrc | 3 | ||||
-rw-r--r-- | sc/source/core/tool/inputopt.cxx | 34 | ||||
-rw-r--r-- | sc/source/ui/app/scmod.cxx | 10 | ||||
-rw-r--r-- | sc/source/ui/inc/tpview.hxx | 1 | ||||
-rw-r--r-- | sc/source/ui/optdlg/tpview.cxx | 14 | ||||
-rw-r--r-- | sc/source/ui/view/tabview2.cxx | 14 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/scgeneralpage.ui | 20 |
9 files changed, 91 insertions, 16 deletions
diff --git a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs index b3964387a490..ada44161f99f 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs @@ -714,6 +714,14 @@ </info> <value>true</value> </prop> + <prop oor:name="LegacyCellSelection" oor:type="xs:boolean" oor:nillable="false"> + <!-- UIHints: Tools - Options - Spreadsheet - General - [Section] Input settings --> + <info> + <desc>Use legacy behaviour when selecting cells</desc> + <label>Use legacy behaviour when selecting cells</label> + </info> + <value>true</value> + </prop> <prop oor:name="LastFunctions" oor:type="oor:int-list" oor:nillable="false"> <!-- OldPath: Calc/Input --> <!-- OldLocation: Soffice.cfg --> diff --git a/sc/inc/inputopt.hxx b/sc/inc/inputopt.hxx index be5095a9a2a5..33e282a4cf8b 100644 --- a/sc/inc/inputopt.hxx +++ b/sc/inc/inputopt.hxx @@ -38,6 +38,7 @@ private: sal_Bool bUseTabCol; sal_Bool bTextWysiwyg; sal_Bool bReplCellsWarn; + sal_Bool bLegacyCellSelection; public: ScInputOptions(); @@ -66,6 +67,8 @@ public: sal_Bool GetTextWysiwyg() const { return bTextWysiwyg; } void SetReplaceCellsWarn(sal_Bool bSet) { bReplCellsWarn = bSet; } sal_Bool GetReplaceCellsWarn() const { return bReplCellsWarn; } + void SetLegacyCellSelection(sal_Bool bSet) { bLegacyCellSelection = bSet; } + sal_Bool GetLegacyCellSelection() const { return bLegacyCellSelection; } const ScInputOptions& operator= ( const ScInputOptions& rOpt ); }; diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc index 8611337444bc..ca208ea9fcfb 100644 --- a/sc/inc/sc.hrc +++ b/sc/inc/sc.hrc @@ -84,6 +84,9 @@ #define FID_SCALESTATUS (SC_VIEW_START + 10) #define SID_UPDATECHART (SC_VIEW_START + 13) +// TabPage entry - Legacy selection +#define SID_SC_INPUT_LEGACY_CELL_SELECTION (SC_VIEW_START + 15) + // Format options #define SID_SCFORMULAOPTIONS (SC_VIEW_START + 20) #define SID_SCDEFAULTSOPTIONS (SC_VIEW_START + 21) diff --git a/sc/source/core/tool/inputopt.cxx b/sc/source/core/tool/inputopt.cxx index 6f056d6036fe..da7205728bdd 100644 --- a/sc/source/core/tool/inputopt.cxx +++ b/sc/source/core/tool/inputopt.cxx @@ -68,6 +68,7 @@ void ScInputOptions::SetDefaults() bUseTabCol = false; bTextWysiwyg = false; bReplCellsWarn = sal_True; + bLegacyCellSelection = false; } //------------------------------------------------------------------------ @@ -84,6 +85,7 @@ const ScInputOptions& ScInputOptions::operator=( const ScInputOptions& rCpy ) bUseTabCol = rCpy.bUseTabCol; bTextWysiwyg = rCpy.bTextWysiwyg; bReplCellsWarn = rCpy.bReplCellsWarn; + bLegacyCellSelection = rCpy.bLegacyCellSelection; return *this; } @@ -95,17 +97,18 @@ const ScInputOptions& ScInputOptions::operator=( const ScInputOptions& rCpy ) #define CFGPATH_INPUT "Office.Calc/Input" -#define SCINPUTOPT_MOVEDIR 0 -#define SCINPUTOPT_MOVESEL 1 -#define SCINPUTOPT_EDTEREDIT 2 -#define SCINPUTOPT_EXTENDFMT 3 -#define SCINPUTOPT_RANGEFIND 4 -#define SCINPUTOPT_EXPANDREFS 5 -#define SCINPUTOPT_MARKHEADER 6 -#define SCINPUTOPT_USETABCOL 7 -#define SCINPUTOPT_TEXTWYSIWYG 8 -#define SCINPUTOPT_REPLCELLSWARN 9 -#define SCINPUTOPT_COUNT 10 +#define SCINPUTOPT_MOVEDIR 0 +#define SCINPUTOPT_MOVESEL 1 +#define SCINPUTOPT_EDTEREDIT 2 +#define SCINPUTOPT_EXTENDFMT 3 +#define SCINPUTOPT_RANGEFIND 4 +#define SCINPUTOPT_EXPANDREFS 5 +#define SCINPUTOPT_MARKHEADER 6 +#define SCINPUTOPT_USETABCOL 7 +#define SCINPUTOPT_TEXTWYSIWYG 8 +#define SCINPUTOPT_REPLCELLSWARN 9 +#define SCINPUTOPT_LEGACY_CELL_SELECTION 10 +#define SCINPUTOPT_COUNT 11 Sequence<OUString> ScInputCfg::GetPropertyNames() { @@ -120,7 +123,8 @@ Sequence<OUString> ScInputCfg::GetPropertyNames() "HighlightSelection", // SCINPUTOPT_MARKHEADER "UseTabCol", // SCINPUTOPT_USETABCOL "UsePrinterMetrics", // SCINPUTOPT_TEXTWYSIWYG - "ReplaceCellsWarning" // SCINPUTOPT_REPLCELLSWARN + "ReplaceCellsWarning", // SCINPUTOPT_REPLCELLSWARN + "LegacyCellSelection" // SCINPUTOPT_LEGACY_CELL_SELECTION }; Sequence<OUString> aNames(SCINPUTOPT_COUNT); OUString* pNames = aNames.getArray(); @@ -179,6 +183,9 @@ ScInputCfg::ScInputCfg() : case SCINPUTOPT_REPLCELLSWARN: SetReplaceCellsWarn( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); break; + case SCINPUTOPT_LEGACY_CELL_SELECTION: + SetLegacyCellSelection( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); + break; } } } @@ -226,6 +233,9 @@ void ScInputCfg::Commit() case SCINPUTOPT_REPLCELLSWARN: ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetReplaceCellsWarn() ); break; + case SCINPUTOPT_LEGACY_CELL_SELECTION: + ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetLegacyCellSelection() ); + break; } } PutProperties(aNames, aValues); diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index d9b5d021f97e..cad7a5df842a 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -1304,6 +1304,12 @@ void ScModule::ModifyOptions( const SfxItemSet& rOptSet ) bSaveInputOptions = sal_True; } + if( rOptSet.HasItem( SID_SC_INPUT_LEGACY_CELL_SELECTION, &pItem ) ) + { + pInputCfg->SetLegacyCellSelection( ((const SfxBoolItem*)pItem)->GetValue() ); + bSaveInputOptions = sal_True; + } + //============================================ // PrintOptions //============================================ @@ -2016,6 +2022,7 @@ SfxItemSet* ScModule::CreateItemSet( sal_uInt16 nId ) SID_SC_INPUT_SELECTION,SID_SC_INPUT_MARK_HEADER, SID_SC_INPUT_TEXTWYSIWYG,SID_SC_INPUT_TEXTWYSIWYG, SID_SC_INPUT_REPLCELLSWARN,SID_SC_INPUT_REPLCELLSWARN, + SID_SC_INPUT_LEGACY_CELL_SELECTION,SID_SC_INPUT_LEGACY_CELL_SELECTION, // TP_USERLISTS: SCITEM_USERLIST, SCITEM_USERLIST, // TP_PRINT: @@ -2084,6 +2091,9 @@ SfxItemSet* ScModule::CreateItemSet( sal_uInt16 nId ) rInpOpt.GetTextWysiwyg() ) ); pRet->Put( SfxBoolItem( SID_SC_INPUT_REPLCELLSWARN, rInpOpt.GetReplaceCellsWarn() ) ); + pRet->Put( SfxBoolItem( SID_SC_INPUT_LEGACY_CELL_SELECTION, + rInpOpt.GetLegacyCellSelection() ) ); + // RID_SC_TP_PRINT pRet->Put( ScTpPrintItem( SID_SCPRINTOPTIONS, GetPrintOptions() ) ); diff --git a/sc/source/ui/inc/tpview.hxx b/sc/source/ui/inc/tpview.hxx index 53fba0f7b7c0..2b99c09d6637 100644 --- a/sc/source/ui/inc/tpview.hxx +++ b/sc/source/ui/inc/tpview.hxx @@ -105,6 +105,7 @@ class ScTpLayoutOptions : public SfxTabPage CheckBox* m_pMarkHdrCB; CheckBox* m_pTextFmtCB; CheckBox* m_pReplWarnCB; + CheckBox* m_pLegacyCellSelectionCB; SvxStringArray aUnitArr; diff --git a/sc/source/ui/optdlg/tpview.cxx b/sc/source/ui/optdlg/tpview.cxx index 2b6741e99e5b..e6486f9bf5d0 100644 --- a/sc/source/ui/optdlg/tpview.cxx +++ b/sc/source/ui/optdlg/tpview.cxx @@ -381,6 +381,7 @@ ScTpLayoutOptions::ScTpLayoutOptions( Window* pParent, get( m_pMarkHdrCB, "markhdrcb"); get( m_pTextFmtCB, "textfmtcb"); get( m_pReplWarnCB, "replwarncb"); + get( m_pLegacyCellSelectionCB, "legacy_cell_selection_cb"); SetExchangeSupport(); @@ -520,6 +521,12 @@ sal_Bool ScTpLayoutOptions::FillItemSet( SfxItemSet& rCoreSet ) bRet = sal_True; } + if( m_pLegacyCellSelectionCB->GetSavedValue() != m_pLegacyCellSelectionCB->IsChecked() ) + { + rCoreSet.Put( SfxBoolItem( SID_SC_INPUT_LEGACY_CELL_SELECTION, m_pLegacyCellSelectionCB->IsChecked() ) ); + bRet = sal_True; + } + return bRet; } @@ -599,6 +606,10 @@ void ScTpLayoutOptions::Reset( const SfxItemSet& rCoreSet ) if( SFX_ITEM_SET == rCoreSet.GetItemState( SID_SC_INPUT_REPLCELLSWARN, false, &pItem ) ) m_pReplWarnCB->Check( ( (const SfxBoolItem*)pItem)->GetValue() ); + if( SFX_ITEM_SET == rCoreSet.GetItemState( SID_SC_INPUT_LEGACY_CELL_SELECTION, false, &pItem ) ) + m_pLegacyCellSelectionCB->Check( ( (const SfxBoolItem*)pItem)->GetValue() ); + + m_pAlignCB ->SaveValue(); m_pAlignLB ->SaveValue(); m_pEditModeCB ->SaveValue(); @@ -608,6 +619,9 @@ void ScTpLayoutOptions::Reset( const SfxItemSet& rCoreSet ) m_pMarkHdrCB ->SaveValue(); m_pTextFmtCB ->SaveValue(); m_pReplWarnCB ->SaveValue(); + + m_pLegacyCellSelectionCB->SaveValue(); + AlignHdl(m_pAlignCB); m_pAlwaysRB->SaveValue(); diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx index 888e27c4cef6..4566805ed4b2 100644 --- a/sc/source/ui/view/tabview2.cxx +++ b/sc/source/ui/view/tabview2.cxx @@ -45,6 +45,7 @@ #include "scmod.hxx" #include "tabprotection.hxx" #include "markdata.hxx" +#include "inputopt.hxx" namespace { @@ -610,6 +611,7 @@ void ScTabView::GetAreaMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, ScFollowMode { SCCOL nNewX = -1; SCROW nNewY = -1; + // current cursor position. SCCOL nCurX = aViewData.GetCurX(); SCROW nCurY = aViewData.GetCurY(); @@ -637,20 +639,24 @@ void ScTabView::GetAreaMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, ScFollowMode SCTAB nTab = aViewData.GetTabNo(); // FindAreaPos kennt nur -1 oder 1 als Richtung + ScModule* pScModule = SC_MOD(); + bool bLegacyCellSelection = pScModule->GetInputOptions().GetLegacyCellSelection(); + SCCOL nVirtualX = bLegacyCellSelection ? nNewX : nCurX; + SCROW nVirtualY = bLegacyCellSelection ? nNewY : nCurY; SCsCOLROW i; if ( nMovX > 0 ) for ( i=0; i<nMovX; i++ ) - pDoc->FindAreaPos( nNewX, nCurY, nTab, SC_MOVE_RIGHT ); + pDoc->FindAreaPos( nNewX, nVirtualY, nTab, SC_MOVE_RIGHT ); if ( nMovX < 0 ) for ( i=0; i<-nMovX; i++ ) - pDoc->FindAreaPos( nNewX, nCurY, nTab, SC_MOVE_LEFT ); + pDoc->FindAreaPos( nNewX, nVirtualY, nTab, SC_MOVE_LEFT ); if ( nMovY > 0 ) for ( i=0; i<nMovY; i++ ) - pDoc->FindAreaPos( nCurX, nNewY, nTab, SC_MOVE_DOWN ); + pDoc->FindAreaPos( nVirtualX, nNewY, nTab, SC_MOVE_DOWN ); if ( nMovY < 0 ) for ( i=0; i<-nMovY; i++ ) - pDoc->FindAreaPos( nCurX, nNewY, nTab, SC_MOVE_UP ); + pDoc->FindAreaPos( nVirtualX, nNewY, nTab, SC_MOVE_UP ); if (eMode==SC_FOLLOW_JUMP) // unten/rechts nicht zuviel grau anzeigen { diff --git a/sc/uiconfig/scalc/ui/scgeneralpage.ui b/sc/uiconfig/scalc/ui/scgeneralpage.ui index 09e999a49285..675d6d9f282b 100644 --- a/sc/uiconfig/scalc/ui/scgeneralpage.ui +++ b/sc/uiconfig/scalc/ui/scgeneralpage.ui @@ -416,6 +416,26 @@ </packing> </child> <child> + <object class="GtkCheckButton" id="legacy_cell_selection_cb"> + <property name="label" translatable="yes">Use legacy cursor movement behavior when selecting</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">7</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <placeholder/> + </child> + <child> <placeholder/> </child> <child> |