summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2018-10-09 17:17:29 +0200
committerEike Rathke <erack@redhat.com>2018-10-09 18:37:27 +0200
commit1b8886ad7744fc48e09bb7379d8ad8e75bb3084d (patch)
tree622184a8c2f797afbab8368cc3eb7e2ff76214e2
parent828d91ecde50b3a5e6c02ef1e5061e6e655a1399 (diff)
Resolves: tdf#66545 display URL fields non-shaded in Calc
This disables shading of URL and email address fields when displaying cell content and still preserves shading in the Input Line and when editing cell content to indicate that it is actually a field content value. Change-Id: I8737045168646b6cd446bd357713ec9ac4631b31 Reviewed-on: https://gerrit.libreoffice.org/61594 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins
-rw-r--r--editeng/source/editeng/editstt2.hxx7
-rw-r--r--editeng/source/editeng/impedit2.cxx15
-rw-r--r--editeng/source/editeng/impedit3.cxx7
-rw-r--r--include/editeng/editstat.hxx4
-rw-r--r--sc/source/ui/view/output2.cxx2
-rw-r--r--sc/source/ui/view/viewdata.cxx3
6 files changed, 32 insertions, 6 deletions
diff --git a/editeng/source/editeng/editstt2.hxx b/editeng/source/editeng/editstt2.hxx
index 15a8a0ed239e..fe51f3b6168d 100644
--- a/editeng/source/editeng/editstt2.hxx
+++ b/editeng/source/editeng/editstt2.hxx
@@ -81,8 +81,11 @@ public:
bool AutoPageHeight() const
{ return bool( nControlBits & EEControlBits::AUTOPAGESIZEY ); }
- bool MarkFields() const
- { return bool( nControlBits & EEControlBits::MARKFIELDS ); }
+ bool MarkNonUrlFields() const
+ { return bool( nControlBits & EEControlBits::MARKNONURLFIELDS ); }
+
+ bool MarkUrlFields() const
+ { return bool( nControlBits & EEControlBits::MARKURLFIELDS ); }
bool DoRestoreFont() const
{ return bool( nControlBits & EEControlBits::RESTOREFONT ); }
diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx
index c15f0fde7cbf..025182a07bb8 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -2973,8 +2973,21 @@ bool ImpEditEngine::UpdateFields()
std::unique_ptr<EditCharAttribField> pCurrent(new EditCharAttribField(rField));
rField.Reset();
- if ( aStatus.MarkFields() )
+ if (!aStatus.MarkNonUrlFields() && !aStatus.MarkUrlFields())
+ ; // nothing marked
+ else if (aStatus.MarkNonUrlFields() && aStatus.MarkUrlFields())
rField.GetFieldColor() = GetColorConfig().GetColorValue( svtools::WRITERFIELDSHADINGS ).nColor;
+ else
+ {
+ bool bURL = false;
+ if (const SvxFieldItem* pFieldItem = dynamic_cast<const SvxFieldItem*>(rField.GetItem()))
+ {
+ if (const SvxFieldData* pFieldData = pFieldItem->GetField())
+ bURL = (dynamic_cast<const SvxURLField* >(pFieldData) != nullptr);
+ }
+ if ((bURL && aStatus.MarkUrlFields()) || (!bURL && aStatus.MarkNonUrlFields()))
+ rField.GetFieldColor() = GetColorConfig().GetColorValue( svtools::WRITERFIELDSHADINGS ).nColor;
+ }
const OUString aFldValue =
GetEditEnginePtr()->CalcFieldValue(
diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index afadc820687b..631893e8326c 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -3182,7 +3182,12 @@ void ImpEditEngine::Paint( OutputDevice* pOutDev, tools::Rectangle aClipRect, Po
pDXArray = pLine->GetCharPosArray().data() + (nIndex - pLine->GetStart());
// Paint control characters (#i55716#)
- if ( aStatus.MarkFields() )
+ /* XXX: Given that there's special handling
+ * only for some specific characters
+ * (U+200B ZERO WIDTH SPACE and U+2060 WORD
+ * JOINER) it is assumed to be not relevant
+ * for MarkUrlFields(). */
+ if ( aStatus.MarkNonUrlFields() )
{
sal_Int32 nTmpIdx;
const sal_Int32 nTmpEnd = nTextStart + rTextPortion.GetLen();
diff --git a/include/editeng/editstat.hxx b/include/editeng/editstat.hxx
index a88b00d15c7b..4781e906558f 100644
--- a/include/editeng/editstat.hxx
+++ b/include/editeng/editstat.hxx
@@ -42,7 +42,9 @@ enum class EEControlBits
ALLOWBIGOBJS = 0x00000800, // Portion info in text object
ONLINESPELLING = 0x00001000, // During the edit Spelling
STRETCHING = 0x00002000, // Stretch mode
- MARKFIELDS = 0x00004000, // Mark Fields with color
+ MARKNONURLFIELDS = 0x00004000, // Mark fields other than URL with color
+ MARKURLFIELDS = 0x00008000, // Mark URL fields with color
+ MARKFIELDS = (MARKNONURLFIELDS | MARKURLFIELDS),
RESTOREFONT = 0x00010000, // Restore Font in OutDev
RTFSTYLESHEETS = 0x00020000, // Use Stylesheets when imported
AUTOCORRECT = 0x00080000, // AutoCorrect
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index dbe5bb107e94..40c66bb6de99 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -2128,6 +2128,8 @@ ScFieldEditEngine* ScOutputData::CreateOutputEditEngine()
nCtrl |= EEControlBits::ONLINESPELLING;
if ( eType == OUTTYPE_PRINTER )
nCtrl &= ~EEControlBits::MARKFIELDS;
+ else
+ nCtrl &= ~EEControlBits::MARKURLFIELDS; // URLs not shaded for output
if ( eType == OUTTYPE_WINDOW && mpRefDevice == pFmtDevice )
nCtrl &= ~EEControlBits::FORMAT100; // use the actual MapMode
pEngine->SetControlWord( nCtrl );
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 019480b9acb1..acb270806588 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -3597,7 +3597,8 @@ void ScViewData::UpdateOutlinerFlags( Outliner& rOutl ) const
bool bOnlineSpell = pLocalDoc->GetDocOptions().IsAutoSpell();
EEControlBits nCntrl = rOutl.GetControlWord();
- nCntrl |= EEControlBits::MARKFIELDS;
+ nCntrl |= EEControlBits::MARKNONURLFIELDS;
+ nCntrl &= ~EEControlBits::MARKURLFIELDS; // URLs not shaded for output
nCntrl |= EEControlBits::AUTOCORRECT;
if( bOnlineSpell )
nCntrl |= EEControlBits::ONLINESPELLING;