tdf#101830 sw: highlight empty 'invisible' input fields
Change-Id: Ibcf4f7ce88c7bf364510c522e224028aa4737790
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96717
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
diff --git a/sw/source/core/text/portxt.cxx b/sw/source/core/text/portxt.cxx
index ea16142..84bbee8 100644
--- a/sw/source/core/text/portxt.cxx
+++ b/sw/source/core/text/portxt.cxx
@@ -37,6 +37,7 @@
#include <pam.hxx>
#include <doc.hxx>
#include <xmloff/odffields.hxx>
#include <viewopt.hxx>
using namespace ::sw::mark;
using namespace ::com::sun::star;
@@ -689,6 +690,28 @@
SwTextSlot aPaintText( &rInf, this, true, true, OUString() );
SwTextPortion::Paint( rInf );
}
else
{
// highlight empty input field, elsewhere they are completely invisible for the user
SwRect aIntersect;
rInf.CalcRect(*this, &aIntersect);
const sal_uInt16 aAreaWidth = rInf.GetTextSize(OUString(' ')).Width();
aIntersect.Left(aIntersect.Left() - aAreaWidth/2);
aIntersect.Width(aAreaWidth);
if (aIntersect.HasArea()
&& rInf.OnWin()
&& SwViewOption::IsFieldShadings()
&& !rInf.GetOpt().IsPagePreview())
{
OutputDevice* pOut = const_cast<OutputDevice*>(rInf.GetOut());
pOut->Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
pOut->SetFillColor(SwViewOption::GetFieldShadingsColor());
pOut->SetLineColor();
pOut->DrawRect(aIntersect.SVRect());
pOut->Pop();
}
}
}
bool SwTextInputFieldPortion::GetExpText( const SwTextSizeInfo &rInf, OUString &rText ) const