summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorPaul Trojahn <paul.trojahn@gmail.com>2018-10-27 14:52:42 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2018-11-02 06:22:33 +0100
commit68af083f9a8e3904aa3c341da5c598212da68f6f (patch)
treec5d749d23913411650e349f68985c3fa1907b6c3 /sc
parent7d571ce7956d843c4f7ef442abc736b5b0c74c08 (diff)
tdf#115317 Fix empty url representation
ScTabEditEngine doesn't override CalcFieldValue, so the function in EditEngine returns a single space as representation. By inheriting from ScFieldEditEngine the representation is calculated correctly. Change-Id: I6f3be8bd2c3936acf9f3d082c25c080bd3cbee76 Reviewed-on: https://gerrit.libreoffice.org/62428 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/editutil.hxx42
-rw-r--r--sc/source/core/tool/editutil.cxx6
-rw-r--r--sc/source/filter/rtf/eeimpars.cxx2
-rw-r--r--sc/source/ui/app/transobj.cxx2
-rw-r--r--sc/source/ui/view/viewfun2.cxx2
-rw-r--r--sc/source/ui/view/viewfun4.cxx2
-rw-r--r--sc/source/ui/view/viewfunc.cxx2
7 files changed, 29 insertions, 29 deletions
diff --git a/sc/inc/editutil.hxx b/sc/inc/editutil.hxx
index 8d4a8a9fc282..a6d96ef73c49 100644
--- a/sc/inc/editutil.hxx
+++ b/sc/inc/editutil.hxx
@@ -171,15 +171,33 @@ public:
void RepeatDefaults();
};
+// for field commands (or just fields?) in a table
+class SC_DLLPUBLIC ScFieldEditEngine : public ScEditEngineDefaulter
+{
+private:
+ ScDocument* const mpDoc;
+ bool bExecuteURL;
+
+public:
+ ScFieldEditEngine(
+ ScDocument* pDoc, SfxItemPool* pEnginePool, SfxItemPool* pTextObjectPool = nullptr,
+ bool bDeleteEnginePool = false);
+
+ void SetExecuteURL(bool bSet) { bExecuteURL = bSet; }
+
+ virtual void FieldClicked( const SvxFieldItem& rField, sal_Int32, sal_Int32 ) override;
+ virtual OUString CalcFieldValue( const SvxFieldItem& rField, sal_Int32 nPara, sal_Int32 nPos, boost::optional<Color>& rTxtColor, boost::optional<Color>& rFldColor ) override;
+};
+
// 1/100 mm
-class SC_DLLPUBLIC ScTabEditEngine : public ScEditEngineDefaulter
+class SC_DLLPUBLIC ScTabEditEngine : public ScFieldEditEngine
{
private:
void Init(const ScPatternAttr& rPattern);
public:
ScTabEditEngine( ScDocument* pDoc ); // Default
- ScTabEditEngine( const ScPatternAttr& rPattern,
- SfxItemPool* pEnginePool,
+ ScTabEditEngine(const ScPatternAttr& rPattern,
+ SfxItemPool *pEngineItemPool, ScDocument *pDoc,
SfxItemPool* pTextObjectPool = nullptr );
};
@@ -197,24 +215,6 @@ struct ScHeaderFieldData
ScHeaderFieldData();
};
-// for field commands (or just fields?) in a table
-class SC_DLLPUBLIC ScFieldEditEngine : public ScEditEngineDefaulter
-{
-private:
- ScDocument* const mpDoc;
- bool bExecuteURL;
-
-public:
- ScFieldEditEngine(
- ScDocument* pDoc, SfxItemPool* pEnginePool, SfxItemPool* pTextObjectPool = nullptr,
- bool bDeleteEnginePool = false);
-
- void SetExecuteURL(bool bSet) { bExecuteURL = bSet; }
-
- virtual void FieldClicked( const SvxFieldItem& rField, sal_Int32, sal_Int32 ) override;
- virtual OUString CalcFieldValue( const SvxFieldItem& rField, sal_Int32 nPara, sal_Int32 nPos, boost::optional<Color>& rTxtColor, boost::optional<Color>& rFldColor ) override;
-};
-
// for headers/footers with fields
class SC_DLLPUBLIC ScHeaderEditEngine : public ScEditEngineDefaulter
{
diff --git a/sc/source/core/tool/editutil.cxx b/sc/source/core/tool/editutil.cxx
index 78c46e5f76cc..7b2b7c864d2f 100644
--- a/sc/source/core/tool/editutil.cxx
+++ b/sc/source/core/tool/editutil.cxx
@@ -694,15 +694,15 @@ void ScEditEngineDefaulter::RemoveParaAttribs()
}
ScTabEditEngine::ScTabEditEngine( ScDocument* pDoc )
- : ScEditEngineDefaulter( pDoc->GetEnginePool() )
+ : ScFieldEditEngine( pDoc, pDoc->GetEnginePool() )
{
SetEditTextObjectPool( pDoc->GetEditPool() );
Init(pDoc->GetPool()->GetDefaultItem(ATTR_PATTERN));
}
ScTabEditEngine::ScTabEditEngine( const ScPatternAttr& rPattern,
- SfxItemPool* pEnginePoolP, SfxItemPool* pTextObjectPool )
- : ScEditEngineDefaulter( pEnginePoolP )
+ SfxItemPool* pEngineItemPool, ScDocument* pDoc, SfxItemPool* pTextObjectPool )
+ : ScFieldEditEngine( pDoc, pEngineItemPool, pTextObjectPool )
{
if ( pTextObjectPool )
SetEditTextObjectPool( pTextObjectPool );
diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx
index da23becae30c..0cfc8456cd97 100644
--- a/sc/source/filter/rtf/eeimpars.cxx
+++ b/sc/source/filter/rtf/eeimpars.cxx
@@ -68,7 +68,7 @@ ScEEImport::ScEEImport( ScDocument* pDocP, const ScRange& rRange ) :
{
const ScPatternAttr* pPattern = mpDoc->GetPattern(
maRange.aStart.Col(), maRange.aStart.Row(), maRange.aStart.Tab() );
- mpEngine.reset( new ScTabEditEngine(*pPattern, mpDoc->GetEditPool(), mpDoc->GetEditPool()) );
+ mpEngine.reset( new ScTabEditEngine(*pPattern, mpDoc->GetEditPool(), mpDoc, mpDoc->GetEditPool()) );
mpEngine->SetUpdateMode( false );
mpEngine->EnableUndo( false );
}
diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx
index 483832bac4a3..c7807cef178f 100644
--- a/sc/source/ui/app/transobj.cxx
+++ b/sc/source/ui/app/transobj.cxx
@@ -307,7 +307,7 @@ bool ScTransferObj::GetData( const datatransfer::DataFlavor& rFlavor, const OUSt
ScAddress aPos(nCol, nRow, nTab);
const ScPatternAttr* pPattern = m_pDoc->GetPattern( nCol, nRow, nTab );
- ScTabEditEngine aEngine( *pPattern, m_pDoc->GetEditPool() );
+ ScTabEditEngine aEngine( *pPattern, m_pDoc->GetEditPool(), m_pDoc.get() );
ScRefCellValue aCell(*m_pDoc, aPos);
if (aCell.meType == CELLTYPE_EDIT)
{
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
index 169198177664..85edda400cf5 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -808,7 +808,7 @@ void ScViewFunc::EnterBlock( const OUString& rString, const EditTextObject* pDat
if ( pData )
{
const ScPatternAttr* pOldPattern = pDoc->GetPattern( nCol, nRow, nTab );
- ScTabEditEngine aEngine( *pOldPattern, pDoc->GetEnginePool() );
+ ScTabEditEngine aEngine( *pOldPattern, pDoc->GetEnginePool(), pDoc );
aEngine.SetText(*pData);
ScEditAttrTester aTester( &aEngine );
diff --git a/sc/source/ui/view/viewfun4.cxx b/sc/source/ui/view/viewfun4.cxx
index 3f686f2edbf4..4f29020e36d3 100644
--- a/sc/source/ui/view/viewfun4.cxx
+++ b/sc/source/ui/view/viewfun4.cxx
@@ -90,7 +90,7 @@ void ScViewFunc::PasteRTF( SCCOL nStartCol, SCROW nStartRow,
const bool bRecord (rDoc.IsUndoEnabled());
const ScPatternAttr* pPattern = rDoc.GetPattern( nStartCol, nStartRow, nTab );
- std::unique_ptr<ScTabEditEngine> pEngine(new ScTabEditEngine( *pPattern, rDoc.GetEnginePool() ));
+ std::unique_ptr<ScTabEditEngine> pEngine(new ScTabEditEngine( *pPattern, rDoc.GetEnginePool(), &rDoc ));
pEngine->EnableUndo( false );
vcl::Window* pActWin = GetActiveWin();
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index 7e5c54aecd46..29af7b0c42e5 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -653,7 +653,7 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab,
OUString aString;
const ScPatternAttr* pOldPattern = rDoc.GetPattern( nCol, nRow, nTab );
- ScTabEditEngine aEngine( *pOldPattern, rDoc.GetEnginePool() );
+ ScTabEditEngine aEngine( *pOldPattern, rDoc.GetEnginePool(), &rDoc );
aEngine.SetText(rData);
if (bTestSimple) // test, if simple string without attribute